Loading libnativeloader/library_namespaces.cpp +9 −0 Original line number Original line Diff line number Diff line Loading @@ -43,6 +43,7 @@ namespace { constexpr const char* kVendorNamespaceName = "sphal"; constexpr const char* kVendorNamespaceName = "sphal"; constexpr const char* kVndkNamespaceName = "vndk"; constexpr const char* kVndkNamespaceName = "vndk"; constexpr const char* kRuntimeNamespaceName = "runtime"; constexpr const char* kRuntimeNamespaceName = "runtime"; constexpr const char* kNeuralNetworksNamespaceName = "neuralnetworks"; // classloader-namespace is a linker namespace that is created for the loaded // classloader-namespace is a linker namespace that is created for the loaded // app. To be specific, it is created for the app classloader. When // 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. // Give access to VNDK-SP libraries from the 'vndk' namespace. if (unbundled_vendor_or_product_app && !vndksp_libraries().empty()) { if (unbundled_vendor_or_product_app && !vndksp_libraries().empty()) { auto vndk_ns = NativeLoaderNamespace::GetExportedNamespace(kVndkNamespaceName, is_bridged); auto vndk_ns = NativeLoaderNamespace::GetExportedNamespace(kVndkNamespaceName, is_bridged); Loading libnativeloader/public_libraries.cpp +17 −0 Original line number Original line 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* kRuntimeApexLibPath = "/apex/com.android.runtime/" LIB; constexpr const char* kNeuralNetworksApexPublicLibrary = "libneuralnetworks.so"; // TODO(b/130388701): do we need this? // TODO(b/130388701): do we need this? std::string root_dir() { std::string root_dir() { static const char* android_root_env = getenv("ANDROID_ROOT"); static const char* android_root_env = getenv("ANDROID_ROOT"); Loading Loading @@ -219,6 +221,12 @@ static std::string InitDefaultPublicLibraries() { sonames.erase(it); 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, ':'); return android::base::Join(sonames, ':'); } } Loading Loading @@ -267,6 +275,10 @@ static std::string InitVndkspLibraries() { return android::base::Join(sonames, ':'); return android::base::Join(sonames, ':'); } } static std::string InitNeuralNetworksPublicLibraries() { return kNeuralNetworksApexPublicLibrary; } } // namespace } // namespace const std::string& default_public_libraries() { const std::string& default_public_libraries() { Loading @@ -289,6 +301,11 @@ const std::string& extended_public_libraries() { return list; return list; } } const std::string& neuralnetworks_public_libraries() { static std::string list = InitNeuralNetworksPublicLibraries(); return list; } const std::string& llndk_libraries() { const std::string& llndk_libraries() { static std::string list = InitLlndkLibraries(); static std::string list = InitLlndkLibraries(); return list; return list; Loading libnativeloader/public_libraries.h +1 −0 Original line number Original line 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& runtime_public_libraries(); const std::string& vendor_public_libraries(); const std::string& vendor_public_libraries(); const std::string& extended_public_libraries(); const std::string& extended_public_libraries(); const std::string& neuralnetworks_public_libraries(); const std::string& llndk_libraries(); const std::string& llndk_libraries(); const std::string& vndksp_libraries(); const std::string& vndksp_libraries(); Loading rootdir/etc/ld.config.legacy.txt +27 −3 Original line number Original line Diff line number Diff line Loading @@ -42,7 +42,7 @@ namespace.default.asan.search.paths += /odm/${LIB} # APEX related namespaces. # 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. # 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 # 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 # shared library cannot be loaded from the runtime namespace either, the # dynamic linker tries to load the shared library from the resolv namespace. # dynamic linker tries to load the shared library from the resolv namespace. # Finally, if all attempts fail, the dynamic linker returns an error. # Finally, if all attempts fail, the dynamic linker returns an error. namespace.default.links = runtime,resolv namespace.default.links = runtime,resolv,neuralnetworks namespace.default.asan.links = runtime,resolv namespace.default.asan.links = runtime,resolv,neuralnetworks namespace.default.link.runtime.shared_libs = libandroidicu.so namespace.default.link.runtime.shared_libs = libandroidicu.so namespace.default.link.runtime.shared_libs += libdexfile_external.so namespace.default.link.runtime.shared_libs += libdexfile_external.so namespace.default.link.runtime.shared_libs += libdexfiled_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. # to be loaded in the default namespace. namespace.default.link.resolv.shared_libs = libnetd_resolv.so 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 # "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 += liblog.so namespace.resolv.link.default.shared_libs += libvndksupport.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. # Namespace config for binaries under /postinstall. # Only one default namespace is defined and it has no directories other than # Only one default namespace is defined and it has no directories other than Loading rootdir/etc/ld.config.txt +100 −13 Original line number Original line Diff line number Diff line Loading @@ -35,7 +35,7 @@ dir.postinstall = /postinstall dir.system = /data dir.system = /data [system] [system] additional.namespaces = runtime,conscrypt,media,resolv,sphal,vndk,rs additional.namespaces = runtime,conscrypt,media,neuralnetworks,resolv,sphal,vndk,rs ############################################################################### ############################################################################### # "default" namespace # "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 # shared library cannot be loaded from the runtime namespace either, the # dynamic linker tries to load the shared library from the resolv namespace. # dynamic linker tries to load the shared library from the resolv namespace. # Finally, if all attempts fail, the dynamic linker returns an error. # 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 = libandroidicu.so namespace.default.link.runtime.shared_libs += libdexfile_external.so namespace.default.link.runtime.shared_libs += libdexfile_external.so namespace.default.link.runtime.shared_libs += libdexfiled_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. # to be loaded in the default namespace. namespace.default.link.resolv.shared_libs = libnetd_resolv.so 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 # "runtime" APEX namespace # # Loading Loading @@ -186,13 +189,16 @@ namespace.media.asan.search.paths = /apex/com.android.media/${LIB} namespace.media.permitted.paths = /apex/com.android.media/${LIB}/extractors namespace.media.permitted.paths = /apex/com.android.media/${LIB}/extractors namespace.media.asan.permitted.paths = /apex/com.android.media/${LIB}/extractors namespace.media.asan.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 = %LLNDK_LIBRARIES% namespace.media.link.default.shared_libs += libbinder_ndk.so namespace.media.link.default.shared_libs += libbinder_ndk.so namespace.media.link.default.shared_libs += libcgrouprc.so namespace.media.link.default.shared_libs += libcgrouprc.so namespace.media.link.default.shared_libs += libmediametrics.so namespace.media.link.default.shared_libs += libmediametrics.so namespace.media.link.default.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% 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 # "conscrypt" APEX namespace # # Loading Loading @@ -270,7 +276,7 @@ namespace.sphal.asan.permitted.paths += /vendor/${LIB} # libs listed here can be used. Order is important here as the namespaces are # 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 # tried in this order. rs should be before vndk because both are capable # of loading libRS_internal.so # of loading libRS_internal.so namespace.sphal.links = rs,default,vndk namespace.sphal.links = rs,default,vndk,neuralnetworks # Renderscript gets separate namespace # Renderscript gets separate namespace namespace.sphal.link.rs.shared_libs = libRS_internal.so namespace.sphal.link.rs.shared_libs = libRS_internal.so Loading @@ -280,6 +286,10 @@ namespace.sphal.link.default.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% namespace.sphal.link.vndk.shared_libs = %VNDK_SAMEPROCESS_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 # "rs" namespace # # Loading Loading @@ -319,7 +329,7 @@ namespace.rs.asan.permitted.paths += /data/asan/vendor/${LIB} namespace.rs.asan.permitted.paths += /vendor/${LIB} namespace.rs.asan.permitted.paths += /vendor/${LIB} namespace.rs.asan.permitted.paths += /data 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 = %LLNDK_LIBRARIES% namespace.rs.link.default.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% namespace.rs.link.default.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% Loading @@ -329,6 +339,10 @@ namespace.rs.link.default.shared_libs += %PRIVATE_LLNDK_LIBRARIES% namespace.rs.link.vndk.shared_libs = %VNDK_SAMEPROCESS_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 # "vndk" namespace # # Loading Loading @@ -374,7 +388,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 # The "vndk" namespace links to "default" namespace for LLNDK libs and links to # "sphal" namespace for vendor libs. The ordering matters. The "default" # "sphal" namespace for vendor libs. The ordering matters. The "default" # namespace has higher priority than the "sphal" namespace. # 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 # 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 # to the default namespace. This is possible since their ABI is stable across Loading @@ -387,6 +401,28 @@ namespace.vndk.link.runtime.shared_libs = %SANITIZER_RUNTIME_LIBRARIES% # Allow VNDK-SP extensions to use vendor libraries # Allow VNDK-SP extensions to use vendor libraries namespace.vndk.link.sphal.allow_all_shared_libs = true 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 # Namespace config for vendor processes. In O, no restriction is enforced for Loading @@ -395,7 +431,7 @@ namespace.vndk.link.sphal.allow_all_shared_libs = true # (LL-NDK only) access. # (LL-NDK only) access. ############################################################################### ############################################################################### [vendor] [vendor] additional.namespaces = runtime,system,vndk%VNDK_IN_SYSTEM_NS% additional.namespaces = runtime,system,neuralnetworks,vndk%VNDK_IN_SYSTEM_NS% ############################################################################### ############################################################################### # "default" namespace # "default" namespace Loading Loading @@ -436,7 +472,7 @@ namespace.default.asan.permitted.paths += /odm namespace.default.asan.permitted.paths += /data/asan/vendor namespace.default.asan.permitted.paths += /data/asan/vendor namespace.default.asan.permitted.paths += /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.runtime.shared_libs = %SANITIZER_RUNTIME_LIBRARIES% namespace.default.link.system.shared_libs = %LLNDK_LIBRARIES% namespace.default.link.system.shared_libs = %LLNDK_LIBRARIES% namespace.default.link.system.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% namespace.default.link.system.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% Loading @@ -444,6 +480,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_SAMEPROCESS_LIBRARIES% namespace.default.link.vndk.shared_libs += %VNDK_CORE_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 # "runtime" APEX namespace # # Loading @@ -459,6 +498,7 @@ namespace.runtime.links = system # classloader-namespace for oat files, and tighten this up. # classloader-namespace for oat files, and tighten this up. namespace.runtime.link.system.allow_all_shared_libs = true namespace.runtime.link.system.allow_all_shared_libs = true ############################################################################### ############################################################################### # "vndk" namespace # "vndk" namespace # # Loading Loading @@ -492,7 +532,7 @@ namespace.vndk.asan.search.paths += /system/${LIB}/vndk%VNDK_VER% # Android releases. The links here should be identical to that of the # 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, except for the link between 'vndk' and # 'vndk_in_system'. # '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 = %LLNDK_LIBRARIES% namespace.vndk.link.system.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% namespace.vndk.link.system.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% Loading @@ -503,6 +543,9 @@ namespace.vndk.link.runtime.shared_libs = %SANITIZER_RUNTIME_LIBRARIES% namespace.vndk.link.vndk_in_system.shared_libs = %VNDK_USING_CORE_VARIANT_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 # "system" namespace # # Loading Loading @@ -572,14 +615,34 @@ namespace.vndk_in_system.whitelisted = %VNDK_USING_CORE_VARIANT_LIBRARIES% # 1. 'vndk_in_system' needs to be freely linked back to 'vndk'. # 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 # 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. # 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.runtime.shared_libs = %SANITIZER_RUNTIME_LIBRARIES% namespace.vndk_in_system.link.system.shared_libs = %LLNDK_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.system.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% namespace.vndk_in_system.link.vndk.allow_all_shared_libs = true 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 # Namespace config for native tests that need access to both system and vendor Loading @@ -588,7 +651,7 @@ namespace.vndk_in_system.link.vndk.allow_all_shared_libs = true # includes the requisite namespace setup for APEXes. # includes the requisite namespace setup for APEXes. ############################################################################### ############################################################################### [unrestricted] [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 # Visible to allow links to be created at runtime, e.g. through # android_link_namespaces in libnativeloader. # android_link_namespaces in libnativeloader. Loading @@ -606,7 +669,7 @@ namespace.default.asan.search.paths += /data/asan/vendor/${LIB} namespace.default.asan.search.paths += /vendor/${LIB} namespace.default.asan.search.paths += /vendor/${LIB} # Keep in sync with the "platform" namespace in art/build/apex/ld.config.txt. # 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 = libandroidicu.so namespace.default.link.runtime.shared_libs += libdexfile_external.so namespace.default.link.runtime.shared_libs += libdexfile_external.so namespace.default.link.runtime.shared_libs += libdexfiled_external.so namespace.default.link.runtime.shared_libs += libdexfiled_external.so Loading @@ -622,6 +685,7 @@ namespace.default.link.runtime.shared_libs += libpac.so namespace.default.link.runtime.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% namespace.default.link.runtime.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% namespace.default.link.resolv.shared_libs = libnetd_resolv.so namespace.default.link.resolv.shared_libs = libnetd_resolv.so namespace.default.link.neuralnetworks.shared_libs = libneuralnetworks.so ############################################################################### ############################################################################### # "runtime" APEX namespace # "runtime" APEX namespace Loading Loading @@ -655,12 +719,16 @@ namespace.media.asan.search.paths = /apex/com.android.media/${LIB} namespace.media.permitted.paths = /apex/com.android.media/${LIB}/extractors namespace.media.permitted.paths = /apex/com.android.media/${LIB}/extractors namespace.media.asan.permitted.paths = /apex/com.android.media/${LIB}/extractors namespace.media.asan.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 = %LLNDK_LIBRARIES% namespace.media.link.default.shared_libs += libbinder_ndk.so namespace.media.link.default.shared_libs += libbinder_ndk.so namespace.media.link.default.shared_libs += libmediametrics.so namespace.media.link.default.shared_libs += libmediametrics.so namespace.media.link.default.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% 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 # "conscrypt" APEX namespace # # Loading Loading @@ -696,6 +764,25 @@ namespace.resolv.link.default.shared_libs += libdl.so namespace.resolv.link.default.shared_libs += libbinder_ndk.so namespace.resolv.link.default.shared_libs += libbinder_ndk.so namespace.resolv.link.default.shared_libs += liblog.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. # Namespace config for binaries under /postinstall. Loading Loading
libnativeloader/library_namespaces.cpp +9 −0 Original line number Original line Diff line number Diff line Loading @@ -43,6 +43,7 @@ namespace { constexpr const char* kVendorNamespaceName = "sphal"; constexpr const char* kVendorNamespaceName = "sphal"; constexpr const char* kVndkNamespaceName = "vndk"; constexpr const char* kVndkNamespaceName = "vndk"; constexpr const char* kRuntimeNamespaceName = "runtime"; constexpr const char* kRuntimeNamespaceName = "runtime"; constexpr const char* kNeuralNetworksNamespaceName = "neuralnetworks"; // classloader-namespace is a linker namespace that is created for the loaded // classloader-namespace is a linker namespace that is created for the loaded // app. To be specific, it is created for the app classloader. When // 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. // Give access to VNDK-SP libraries from the 'vndk' namespace. if (unbundled_vendor_or_product_app && !vndksp_libraries().empty()) { if (unbundled_vendor_or_product_app && !vndksp_libraries().empty()) { auto vndk_ns = NativeLoaderNamespace::GetExportedNamespace(kVndkNamespaceName, is_bridged); auto vndk_ns = NativeLoaderNamespace::GetExportedNamespace(kVndkNamespaceName, is_bridged); Loading
libnativeloader/public_libraries.cpp +17 −0 Original line number Original line 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* kRuntimeApexLibPath = "/apex/com.android.runtime/" LIB; constexpr const char* kNeuralNetworksApexPublicLibrary = "libneuralnetworks.so"; // TODO(b/130388701): do we need this? // TODO(b/130388701): do we need this? std::string root_dir() { std::string root_dir() { static const char* android_root_env = getenv("ANDROID_ROOT"); static const char* android_root_env = getenv("ANDROID_ROOT"); Loading Loading @@ -219,6 +221,12 @@ static std::string InitDefaultPublicLibraries() { sonames.erase(it); 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, ':'); return android::base::Join(sonames, ':'); } } Loading Loading @@ -267,6 +275,10 @@ static std::string InitVndkspLibraries() { return android::base::Join(sonames, ':'); return android::base::Join(sonames, ':'); } } static std::string InitNeuralNetworksPublicLibraries() { return kNeuralNetworksApexPublicLibrary; } } // namespace } // namespace const std::string& default_public_libraries() { const std::string& default_public_libraries() { Loading @@ -289,6 +301,11 @@ const std::string& extended_public_libraries() { return list; return list; } } const std::string& neuralnetworks_public_libraries() { static std::string list = InitNeuralNetworksPublicLibraries(); return list; } const std::string& llndk_libraries() { const std::string& llndk_libraries() { static std::string list = InitLlndkLibraries(); static std::string list = InitLlndkLibraries(); return list; return list; Loading
libnativeloader/public_libraries.h +1 −0 Original line number Original line 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& runtime_public_libraries(); const std::string& vendor_public_libraries(); const std::string& vendor_public_libraries(); const std::string& extended_public_libraries(); const std::string& extended_public_libraries(); const std::string& neuralnetworks_public_libraries(); const std::string& llndk_libraries(); const std::string& llndk_libraries(); const std::string& vndksp_libraries(); const std::string& vndksp_libraries(); Loading
rootdir/etc/ld.config.legacy.txt +27 −3 Original line number Original line Diff line number Diff line Loading @@ -42,7 +42,7 @@ namespace.default.asan.search.paths += /odm/${LIB} # APEX related namespaces. # 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. # 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 # 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 # shared library cannot be loaded from the runtime namespace either, the # dynamic linker tries to load the shared library from the resolv namespace. # dynamic linker tries to load the shared library from the resolv namespace. # Finally, if all attempts fail, the dynamic linker returns an error. # Finally, if all attempts fail, the dynamic linker returns an error. namespace.default.links = runtime,resolv namespace.default.links = runtime,resolv,neuralnetworks namespace.default.asan.links = runtime,resolv namespace.default.asan.links = runtime,resolv,neuralnetworks namespace.default.link.runtime.shared_libs = libandroidicu.so namespace.default.link.runtime.shared_libs = libandroidicu.so namespace.default.link.runtime.shared_libs += libdexfile_external.so namespace.default.link.runtime.shared_libs += libdexfile_external.so namespace.default.link.runtime.shared_libs += libdexfiled_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. # to be loaded in the default namespace. namespace.default.link.resolv.shared_libs = libnetd_resolv.so 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 # "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 += liblog.so namespace.resolv.link.default.shared_libs += libvndksupport.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. # Namespace config for binaries under /postinstall. # Only one default namespace is defined and it has no directories other than # Only one default namespace is defined and it has no directories other than Loading
rootdir/etc/ld.config.txt +100 −13 Original line number Original line Diff line number Diff line Loading @@ -35,7 +35,7 @@ dir.postinstall = /postinstall dir.system = /data dir.system = /data [system] [system] additional.namespaces = runtime,conscrypt,media,resolv,sphal,vndk,rs additional.namespaces = runtime,conscrypt,media,neuralnetworks,resolv,sphal,vndk,rs ############################################################################### ############################################################################### # "default" namespace # "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 # shared library cannot be loaded from the runtime namespace either, the # dynamic linker tries to load the shared library from the resolv namespace. # dynamic linker tries to load the shared library from the resolv namespace. # Finally, if all attempts fail, the dynamic linker returns an error. # 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 = libandroidicu.so namespace.default.link.runtime.shared_libs += libdexfile_external.so namespace.default.link.runtime.shared_libs += libdexfile_external.so namespace.default.link.runtime.shared_libs += libdexfiled_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. # to be loaded in the default namespace. namespace.default.link.resolv.shared_libs = libnetd_resolv.so 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 # "runtime" APEX namespace # # Loading Loading @@ -186,13 +189,16 @@ namespace.media.asan.search.paths = /apex/com.android.media/${LIB} namespace.media.permitted.paths = /apex/com.android.media/${LIB}/extractors namespace.media.permitted.paths = /apex/com.android.media/${LIB}/extractors namespace.media.asan.permitted.paths = /apex/com.android.media/${LIB}/extractors namespace.media.asan.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 = %LLNDK_LIBRARIES% namespace.media.link.default.shared_libs += libbinder_ndk.so namespace.media.link.default.shared_libs += libbinder_ndk.so namespace.media.link.default.shared_libs += libcgrouprc.so namespace.media.link.default.shared_libs += libcgrouprc.so namespace.media.link.default.shared_libs += libmediametrics.so namespace.media.link.default.shared_libs += libmediametrics.so namespace.media.link.default.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% 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 # "conscrypt" APEX namespace # # Loading Loading @@ -270,7 +276,7 @@ namespace.sphal.asan.permitted.paths += /vendor/${LIB} # libs listed here can be used. Order is important here as the namespaces are # 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 # tried in this order. rs should be before vndk because both are capable # of loading libRS_internal.so # of loading libRS_internal.so namespace.sphal.links = rs,default,vndk namespace.sphal.links = rs,default,vndk,neuralnetworks # Renderscript gets separate namespace # Renderscript gets separate namespace namespace.sphal.link.rs.shared_libs = libRS_internal.so namespace.sphal.link.rs.shared_libs = libRS_internal.so Loading @@ -280,6 +286,10 @@ namespace.sphal.link.default.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% namespace.sphal.link.vndk.shared_libs = %VNDK_SAMEPROCESS_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 # "rs" namespace # # Loading Loading @@ -319,7 +329,7 @@ namespace.rs.asan.permitted.paths += /data/asan/vendor/${LIB} namespace.rs.asan.permitted.paths += /vendor/${LIB} namespace.rs.asan.permitted.paths += /vendor/${LIB} namespace.rs.asan.permitted.paths += /data 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 = %LLNDK_LIBRARIES% namespace.rs.link.default.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% namespace.rs.link.default.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% Loading @@ -329,6 +339,10 @@ namespace.rs.link.default.shared_libs += %PRIVATE_LLNDK_LIBRARIES% namespace.rs.link.vndk.shared_libs = %VNDK_SAMEPROCESS_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 # "vndk" namespace # # Loading Loading @@ -374,7 +388,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 # The "vndk" namespace links to "default" namespace for LLNDK libs and links to # "sphal" namespace for vendor libs. The ordering matters. The "default" # "sphal" namespace for vendor libs. The ordering matters. The "default" # namespace has higher priority than the "sphal" namespace. # 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 # 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 # to the default namespace. This is possible since their ABI is stable across Loading @@ -387,6 +401,28 @@ namespace.vndk.link.runtime.shared_libs = %SANITIZER_RUNTIME_LIBRARIES% # Allow VNDK-SP extensions to use vendor libraries # Allow VNDK-SP extensions to use vendor libraries namespace.vndk.link.sphal.allow_all_shared_libs = true 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 # Namespace config for vendor processes. In O, no restriction is enforced for Loading @@ -395,7 +431,7 @@ namespace.vndk.link.sphal.allow_all_shared_libs = true # (LL-NDK only) access. # (LL-NDK only) access. ############################################################################### ############################################################################### [vendor] [vendor] additional.namespaces = runtime,system,vndk%VNDK_IN_SYSTEM_NS% additional.namespaces = runtime,system,neuralnetworks,vndk%VNDK_IN_SYSTEM_NS% ############################################################################### ############################################################################### # "default" namespace # "default" namespace Loading Loading @@ -436,7 +472,7 @@ namespace.default.asan.permitted.paths += /odm namespace.default.asan.permitted.paths += /data/asan/vendor namespace.default.asan.permitted.paths += /data/asan/vendor namespace.default.asan.permitted.paths += /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.runtime.shared_libs = %SANITIZER_RUNTIME_LIBRARIES% namespace.default.link.system.shared_libs = %LLNDK_LIBRARIES% namespace.default.link.system.shared_libs = %LLNDK_LIBRARIES% namespace.default.link.system.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% namespace.default.link.system.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% Loading @@ -444,6 +480,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_SAMEPROCESS_LIBRARIES% namespace.default.link.vndk.shared_libs += %VNDK_CORE_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 # "runtime" APEX namespace # # Loading @@ -459,6 +498,7 @@ namespace.runtime.links = system # classloader-namespace for oat files, and tighten this up. # classloader-namespace for oat files, and tighten this up. namespace.runtime.link.system.allow_all_shared_libs = true namespace.runtime.link.system.allow_all_shared_libs = true ############################################################################### ############################################################################### # "vndk" namespace # "vndk" namespace # # Loading Loading @@ -492,7 +532,7 @@ namespace.vndk.asan.search.paths += /system/${LIB}/vndk%VNDK_VER% # Android releases. The links here should be identical to that of the # 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, except for the link between 'vndk' and # 'vndk_in_system'. # '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 = %LLNDK_LIBRARIES% namespace.vndk.link.system.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% namespace.vndk.link.system.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% Loading @@ -503,6 +543,9 @@ namespace.vndk.link.runtime.shared_libs = %SANITIZER_RUNTIME_LIBRARIES% namespace.vndk.link.vndk_in_system.shared_libs = %VNDK_USING_CORE_VARIANT_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 # "system" namespace # # Loading Loading @@ -572,14 +615,34 @@ namespace.vndk_in_system.whitelisted = %VNDK_USING_CORE_VARIANT_LIBRARIES% # 1. 'vndk_in_system' needs to be freely linked back to 'vndk'. # 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 # 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. # 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.runtime.shared_libs = %SANITIZER_RUNTIME_LIBRARIES% namespace.vndk_in_system.link.system.shared_libs = %LLNDK_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.system.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% namespace.vndk_in_system.link.vndk.allow_all_shared_libs = true 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 # Namespace config for native tests that need access to both system and vendor Loading @@ -588,7 +651,7 @@ namespace.vndk_in_system.link.vndk.allow_all_shared_libs = true # includes the requisite namespace setup for APEXes. # includes the requisite namespace setup for APEXes. ############################################################################### ############################################################################### [unrestricted] [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 # Visible to allow links to be created at runtime, e.g. through # android_link_namespaces in libnativeloader. # android_link_namespaces in libnativeloader. Loading @@ -606,7 +669,7 @@ namespace.default.asan.search.paths += /data/asan/vendor/${LIB} namespace.default.asan.search.paths += /vendor/${LIB} namespace.default.asan.search.paths += /vendor/${LIB} # Keep in sync with the "platform" namespace in art/build/apex/ld.config.txt. # 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 = libandroidicu.so namespace.default.link.runtime.shared_libs += libdexfile_external.so namespace.default.link.runtime.shared_libs += libdexfile_external.so namespace.default.link.runtime.shared_libs += libdexfiled_external.so namespace.default.link.runtime.shared_libs += libdexfiled_external.so Loading @@ -622,6 +685,7 @@ namespace.default.link.runtime.shared_libs += libpac.so namespace.default.link.runtime.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% namespace.default.link.runtime.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% namespace.default.link.resolv.shared_libs = libnetd_resolv.so namespace.default.link.resolv.shared_libs = libnetd_resolv.so namespace.default.link.neuralnetworks.shared_libs = libneuralnetworks.so ############################################################################### ############################################################################### # "runtime" APEX namespace # "runtime" APEX namespace Loading Loading @@ -655,12 +719,16 @@ namespace.media.asan.search.paths = /apex/com.android.media/${LIB} namespace.media.permitted.paths = /apex/com.android.media/${LIB}/extractors namespace.media.permitted.paths = /apex/com.android.media/${LIB}/extractors namespace.media.asan.permitted.paths = /apex/com.android.media/${LIB}/extractors namespace.media.asan.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 = %LLNDK_LIBRARIES% namespace.media.link.default.shared_libs += libbinder_ndk.so namespace.media.link.default.shared_libs += libbinder_ndk.so namespace.media.link.default.shared_libs += libmediametrics.so namespace.media.link.default.shared_libs += libmediametrics.so namespace.media.link.default.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% 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 # "conscrypt" APEX namespace # # Loading Loading @@ -696,6 +764,25 @@ namespace.resolv.link.default.shared_libs += libdl.so namespace.resolv.link.default.shared_libs += libbinder_ndk.so namespace.resolv.link.default.shared_libs += libbinder_ndk.so namespace.resolv.link.default.shared_libs += liblog.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. # Namespace config for binaries under /postinstall. Loading