Loading libnativeloader/library_namespaces.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ namespace { constexpr const char* kVendorNamespaceName = "sphal"; constexpr const char* kVndkNamespaceName = "vndk"; constexpr const char* kRuntimeNamespaceName = "runtime"; constexpr const char* kNeuralNetworksNamespaceName = "neuralnetworks"; // classloader-namespace is a linker namespace that is created for the loaded // app. To be specific, it is created for the app classloader. When Loading Loading @@ -238,6 +239,14 @@ NativeLoaderNamespace* LibraryNamespaces::Create(JNIEnv* env, uint32_t target_sd } } // Give access to NNAPI libraries (apex-updated LLNDK library). auto nnapi_ns = NativeLoaderNamespace::GetExportedNamespace(kNeuralNetworksNamespaceName, is_bridged); if (!app_ns.Link(nnapi_ns, neuralnetworks_public_libraries())) { *error_msg = app_ns.GetError(); return nullptr; } // Give access to VNDK-SP libraries from the 'vndk' namespace. if (unbundled_vendor_or_product_app && !vndksp_libraries().empty()) { auto vndk_ns = NativeLoaderNamespace::GetExportedNamespace(kVndkNamespaceName, is_bridged); Loading libnativeloader/public_libraries.cpp +17 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,8 @@ const std::vector<const std::string> kRuntimePublicLibraries = { constexpr const char* kRuntimeApexLibPath = "/apex/com.android.runtime/" LIB; constexpr const char* kNeuralNetworksApexPublicLibrary = "libneuralnetworks.so"; // TODO(b/130388701): do we need this? std::string root_dir() { static const char* android_root_env = getenv("ANDROID_ROOT"); Loading Loading @@ -219,6 +221,12 @@ static std::string InitDefaultPublicLibraries() { sonames.erase(it); } } // Remove the public libs in the nnapi namespace. auto it = std::find(sonames.begin(), sonames.end(), kNeuralNetworksApexPublicLibrary); if (it != sonames.end()) { sonames.erase(it); } return android::base::Join(sonames, ':'); } Loading Loading @@ -267,6 +275,10 @@ static std::string InitVndkspLibraries() { return android::base::Join(sonames, ':'); } static std::string InitNeuralNetworksPublicLibraries() { return kNeuralNetworksApexPublicLibrary; } } // namespace const std::string& default_public_libraries() { Loading @@ -289,6 +301,11 @@ const std::string& extended_public_libraries() { return list; } const std::string& neuralnetworks_public_libraries() { static std::string list = InitNeuralNetworksPublicLibraries(); return list; } const std::string& llndk_libraries() { static std::string list = InitLlndkLibraries(); return list; Loading libnativeloader/public_libraries.h +1 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ const std::string& default_public_libraries(); const std::string& runtime_public_libraries(); const std::string& vendor_public_libraries(); const std::string& extended_public_libraries(); const std::string& neuralnetworks_public_libraries(); const std::string& llndk_libraries(); const std::string& vndksp_libraries(); Loading rootdir/etc/ld.config.legacy.txt +27 −3 Original line number Diff line number Diff line Loading @@ -42,7 +42,7 @@ namespace.default.asan.search.paths += /odm/${LIB} # APEX related namespaces. ############################################################################### additional.namespaces = runtime,conscrypt,media,resolv additional.namespaces = runtime,conscrypt,media,neuralnetworks,resolv # Keep in sync with the "platform" namespace in art/build/apex/ld.config.txt. # If a shared library or an executable requests a shared library that Loading @@ -51,8 +51,8 @@ additional.namespaces = runtime,conscrypt,media,resolv # 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 namespace.default.links = runtime,resolv,neuralnetworks namespace.default.asan.links = runtime,resolv,neuralnetworks namespace.default.link.runtime.shared_libs = libandroidicu.so namespace.default.link.runtime.shared_libs += libdexfile_external.so namespace.default.link.runtime.shared_libs += libdexfiled_external.so Loading @@ -71,6 +71,9 @@ namespace.default.link.runtime.shared_libs += libpac.so # to be loaded in the default namespace. namespace.default.link.resolv.shared_libs = libnetd_resolv.so # LLNDK library moved into apex namespace.default.link.neuralnetworks.shared_libs = libneuralnetworks.so ############################################################################### # "runtime" APEX namespace # Loading Loading @@ -158,6 +161,27 @@ namespace.resolv.link.default.shared_libs += libbinder_ndk.so namespace.resolv.link.default.shared_libs += liblog.so namespace.resolv.link.default.shared_libs += libvndksupport.so ############################################################################### # "neuralnetworks" APEX namespace # # This namespace is for libraries within the NNAPI APEX. ############################################################################### namespace.neuralnetworks.isolated = true namespace.neuralnetworks.visible = true namespace.neuralnetworks.search.paths = /apex/com.android.neuralnetworks/${LIB} namespace.neuralnetworks.asan.search.paths = /apex/com.android.neuralnetworks/${LIB} namespace.neuralnetworks.links = default namespace.neuralnetworks.link.default.shared_libs = libc.so namespace.neuralnetworks.link.default.shared_libs += libcgrouprc.so namespace.neuralnetworks.link.default.shared_libs += libdl.so namespace.neuralnetworks.link.default.shared_libs += liblog.so namespace.neuralnetworks.link.default.shared_libs += libm.so namespace.neuralnetworks.link.default.shared_libs += libnativewindow.so namespace.neuralnetworks.link.default.shared_libs += libsync.so namespace.neuralnetworks.link.default.shared_libs += libvndksupport.so ############################################################################### # Namespace config for binaries under /postinstall. # Only one default namespace is defined and it has no directories other than Loading rootdir/etc/ld.config.txt +100 −13 Original line number Diff line number Diff line Loading @@ -35,7 +35,7 @@ dir.postinstall = /postinstall dir.system = /data [system] additional.namespaces = runtime,conscrypt,media,resolv,sphal,vndk,rs additional.namespaces = runtime,conscrypt,media,neuralnetworks,resolv,sphal,vndk,rs ############################################################################### # "default" namespace Loading Loading @@ -132,7 +132,7 @@ namespace.default.asan.permitted.paths += /system/${LIB}/bootstrap # 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.links = runtime,resolv,neuralnetworks namespace.default.link.runtime.shared_libs = libandroidicu.so namespace.default.link.runtime.shared_libs += libdexfile_external.so namespace.default.link.runtime.shared_libs += libdexfiled_external.so Loading @@ -152,6 +152,9 @@ namespace.default.link.runtime.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% # to be loaded in the default namespace. namespace.default.link.resolv.shared_libs = libnetd_resolv.so # LLNDK library moved into apex namespace.default.link.neuralnetworks.shared_libs = libneuralnetworks.so ############################################################################### # "runtime" APEX namespace # Loading Loading @@ -185,13 +188,16 @@ namespace.media.asan.search.paths = /apex/com.android.media/${LIB} namespace.media.permitted.paths = /apex/com.android.media/${LIB}/extractors namespace.media.links = default namespace.media.links = default,neuralnetworks namespace.media.link.default.shared_libs = %LLNDK_LIBRARIES% namespace.media.link.default.shared_libs += libbinder_ndk.so namespace.media.link.default.shared_libs += libcgrouprc.so namespace.media.link.default.shared_libs += libmediametrics.so namespace.media.link.default.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% # LLNDK library moved into apex namespace.media.link.neuralnetworks.shared_libs = libneuralnetworks.so ############################################################################### # "conscrypt" APEX namespace # Loading Loading @@ -269,7 +275,7 @@ namespace.sphal.asan.permitted.paths += /vendor/${LIB} # libs listed here can be used. Order is important here as the namespaces are # tried in this order. rs should be before vndk because both are capable # of loading libRS_internal.so namespace.sphal.links = rs,default,vndk namespace.sphal.links = rs,default,vndk,neuralnetworks # Renderscript gets separate namespace namespace.sphal.link.rs.shared_libs = libRS_internal.so Loading @@ -279,6 +285,10 @@ namespace.sphal.link.default.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% namespace.sphal.link.vndk.shared_libs = %VNDK_SAMEPROCESS_LIBRARIES% # LLNDK library moved into apex namespace.sphal.link.neuralnetworks.shared_libs = libneuralnetworks.so ############################################################################### # "rs" namespace # Loading Loading @@ -318,7 +328,7 @@ namespace.rs.asan.permitted.paths += /data/asan/vendor/${LIB} namespace.rs.asan.permitted.paths += /vendor/${LIB} namespace.rs.asan.permitted.paths += /data namespace.rs.links = default,vndk namespace.rs.links = default,vndk,neuralnetworks namespace.rs.link.default.shared_libs = %LLNDK_LIBRARIES% namespace.rs.link.default.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% Loading @@ -328,6 +338,10 @@ namespace.rs.link.default.shared_libs += %PRIVATE_LLNDK_LIBRARIES% namespace.rs.link.vndk.shared_libs = %VNDK_SAMEPROCESS_LIBRARIES% # LLNDK library moved into apex namespace.rs.link.neuralnetworks.shared_libs = libneuralnetworks.so ############################################################################### # "vndk" namespace # Loading Loading @@ -373,7 +387,7 @@ namespace.vndk.asan.permitted.paths += /system/${LIB}/vndk-sp%VNDK_VER # The "vndk" namespace links to "default" namespace for LLNDK libs and links to # "sphal" namespace for vendor libs. The ordering matters. The "default" # namespace has higher priority than the "sphal" namespace. namespace.vndk.links = default,sphal,runtime namespace.vndk.links = default,sphal,runtime,neuralnetworks # When these NDK libs are required inside this namespace, then it is redirected # to the default namespace. This is possible since their ABI is stable across Loading @@ -386,6 +400,28 @@ namespace.vndk.link.runtime.shared_libs = %SANITIZER_RUNTIME_LIBRARIES% # Allow VNDK-SP extensions to use vendor libraries namespace.vndk.link.sphal.allow_all_shared_libs = true # LLNDK library moved into apex namespace.vndk.link.neuralnetworks.shared_libs = libneuralnetworks.so ############################################################################### # "neuralnetworks" APEX namespace # # This namespace is for libraries within the NNAPI APEX. ############################################################################### namespace.neuralnetworks.isolated = true namespace.neuralnetworks.visible = true namespace.neuralnetworks.search.paths = /apex/com.android.neuralnetworks/${LIB} namespace.neuralnetworks.asan.search.paths = /apex/com.android.neuralnetworks/${LIB} namespace.neuralnetworks.links = default namespace.neuralnetworks.link.default.shared_libs = libc.so namespace.neuralnetworks.link.default.shared_libs += libcgrouprc.so namespace.neuralnetworks.link.default.shared_libs += libdl.so namespace.neuralnetworks.link.default.shared_libs += liblog.so namespace.neuralnetworks.link.default.shared_libs += libm.so namespace.neuralnetworks.link.default.shared_libs += libnativewindow.so namespace.neuralnetworks.link.default.shared_libs += libsync.so namespace.neuralnetworks.link.default.shared_libs += libvndksupport.so ############################################################################### # Namespace config for vendor processes. In O, no restriction is enforced for Loading @@ -394,7 +430,7 @@ namespace.vndk.link.sphal.allow_all_shared_libs = true # (LL-NDK only) access. ############################################################################### [vendor] additional.namespaces = runtime,system,vndk%VNDK_IN_SYSTEM_NS% additional.namespaces = runtime,system,neuralnetworks,vndk%VNDK_IN_SYSTEM_NS% ############################################################################### # "default" namespace Loading Loading @@ -435,7 +471,7 @@ namespace.default.asan.permitted.paths += /odm namespace.default.asan.permitted.paths += /data/asan/vendor namespace.default.asan.permitted.paths += /vendor namespace.default.links = system,vndk%VNDK_IN_SYSTEM_NS%,runtime namespace.default.links = system,vndk%VNDK_IN_SYSTEM_NS%,runtime,neuralnetworks namespace.default.link.runtime.shared_libs = %SANITIZER_RUNTIME_LIBRARIES% namespace.default.link.system.shared_libs = %LLNDK_LIBRARIES% namespace.default.link.system.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% Loading @@ -443,6 +479,9 @@ namespace.default.link.vndk_in_system.shared_libs = %VNDK_USING_CORE_VARIANT_LIB namespace.default.link.vndk.shared_libs = %VNDK_SAMEPROCESS_LIBRARIES% namespace.default.link.vndk.shared_libs += %VNDK_CORE_LIBRARIES% # LLNDK library moved into apex namespace.default.link.neuralnetworks.shared_libs = libneuralnetworks.so ############################################################################### # "runtime" APEX namespace # Loading @@ -458,6 +497,7 @@ namespace.runtime.links = system # classloader-namespace for oat files, and tighten this up. namespace.runtime.link.system.allow_all_shared_libs = true ############################################################################### # "vndk" namespace # Loading Loading @@ -491,7 +531,7 @@ namespace.vndk.asan.search.paths += /system/${LIB}/vndk%VNDK_VER% # Android releases. The links here should be identical to that of the # 'vndk_in_system' namespace, except for the link between 'vndk' and # 'vndk_in_system'. namespace.vndk.links = system,default%VNDK_IN_SYSTEM_NS%,runtime namespace.vndk.links = system,default%VNDK_IN_SYSTEM_NS%,runtime,neuralnetworks namespace.vndk.link.system.shared_libs = %LLNDK_LIBRARIES% namespace.vndk.link.system.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% Loading @@ -502,6 +542,9 @@ namespace.vndk.link.runtime.shared_libs = %SANITIZER_RUNTIME_LIBRARIES% namespace.vndk.link.vndk_in_system.shared_libs = %VNDK_USING_CORE_VARIANT_LIBRARIES% # LLNDK library moved into apex namespace.vndk.link.neuralnetworks.shared_libs = libneuralnetworks.so ############################################################################### # "system" namespace # Loading Loading @@ -571,14 +614,34 @@ namespace.vndk_in_system.whitelisted = %VNDK_USING_CORE_VARIANT_LIBRARIES% # 1. 'vndk_in_system' needs to be freely linked back to 'vndk'. # 2. 'vndk_in_system' does not need to link to 'default', as any library that # requires anything vendor would not be a vndk_in_system library. namespace.vndk_in_system.links = vndk,system,runtime namespace.vndk_in_system.links = vndk,system,runtime,neuralnetworks namespace.vndk_in_system.link.runtime.shared_libs = %SANITIZER_RUNTIME_LIBRARIES% namespace.vndk_in_system.link.system.shared_libs = %LLNDK_LIBRARIES% namespace.vndk_in_system.link.system.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% namespace.vndk_in_system.link.vndk.allow_all_shared_libs = true namespace.vndk_in_system.link.neuralnetworks.shared_libs = libneuralnetworks.so ############################################################################### # "neuralnetworks" APEX namespace # # This namespace is for libraries within the NNAPI APEX. ############################################################################### namespace.neuralnetworks.isolated = true namespace.neuralnetworks.visible = true namespace.neuralnetworks.search.paths = /apex/com.android.neuralnetworks/${LIB} namespace.neuralnetworks.asan.search.paths = /apex/com.android.neuralnetworks/${LIB} namespace.neuralnetworks.links = default namespace.neuralnetworks.link.default.shared_libs = libc.so namespace.neuralnetworks.link.default.shared_libs += libcgrouprc.so namespace.neuralnetworks.link.default.shared_libs += libdl.so namespace.neuralnetworks.link.default.shared_libs += liblog.so namespace.neuralnetworks.link.default.shared_libs += libm.so namespace.neuralnetworks.link.default.shared_libs += libnativewindow.so namespace.neuralnetworks.link.default.shared_libs += libsync.so namespace.neuralnetworks.link.default.shared_libs += libvndksupport.so ############################################################################### # Namespace config for native tests that need access to both system and vendor Loading @@ -587,7 +650,7 @@ namespace.vndk_in_system.link.vndk.allow_all_shared_libs = true # includes the requisite namespace setup for APEXes. ############################################################################### [unrestricted] additional.namespaces = runtime,media,conscrypt,resolv additional.namespaces = runtime,media,conscrypt,resolv,neuralnetworks # Visible to allow links to be created at runtime, e.g. through # android_link_namespaces in libnativeloader. Loading @@ -605,7 +668,7 @@ namespace.default.asan.search.paths += /data/asan/vendor/${LIB} namespace.default.asan.search.paths += /vendor/${LIB} # Keep in sync with the "platform" namespace in art/build/apex/ld.config.txt. namespace.default.links = runtime,resolv namespace.default.links = runtime,resolv,neuralnetworks namespace.default.link.runtime.shared_libs = libandroidicu.so namespace.default.link.runtime.shared_libs += libdexfile_external.so namespace.default.link.runtime.shared_libs += libdexfiled_external.so Loading @@ -621,6 +684,7 @@ namespace.default.link.runtime.shared_libs += libpac.so namespace.default.link.runtime.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% namespace.default.link.resolv.shared_libs = libnetd_resolv.so namespace.default.link.neuralnetworks.shared_libs = libneuralnetworks.so ############################################################################### # "runtime" APEX namespace Loading Loading @@ -653,12 +717,16 @@ namespace.media.asan.search.paths = /apex/com.android.media/${LIB} namespace.media.permitted.paths = /apex/com.android.media/${LIB}/extractors namespace.media.links = default namespace.media.links = default,neuralnetworks namespace.media.link.default.shared_libs = %LLNDK_LIBRARIES% namespace.media.link.default.shared_libs += libbinder_ndk.so namespace.media.link.default.shared_libs += libmediametrics.so namespace.media.link.default.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% # LLNDK library moved into apex namespace.media.link.neuralnetworks.shared_libs = libneuralnetworks.so ############################################################################### # "conscrypt" APEX namespace # Loading Loading @@ -694,6 +762,25 @@ namespace.resolv.link.default.shared_libs += libdl.so namespace.resolv.link.default.shared_libs += libbinder_ndk.so namespace.resolv.link.default.shared_libs += liblog.so ############################################################################### # "neuralnetworks" APEX namespace # # This namespace is for libraries within the NNAPI APEX. ############################################################################### namespace.neuralnetworks.isolated = true namespace.neuralnetworks.visible = true namespace.neuralnetworks.search.paths = /apex/com.android.neuralnetworks/${LIB} namespace.neuralnetworks.asan.search.paths = /apex/com.android.neuralnetworks/${LIB} namespace.neuralnetworks.links = default namespace.neuralnetworks.link.default.shared_libs = libc.so namespace.neuralnetworks.link.default.shared_libs += libcgrouprc.so namespace.neuralnetworks.link.default.shared_libs += libdl.so namespace.neuralnetworks.link.default.shared_libs += liblog.so namespace.neuralnetworks.link.default.shared_libs += libm.so namespace.neuralnetworks.link.default.shared_libs += libnativewindow.so namespace.neuralnetworks.link.default.shared_libs += libsync.so namespace.neuralnetworks.link.default.shared_libs += libvndksupport.so ############################################################################### # Namespace config for binaries under /postinstall. Loading Loading
libnativeloader/library_namespaces.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ namespace { constexpr const char* kVendorNamespaceName = "sphal"; constexpr const char* kVndkNamespaceName = "vndk"; constexpr const char* kRuntimeNamespaceName = "runtime"; constexpr const char* kNeuralNetworksNamespaceName = "neuralnetworks"; // classloader-namespace is a linker namespace that is created for the loaded // app. To be specific, it is created for the app classloader. When Loading Loading @@ -238,6 +239,14 @@ NativeLoaderNamespace* LibraryNamespaces::Create(JNIEnv* env, uint32_t target_sd } } // Give access to NNAPI libraries (apex-updated LLNDK library). auto nnapi_ns = NativeLoaderNamespace::GetExportedNamespace(kNeuralNetworksNamespaceName, is_bridged); if (!app_ns.Link(nnapi_ns, neuralnetworks_public_libraries())) { *error_msg = app_ns.GetError(); return nullptr; } // Give access to VNDK-SP libraries from the 'vndk' namespace. if (unbundled_vendor_or_product_app && !vndksp_libraries().empty()) { auto vndk_ns = NativeLoaderNamespace::GetExportedNamespace(kVndkNamespaceName, is_bridged); Loading
libnativeloader/public_libraries.cpp +17 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,8 @@ const std::vector<const std::string> kRuntimePublicLibraries = { constexpr const char* kRuntimeApexLibPath = "/apex/com.android.runtime/" LIB; constexpr const char* kNeuralNetworksApexPublicLibrary = "libneuralnetworks.so"; // TODO(b/130388701): do we need this? std::string root_dir() { static const char* android_root_env = getenv("ANDROID_ROOT"); Loading Loading @@ -219,6 +221,12 @@ static std::string InitDefaultPublicLibraries() { sonames.erase(it); } } // Remove the public libs in the nnapi namespace. auto it = std::find(sonames.begin(), sonames.end(), kNeuralNetworksApexPublicLibrary); if (it != sonames.end()) { sonames.erase(it); } return android::base::Join(sonames, ':'); } Loading Loading @@ -267,6 +275,10 @@ static std::string InitVndkspLibraries() { return android::base::Join(sonames, ':'); } static std::string InitNeuralNetworksPublicLibraries() { return kNeuralNetworksApexPublicLibrary; } } // namespace const std::string& default_public_libraries() { Loading @@ -289,6 +301,11 @@ const std::string& extended_public_libraries() { return list; } const std::string& neuralnetworks_public_libraries() { static std::string list = InitNeuralNetworksPublicLibraries(); return list; } const std::string& llndk_libraries() { static std::string list = InitLlndkLibraries(); return list; Loading
libnativeloader/public_libraries.h +1 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ const std::string& default_public_libraries(); const std::string& runtime_public_libraries(); const std::string& vendor_public_libraries(); const std::string& extended_public_libraries(); const std::string& neuralnetworks_public_libraries(); const std::string& llndk_libraries(); const std::string& vndksp_libraries(); Loading
rootdir/etc/ld.config.legacy.txt +27 −3 Original line number Diff line number Diff line Loading @@ -42,7 +42,7 @@ namespace.default.asan.search.paths += /odm/${LIB} # APEX related namespaces. ############################################################################### additional.namespaces = runtime,conscrypt,media,resolv additional.namespaces = runtime,conscrypt,media,neuralnetworks,resolv # Keep in sync with the "platform" namespace in art/build/apex/ld.config.txt. # If a shared library or an executable requests a shared library that Loading @@ -51,8 +51,8 @@ additional.namespaces = runtime,conscrypt,media,resolv # 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 namespace.default.links = runtime,resolv,neuralnetworks namespace.default.asan.links = runtime,resolv,neuralnetworks namespace.default.link.runtime.shared_libs = libandroidicu.so namespace.default.link.runtime.shared_libs += libdexfile_external.so namespace.default.link.runtime.shared_libs += libdexfiled_external.so Loading @@ -71,6 +71,9 @@ namespace.default.link.runtime.shared_libs += libpac.so # to be loaded in the default namespace. namespace.default.link.resolv.shared_libs = libnetd_resolv.so # LLNDK library moved into apex namespace.default.link.neuralnetworks.shared_libs = libneuralnetworks.so ############################################################################### # "runtime" APEX namespace # Loading Loading @@ -158,6 +161,27 @@ namespace.resolv.link.default.shared_libs += libbinder_ndk.so namespace.resolv.link.default.shared_libs += liblog.so namespace.resolv.link.default.shared_libs += libvndksupport.so ############################################################################### # "neuralnetworks" APEX namespace # # This namespace is for libraries within the NNAPI APEX. ############################################################################### namespace.neuralnetworks.isolated = true namespace.neuralnetworks.visible = true namespace.neuralnetworks.search.paths = /apex/com.android.neuralnetworks/${LIB} namespace.neuralnetworks.asan.search.paths = /apex/com.android.neuralnetworks/${LIB} namespace.neuralnetworks.links = default namespace.neuralnetworks.link.default.shared_libs = libc.so namespace.neuralnetworks.link.default.shared_libs += libcgrouprc.so namespace.neuralnetworks.link.default.shared_libs += libdl.so namespace.neuralnetworks.link.default.shared_libs += liblog.so namespace.neuralnetworks.link.default.shared_libs += libm.so namespace.neuralnetworks.link.default.shared_libs += libnativewindow.so namespace.neuralnetworks.link.default.shared_libs += libsync.so namespace.neuralnetworks.link.default.shared_libs += libvndksupport.so ############################################################################### # Namespace config for binaries under /postinstall. # Only one default namespace is defined and it has no directories other than Loading
rootdir/etc/ld.config.txt +100 −13 Original line number Diff line number Diff line Loading @@ -35,7 +35,7 @@ dir.postinstall = /postinstall dir.system = /data [system] additional.namespaces = runtime,conscrypt,media,resolv,sphal,vndk,rs additional.namespaces = runtime,conscrypt,media,neuralnetworks,resolv,sphal,vndk,rs ############################################################################### # "default" namespace Loading Loading @@ -132,7 +132,7 @@ namespace.default.asan.permitted.paths += /system/${LIB}/bootstrap # 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.links = runtime,resolv,neuralnetworks namespace.default.link.runtime.shared_libs = libandroidicu.so namespace.default.link.runtime.shared_libs += libdexfile_external.so namespace.default.link.runtime.shared_libs += libdexfiled_external.so Loading @@ -152,6 +152,9 @@ namespace.default.link.runtime.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% # to be loaded in the default namespace. namespace.default.link.resolv.shared_libs = libnetd_resolv.so # LLNDK library moved into apex namespace.default.link.neuralnetworks.shared_libs = libneuralnetworks.so ############################################################################### # "runtime" APEX namespace # Loading Loading @@ -185,13 +188,16 @@ namespace.media.asan.search.paths = /apex/com.android.media/${LIB} namespace.media.permitted.paths = /apex/com.android.media/${LIB}/extractors namespace.media.links = default namespace.media.links = default,neuralnetworks namespace.media.link.default.shared_libs = %LLNDK_LIBRARIES% namespace.media.link.default.shared_libs += libbinder_ndk.so namespace.media.link.default.shared_libs += libcgrouprc.so namespace.media.link.default.shared_libs += libmediametrics.so namespace.media.link.default.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% # LLNDK library moved into apex namespace.media.link.neuralnetworks.shared_libs = libneuralnetworks.so ############################################################################### # "conscrypt" APEX namespace # Loading Loading @@ -269,7 +275,7 @@ namespace.sphal.asan.permitted.paths += /vendor/${LIB} # libs listed here can be used. Order is important here as the namespaces are # tried in this order. rs should be before vndk because both are capable # of loading libRS_internal.so namespace.sphal.links = rs,default,vndk namespace.sphal.links = rs,default,vndk,neuralnetworks # Renderscript gets separate namespace namespace.sphal.link.rs.shared_libs = libRS_internal.so Loading @@ -279,6 +285,10 @@ namespace.sphal.link.default.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% namespace.sphal.link.vndk.shared_libs = %VNDK_SAMEPROCESS_LIBRARIES% # LLNDK library moved into apex namespace.sphal.link.neuralnetworks.shared_libs = libneuralnetworks.so ############################################################################### # "rs" namespace # Loading Loading @@ -318,7 +328,7 @@ namespace.rs.asan.permitted.paths += /data/asan/vendor/${LIB} namespace.rs.asan.permitted.paths += /vendor/${LIB} namespace.rs.asan.permitted.paths += /data namespace.rs.links = default,vndk namespace.rs.links = default,vndk,neuralnetworks namespace.rs.link.default.shared_libs = %LLNDK_LIBRARIES% namespace.rs.link.default.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% Loading @@ -328,6 +338,10 @@ namespace.rs.link.default.shared_libs += %PRIVATE_LLNDK_LIBRARIES% namespace.rs.link.vndk.shared_libs = %VNDK_SAMEPROCESS_LIBRARIES% # LLNDK library moved into apex namespace.rs.link.neuralnetworks.shared_libs = libneuralnetworks.so ############################################################################### # "vndk" namespace # Loading Loading @@ -373,7 +387,7 @@ namespace.vndk.asan.permitted.paths += /system/${LIB}/vndk-sp%VNDK_VER # The "vndk" namespace links to "default" namespace for LLNDK libs and links to # "sphal" namespace for vendor libs. The ordering matters. The "default" # namespace has higher priority than the "sphal" namespace. namespace.vndk.links = default,sphal,runtime namespace.vndk.links = default,sphal,runtime,neuralnetworks # When these NDK libs are required inside this namespace, then it is redirected # to the default namespace. This is possible since their ABI is stable across Loading @@ -386,6 +400,28 @@ namespace.vndk.link.runtime.shared_libs = %SANITIZER_RUNTIME_LIBRARIES% # Allow VNDK-SP extensions to use vendor libraries namespace.vndk.link.sphal.allow_all_shared_libs = true # LLNDK library moved into apex namespace.vndk.link.neuralnetworks.shared_libs = libneuralnetworks.so ############################################################################### # "neuralnetworks" APEX namespace # # This namespace is for libraries within the NNAPI APEX. ############################################################################### namespace.neuralnetworks.isolated = true namespace.neuralnetworks.visible = true namespace.neuralnetworks.search.paths = /apex/com.android.neuralnetworks/${LIB} namespace.neuralnetworks.asan.search.paths = /apex/com.android.neuralnetworks/${LIB} namespace.neuralnetworks.links = default namespace.neuralnetworks.link.default.shared_libs = libc.so namespace.neuralnetworks.link.default.shared_libs += libcgrouprc.so namespace.neuralnetworks.link.default.shared_libs += libdl.so namespace.neuralnetworks.link.default.shared_libs += liblog.so namespace.neuralnetworks.link.default.shared_libs += libm.so namespace.neuralnetworks.link.default.shared_libs += libnativewindow.so namespace.neuralnetworks.link.default.shared_libs += libsync.so namespace.neuralnetworks.link.default.shared_libs += libvndksupport.so ############################################################################### # Namespace config for vendor processes. In O, no restriction is enforced for Loading @@ -394,7 +430,7 @@ namespace.vndk.link.sphal.allow_all_shared_libs = true # (LL-NDK only) access. ############################################################################### [vendor] additional.namespaces = runtime,system,vndk%VNDK_IN_SYSTEM_NS% additional.namespaces = runtime,system,neuralnetworks,vndk%VNDK_IN_SYSTEM_NS% ############################################################################### # "default" namespace Loading Loading @@ -435,7 +471,7 @@ namespace.default.asan.permitted.paths += /odm namespace.default.asan.permitted.paths += /data/asan/vendor namespace.default.asan.permitted.paths += /vendor namespace.default.links = system,vndk%VNDK_IN_SYSTEM_NS%,runtime namespace.default.links = system,vndk%VNDK_IN_SYSTEM_NS%,runtime,neuralnetworks namespace.default.link.runtime.shared_libs = %SANITIZER_RUNTIME_LIBRARIES% namespace.default.link.system.shared_libs = %LLNDK_LIBRARIES% namespace.default.link.system.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% Loading @@ -443,6 +479,9 @@ namespace.default.link.vndk_in_system.shared_libs = %VNDK_USING_CORE_VARIANT_LIB namespace.default.link.vndk.shared_libs = %VNDK_SAMEPROCESS_LIBRARIES% namespace.default.link.vndk.shared_libs += %VNDK_CORE_LIBRARIES% # LLNDK library moved into apex namespace.default.link.neuralnetworks.shared_libs = libneuralnetworks.so ############################################################################### # "runtime" APEX namespace # Loading @@ -458,6 +497,7 @@ namespace.runtime.links = system # classloader-namespace for oat files, and tighten this up. namespace.runtime.link.system.allow_all_shared_libs = true ############################################################################### # "vndk" namespace # Loading Loading @@ -491,7 +531,7 @@ namespace.vndk.asan.search.paths += /system/${LIB}/vndk%VNDK_VER% # Android releases. The links here should be identical to that of the # 'vndk_in_system' namespace, except for the link between 'vndk' and # 'vndk_in_system'. namespace.vndk.links = system,default%VNDK_IN_SYSTEM_NS%,runtime namespace.vndk.links = system,default%VNDK_IN_SYSTEM_NS%,runtime,neuralnetworks namespace.vndk.link.system.shared_libs = %LLNDK_LIBRARIES% namespace.vndk.link.system.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% Loading @@ -502,6 +542,9 @@ namespace.vndk.link.runtime.shared_libs = %SANITIZER_RUNTIME_LIBRARIES% namespace.vndk.link.vndk_in_system.shared_libs = %VNDK_USING_CORE_VARIANT_LIBRARIES% # LLNDK library moved into apex namespace.vndk.link.neuralnetworks.shared_libs = libneuralnetworks.so ############################################################################### # "system" namespace # Loading Loading @@ -571,14 +614,34 @@ namespace.vndk_in_system.whitelisted = %VNDK_USING_CORE_VARIANT_LIBRARIES% # 1. 'vndk_in_system' needs to be freely linked back to 'vndk'. # 2. 'vndk_in_system' does not need to link to 'default', as any library that # requires anything vendor would not be a vndk_in_system library. namespace.vndk_in_system.links = vndk,system,runtime namespace.vndk_in_system.links = vndk,system,runtime,neuralnetworks namespace.vndk_in_system.link.runtime.shared_libs = %SANITIZER_RUNTIME_LIBRARIES% namespace.vndk_in_system.link.system.shared_libs = %LLNDK_LIBRARIES% namespace.vndk_in_system.link.system.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% namespace.vndk_in_system.link.vndk.allow_all_shared_libs = true namespace.vndk_in_system.link.neuralnetworks.shared_libs = libneuralnetworks.so ############################################################################### # "neuralnetworks" APEX namespace # # This namespace is for libraries within the NNAPI APEX. ############################################################################### namespace.neuralnetworks.isolated = true namespace.neuralnetworks.visible = true namespace.neuralnetworks.search.paths = /apex/com.android.neuralnetworks/${LIB} namespace.neuralnetworks.asan.search.paths = /apex/com.android.neuralnetworks/${LIB} namespace.neuralnetworks.links = default namespace.neuralnetworks.link.default.shared_libs = libc.so namespace.neuralnetworks.link.default.shared_libs += libcgrouprc.so namespace.neuralnetworks.link.default.shared_libs += libdl.so namespace.neuralnetworks.link.default.shared_libs += liblog.so namespace.neuralnetworks.link.default.shared_libs += libm.so namespace.neuralnetworks.link.default.shared_libs += libnativewindow.so namespace.neuralnetworks.link.default.shared_libs += libsync.so namespace.neuralnetworks.link.default.shared_libs += libvndksupport.so ############################################################################### # Namespace config for native tests that need access to both system and vendor Loading @@ -587,7 +650,7 @@ namespace.vndk_in_system.link.vndk.allow_all_shared_libs = true # includes the requisite namespace setup for APEXes. ############################################################################### [unrestricted] additional.namespaces = runtime,media,conscrypt,resolv additional.namespaces = runtime,media,conscrypt,resolv,neuralnetworks # Visible to allow links to be created at runtime, e.g. through # android_link_namespaces in libnativeloader. Loading @@ -605,7 +668,7 @@ namespace.default.asan.search.paths += /data/asan/vendor/${LIB} namespace.default.asan.search.paths += /vendor/${LIB} # Keep in sync with the "platform" namespace in art/build/apex/ld.config.txt. namespace.default.links = runtime,resolv namespace.default.links = runtime,resolv,neuralnetworks namespace.default.link.runtime.shared_libs = libandroidicu.so namespace.default.link.runtime.shared_libs += libdexfile_external.so namespace.default.link.runtime.shared_libs += libdexfiled_external.so Loading @@ -621,6 +684,7 @@ namespace.default.link.runtime.shared_libs += libpac.so namespace.default.link.runtime.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% namespace.default.link.resolv.shared_libs = libnetd_resolv.so namespace.default.link.neuralnetworks.shared_libs = libneuralnetworks.so ############################################################################### # "runtime" APEX namespace Loading Loading @@ -653,12 +717,16 @@ namespace.media.asan.search.paths = /apex/com.android.media/${LIB} namespace.media.permitted.paths = /apex/com.android.media/${LIB}/extractors namespace.media.links = default namespace.media.links = default,neuralnetworks namespace.media.link.default.shared_libs = %LLNDK_LIBRARIES% namespace.media.link.default.shared_libs += libbinder_ndk.so namespace.media.link.default.shared_libs += libmediametrics.so namespace.media.link.default.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% # LLNDK library moved into apex namespace.media.link.neuralnetworks.shared_libs = libneuralnetworks.so ############################################################################### # "conscrypt" APEX namespace # Loading Loading @@ -694,6 +762,25 @@ namespace.resolv.link.default.shared_libs += libdl.so namespace.resolv.link.default.shared_libs += libbinder_ndk.so namespace.resolv.link.default.shared_libs += liblog.so ############################################################################### # "neuralnetworks" APEX namespace # # This namespace is for libraries within the NNAPI APEX. ############################################################################### namespace.neuralnetworks.isolated = true namespace.neuralnetworks.visible = true namespace.neuralnetworks.search.paths = /apex/com.android.neuralnetworks/${LIB} namespace.neuralnetworks.asan.search.paths = /apex/com.android.neuralnetworks/${LIB} namespace.neuralnetworks.links = default namespace.neuralnetworks.link.default.shared_libs = libc.so namespace.neuralnetworks.link.default.shared_libs += libcgrouprc.so namespace.neuralnetworks.link.default.shared_libs += libdl.so namespace.neuralnetworks.link.default.shared_libs += liblog.so namespace.neuralnetworks.link.default.shared_libs += libm.so namespace.neuralnetworks.link.default.shared_libs += libnativewindow.so namespace.neuralnetworks.link.default.shared_libs += libsync.so namespace.neuralnetworks.link.default.shared_libs += libvndksupport.so ############################################################################### # Namespace config for binaries under /postinstall. Loading