diff --git a/rootdir/etc/ld.config.legacy.txt b/rootdir/etc/ld.config.legacy.txt index a4168256d..a854e93ce 100644 --- a/rootdir/etc/ld.config.legacy.txt +++ b/rootdir/etc/ld.config.legacy.txt @@ -38,6 +38,12 @@ namespace.default.asan.search.paths += /odm/${LIB} additional.namespaces = runtime,conscrypt,media,resolv # Keep in sync with ld.config.txt in the com.android.runtime APEX. +# If a shared library or an executable requests a shared library that +# cannot be loaded into the default namespace, the dynamic linker tries +# to load the shared library from the runtime namespace.And then, if the +# shared library cannot be loaded from the runtime namespace either, the +# dynamic linker tries to load the shared library from the resolv namespace. +# Finally, if all attempts fail, the dynamic linker returns an error. 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 @@ -49,6 +55,9 @@ namespace.default.link.runtime.shared_libs += libnativebridge.so namespace.default.link.runtime.shared_libs += libnativehelper.so namespace.default.link.runtime.shared_libs += libnativeloader.so +# When libnetd_resolv.so can't be found in the default namespace, search for it +# in the resolv namespace. Don't allow any other libraries from the resolv namespace +# to be loaded in the default namespace. namespace.default.link.resolv.shared_libs = libnetd_resolv.so ############################################################################### diff --git a/rootdir/etc/ld.config.txt b/rootdir/etc/ld.config.txt index d0e84df06..bc8568eaa 100644 --- a/rootdir/etc/ld.config.txt +++ b/rootdir/etc/ld.config.txt @@ -106,6 +106,12 @@ namespace.default.asan.permitted.paths += /%PRODUCT_SERVICES%/priv-app namespace.default.asan.permitted.paths += /mnt/expand # Keep in sync with ld.config.txt in the com.android.runtime APEX. +# If a shared library or an executable requests a shared library that +# cannot be loaded into the default namespace, the dynamic linker tries +# to load the shared library from the runtime namespace.And then, if the +# shared library cannot be loaded from the runtime namespace either, the +# dynamic linker tries to load the shared library from the resolv namespace. +# Finally, if all attempts fail, the dynamic linker returns an error. namespace.default.links = runtime,resolv # Visible because some libraries are dlopen'ed, e.g. libopenjdk is dlopen'ed by # libart. @@ -116,6 +122,9 @@ namespace.default.link.runtime.shared_libs += libnativebridge.so namespace.default.link.runtime.shared_libs += libnativehelper.so namespace.default.link.runtime.shared_libs += libnativeloader.so +# When libnetd_resolv.so can't be found in the default namespace, search for it +# in the resolv namespace. Don't allow any other libraries from the resolv namespace +# to be loaded in the default namespace. namespace.default.link.resolv.shared_libs = libnetd_resolv.so ############################################################################### diff --git a/rootdir/etc/ld.config.vndk_lite.txt b/rootdir/etc/ld.config.vndk_lite.txt index c97baeb3c..ae486eab5 100644 --- a/rootdir/etc/ld.config.vndk_lite.txt +++ b/rootdir/etc/ld.config.vndk_lite.txt @@ -57,6 +57,12 @@ namespace.default.asan.search.paths += /%PRODUCT_SERVICES%/${LIB} # Keep in sync with the platform namespace in the com.android.runtime APEX # ld.config.txt. +# If a shared library or an executable requests a shared library that +# cannot be loaded into the default namespace, the dynamic linker tries +# to load the shared library from the runtime namespace.And then, if the +# shared library cannot be loaded from the runtime namespace either, the +# dynamic linker tries to load the shared library from the resolv namespace. +# Finally, if all attempts fail, the dynamic linker returns an error. namespace.default.links = runtime,resolv # Visible because some libraries are dlopen'ed, e.g. libopenjdk is dlopen'ed by # libart. @@ -67,6 +73,9 @@ namespace.default.link.runtime.shared_libs += libnativebridge.so namespace.default.link.runtime.shared_libs += libnativehelper.so namespace.default.link.runtime.shared_libs += libnativeloader.so +# When libnetd_resolv.so can't be found in the default namespace, search for it +# in the resolv namespace. Don't allow any other libraries from the resolv namespace +# to be loaded in the default namespace. namespace.default.link.resolv.shared_libs = libnetd_resolv.so ###############################################################################