Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit aa87fd5f authored by chenbruce's avatar chenbruce
Browse files

Linker namespace configuration for the Resolv APEX.

Support netd to load resolv Apex.
Switch namespaces when switching library paths between
/system and the APEX, so that internal library dependencies in both
locations are loaded from their own directory.

Bug: 119527674
Test: make; flash; lsof -p $(pidof netd)
Test: 1. manual test datacall/wifi work
      2. manual test tethering work
      3. system/netd/tests/runtests.sh
Change-Id: I3f69e85f2f529636f0ef29a2d9d71ad582c46dfb
parent 49047d71
Loading
Loading
Loading
Loading
+21 −3
Original line number Diff line number Diff line
@@ -35,11 +35,11 @@ namespace.default.asan.search.paths += /odm/${LIB}
# APEX related namespaces.
###############################################################################

additional.namespaces = runtime,conscrypt,media
additional.namespaces = runtime,conscrypt,media,resolv

# Keep in sync with ld.config.txt in the com.android.runtime APEX.
namespace.default.links = runtime
namespace.default.asan.links = runtime
namespace.default.links = runtime,resolv
namespace.default.asan.links = runtime,resolv
# Visible because some libraries are dlopen'ed, e.g. libopenjdk is dlopen'ed by
# libart.
namespace.default.visible = true
@@ -49,6 +49,8 @@ namespace.default.link.runtime.shared_libs += libnativebridge.so
namespace.default.link.runtime.shared_libs += libnativehelper.so
namespace.default.link.runtime.shared_libs += libnativeloader.so

namespace.default.link.resolv.shared_libs = libnetd_resolv.so

###############################################################################
# "runtime" APEX namespace
#
@@ -98,6 +100,22 @@ namespace.conscrypt.link.default.shared_libs = libc.so
namespace.conscrypt.link.default.shared_libs += libm.so
namespace.conscrypt.link.default.shared_libs += libdl.so

###############################################################################
# "resolv" APEX namespace
#
# This namespace is for libraries within the resolv APEX.
###############################################################################
namespace.resolv.isolated = true
namespace.resolv.visible = true

namespace.resolv.search.paths = /apex/com.android.resolv/${LIB}
namespace.resolv.asan.search.paths = /apex/com.android.resolv/${LIB}
namespace.resolv.links = default
namespace.resolv.link.default.shared_libs  = libc.so
namespace.resolv.link.default.shared_libs += libm.so
namespace.resolv.link.default.shared_libs += libdl.so
namespace.resolv.link.default.shared_libs += libbinder_ndk.so

###############################################################################
# Namespace config for binaries under /postinstall.
# Only one default namespace is defined and it has no directories other than
+20 −4
Original line number Diff line number Diff line
@@ -28,7 +28,7 @@ dir.system = /data/benchmarktest64
dir.postinstall = /postinstall

[system]
additional.namespaces = runtime,conscrypt,media,sphal,vndk,rs
additional.namespaces = runtime,conscrypt,media,resolv,sphal,vndk,rs

###############################################################################
# "default" namespace
@@ -73,7 +73,6 @@ namespace.default.permitted.paths += /%PRODUCT_SERVICES%/app
namespace.default.permitted.paths += /%PRODUCT_SERVICES%/priv-app
namespace.default.permitted.paths += /data
namespace.default.permitted.paths += /mnt/expand
namespace.default.permitted.paths += /apex/com.android.resolv/${LIB}

namespace.default.asan.search.paths  = /data/asan/system/${LIB}
namespace.default.asan.search.paths +=           /system/${LIB}
@@ -105,10 +104,9 @@ namespace.default.asan.permitted.paths += /%PRODUCT_SERVICES%/framework
namespace.default.asan.permitted.paths += /%PRODUCT_SERVICES%/app
namespace.default.asan.permitted.paths += /%PRODUCT_SERVICES%/priv-app
namespace.default.asan.permitted.paths += /mnt/expand
namespace.default.asan.permitted.paths += /apex/com.android.resolv/${LIB}

# Keep in sync with ld.config.txt in the com.android.runtime APEX.
namespace.default.links = runtime
namespace.default.links = runtime,resolv
# Visible because some libraries are dlopen'ed, e.g. libopenjdk is dlopen'ed by
# libart.
namespace.default.visible = true
@@ -118,6 +116,8 @@ namespace.default.link.runtime.shared_libs += libnativebridge.so
namespace.default.link.runtime.shared_libs += libnativehelper.so
namespace.default.link.runtime.shared_libs += libnativeloader.so

namespace.default.link.resolv.shared_libs = libnetd_resolv.so

###############################################################################
# "runtime" APEX namespace
#
@@ -167,6 +167,22 @@ namespace.conscrypt.link.default.shared_libs = libc.so
namespace.conscrypt.link.default.shared_libs += libm.so
namespace.conscrypt.link.default.shared_libs += libdl.so

###############################################################################
# "resolv" APEX namespace
#
# This namespace is for libraries within the resolv APEX.
###############################################################################
namespace.resolv.isolated = true
namespace.resolv.visible = true

namespace.resolv.search.paths = /apex/com.android.resolv/${LIB}
namespace.resolv.asan.search.paths = /apex/com.android.resolv/${LIB}
namespace.resolv.links = default
namespace.resolv.link.default.shared_libs  = libc.so
namespace.resolv.link.default.shared_libs += libm.so
namespace.resolv.link.default.shared_libs += libdl.so
namespace.resolv.link.default.shared_libs += libbinder_ndk.so

###############################################################################
# "sphal" namespace
#
+20 −2
Original line number Diff line number Diff line
@@ -28,7 +28,7 @@ dir.system = /data/benchmarktest64
dir.postinstall = /postinstall

[system]
additional.namespaces = runtime,conscrypt,media,sphal,vndk,rs
additional.namespaces = runtime,conscrypt,media,resolv,sphal,vndk,rs

###############################################################################
# "default" namespace
@@ -57,7 +57,7 @@ namespace.default.asan.search.paths += /%PRODUCT_SERVICES%/${LIB}

# Keep in sync with the platform namespace in the com.android.runtime APEX
# ld.config.txt.
namespace.default.links = runtime
namespace.default.links = runtime,resolv
# Visible because some libraries are dlopen'ed, e.g. libopenjdk is dlopen'ed by
# libart.
namespace.default.visible = true
@@ -66,6 +66,8 @@ namespace.default.link.runtime.shared_libs += libdexfile_external.so
namespace.default.link.runtime.shared_libs += libnativehelper.so
namespace.default.link.runtime.shared_libs += libnativeloader.so

namespace.default.link.resolv.shared_libs = libnetd_resolv.so

###############################################################################
# "runtime" APEX namespace
#
@@ -116,6 +118,22 @@ namespace.conscrypt.link.default.shared_libs = libc.so
namespace.conscrypt.link.default.shared_libs += libm.so
namespace.conscrypt.link.default.shared_libs += libdl.so

###############################################################################
# "resolv" APEX namespace
#
# This namespace is for libraries within the resolv APEX.
###############################################################################
namespace.resolv.isolated = true
namespace.resolv.visible = true

namespace.resolv.search.paths = /apex/com.android.resolv/${LIB}
namespace.resolv.asan.search.paths = /apex/com.android.resolv/${LIB}
namespace.resolv.links = default
namespace.resolv.link.default.shared_libs  = libc.so
namespace.resolv.link.default.shared_libs += libm.so
namespace.resolv.link.default.shared_libs += libdl.so
namespace.resolv.link.default.shared_libs += libbinder_ndk.so

###############################################################################
# "sphal" namespace
#