Merge "Rename the runtime linker namespace following ART/Runtime APEX split."

This commit is contained in:
Treehugger Robot 2019-10-08 03:33:29 +00:00 committed by Gerrit Code Review
commit b7dee5d148
7 changed files with 105 additions and 113 deletions

View file

@ -44,7 +44,7 @@ namespace {
// vendor and system namespaces. // vendor and system namespaces.
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* kArtNamespaceName = "art";
constexpr const char* kNeuralNetworksNamespaceName = "neuralnetworks"; 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
@ -237,10 +237,10 @@ Result<NativeLoaderNamespace*> LibraryNamespaces::Create(JNIEnv* env, uint32_t t
return linked.error(); return linked.error();
} }
auto runtime_ns = NativeLoaderNamespace::GetExportedNamespace(kRuntimeNamespaceName, is_bridged); auto art_ns = NativeLoaderNamespace::GetExportedNamespace(kArtNamespaceName, is_bridged);
// Runtime apex does not exist in host, and under certain build conditions. // ART APEX does not exist on host, and under certain build conditions.
if (runtime_ns) { if (art_ns) {
linked = app_ns->Link(*runtime_ns, runtime_public_libraries()); linked = app_ns->Link(*art_ns, art_public_libraries());
if (!linked) { if (!linked) {
return linked.error(); return linked.error();
} }

View file

@ -63,10 +63,6 @@ android_namespace_t* FindExportedNamespace(const char* caller_location) {
LOG_ALWAYS_FATAL_IF((dot_index == std::string::npos), LOG_ALWAYS_FATAL_IF((dot_index == std::string::npos),
"Error finding namespace of apex: no dot in apex name %s", caller_location); "Error finding namespace of apex: no dot in apex name %s", caller_location);
std::string name = location.substr(dot_index + 1, slash_index - dot_index - 1); std::string name = location.substr(dot_index + 1, slash_index - dot_index - 1);
// TODO(b/139408016): Rename the runtime namespace to "art".
if (name == "art") {
name = "runtime";
}
android_namespace_t* boot_namespace = android_get_exported_namespace(name.c_str()); android_namespace_t* boot_namespace = android_get_exported_namespace(name.c_str());
LOG_ALWAYS_FATAL_IF((boot_namespace == nullptr), LOG_ALWAYS_FATAL_IF((boot_namespace == nullptr),
"Error finding namespace of apex: no namespace called %s", name.c_str()); "Error finding namespace of apex: no namespace called %s", name.c_str());

View file

@ -83,7 +83,7 @@ class Platform {
static std::unordered_map<std::string, Platform::mock_namespace_handle> namespaces = { static std::unordered_map<std::string, Platform::mock_namespace_handle> namespaces = {
{"platform", TO_MOCK_NAMESPACE(TO_ANDROID_NAMESPACE("platform"))}, {"platform", TO_MOCK_NAMESPACE(TO_ANDROID_NAMESPACE("platform"))},
{"default", TO_MOCK_NAMESPACE(TO_ANDROID_NAMESPACE("default"))}, {"default", TO_MOCK_NAMESPACE(TO_ANDROID_NAMESPACE("default"))},
{"runtime", TO_MOCK_NAMESPACE(TO_ANDROID_NAMESPACE("runtime"))}, {"art", TO_MOCK_NAMESPACE(TO_ANDROID_NAMESPACE("art"))},
{"sphal", TO_MOCK_NAMESPACE(TO_ANDROID_NAMESPACE("sphal"))}, {"sphal", TO_MOCK_NAMESPACE(TO_ANDROID_NAMESPACE("sphal"))},
{"vndk", TO_MOCK_NAMESPACE(TO_ANDROID_NAMESPACE("vndk"))}, {"vndk", TO_MOCK_NAMESPACE(TO_ANDROID_NAMESPACE("vndk"))},
{"neuralnetworks", TO_MOCK_NAMESPACE(TO_ANDROID_NAMESPACE("neuralnetworks"))}, {"neuralnetworks", TO_MOCK_NAMESPACE(TO_ANDROID_NAMESPACE("neuralnetworks"))},
@ -338,13 +338,13 @@ class NativeLoaderTest_Create : public NativeLoaderTest {
std::string expected_permitted_path = std::string("/data:/mnt/expand:") + permitted_path; std::string expected_permitted_path = std::string("/data:/mnt/expand:") + permitted_path;
std::string expected_parent_namespace = "platform"; std::string expected_parent_namespace = "platform";
bool expected_link_with_platform_ns = true; bool expected_link_with_platform_ns = true;
bool expected_link_with_runtime_ns = true; bool expected_link_with_art_ns = true;
bool expected_link_with_sphal_ns = !vendor_public_libraries().empty(); bool expected_link_with_sphal_ns = !vendor_public_libraries().empty();
bool expected_link_with_vndk_ns = false; bool expected_link_with_vndk_ns = false;
bool expected_link_with_default_ns = false; bool expected_link_with_default_ns = false;
bool expected_link_with_neuralnetworks_ns = true; bool expected_link_with_neuralnetworks_ns = true;
std::string expected_shared_libs_to_platform_ns = default_public_libraries(); std::string expected_shared_libs_to_platform_ns = default_public_libraries();
std::string expected_shared_libs_to_runtime_ns = runtime_public_libraries(); std::string expected_shared_libs_to_art_ns = art_public_libraries();
std::string expected_shared_libs_to_sphal_ns = vendor_public_libraries(); std::string expected_shared_libs_to_sphal_ns = vendor_public_libraries();
std::string expected_shared_libs_to_vndk_ns = vndksp_libraries(); std::string expected_shared_libs_to_vndk_ns = vndksp_libraries();
std::string expected_shared_libs_to_default_ns = default_public_libraries(); std::string expected_shared_libs_to_default_ns = default_public_libraries();
@ -368,9 +368,9 @@ class NativeLoaderTest_Create : public NativeLoaderTest {
StrEq(expected_shared_libs_to_platform_ns))) StrEq(expected_shared_libs_to_platform_ns)))
.WillOnce(Return(true)); .WillOnce(Return(true));
} }
if (expected_link_with_runtime_ns) { if (expected_link_with_art_ns) {
EXPECT_CALL(*mock, mock_link_namespaces(Eq(IsBridged()), _, NsEq("runtime"), EXPECT_CALL(*mock, mock_link_namespaces(Eq(IsBridged()), _, NsEq("art"),
StrEq(expected_shared_libs_to_runtime_ns))) StrEq(expected_shared_libs_to_art_ns)))
.WillOnce(Return(true)); .WillOnce(Return(true));
} }
if (expected_link_with_sphal_ns) { if (expected_link_with_sphal_ns) {

View file

@ -181,10 +181,10 @@ static std::string InitDefaultPublicLibraries(bool for_preload) {
return android::base::Join(*sonames, ':'); return android::base::Join(*sonames, ':');
} }
// Remove the public libs in the runtime namespace. // Remove the public libs in the art namespace.
// These libs are listed in public.android.txt, but we don't want the rest of android // These libs are listed in public.android.txt, but we don't want the rest of android
// in default namespace to dlopen the libs. // in default namespace to dlopen the libs.
// For example, libicuuc.so is exposed to classloader namespace from runtime namespace. // For example, libicuuc.so is exposed to classloader namespace from art namespace.
// Unfortunately, it does not have stable C symbols, and default namespace should only use // Unfortunately, it does not have stable C symbols, and default namespace should only use
// stable symbols in libandroidicu.so. http://b/120786417 // stable symbols in libandroidicu.so. http://b/120786417
for (const std::string& lib_name : kArtApexPublicLibraries) { for (const std::string& lib_name : kArtApexPublicLibraries) {
@ -281,7 +281,7 @@ const std::string& default_public_libraries() {
return list; return list;
} }
const std::string& runtime_public_libraries() { const std::string& art_public_libraries() {
static std::string list = InitArtPublicLibraries(); static std::string list = InitArtPublicLibraries();
return list; return list;
} }

View file

@ -29,7 +29,7 @@ using android::base::Result;
// e.g., if it is a vendor app or not, different set of libraries are made available. // e.g., if it is a vendor app or not, different set of libraries are made available.
const std::string& preloadable_public_libraries(); const std::string& preloadable_public_libraries();
const std::string& default_public_libraries(); const std::string& default_public_libraries();
const std::string& runtime_public_libraries(); const std::string& art_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& neuralnetworks_public_libraries();

View file

@ -42,29 +42,29 @@ namespace.default.asan.search.paths += /odm/${LIB}
# APEX related namespaces. # APEX related namespaces.
############################################################################### ###############################################################################
additional.namespaces = runtime,conscrypt,media,neuralnetworks,resolv additional.namespaces = art,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
# cannot be loaded into the default namespace, the dynamic linker tries # cannot be loaded into the default namespace, the dynamic linker tries
# to load the shared library from the runtime namespace. And then, if the # to load the shared library from the art namespace. And then, if the
# shared library cannot be loaded from the runtime namespace either, the # shared library cannot be loaded from the art 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,neuralnetworks namespace.default.links = art,resolv,neuralnetworks
namespace.default.asan.links = runtime,resolv,neuralnetworks namespace.default.asan.links = art,resolv,neuralnetworks
namespace.default.link.runtime.shared_libs = libandroidicu.so namespace.default.link.art.shared_libs = libandroidicu.so
namespace.default.link.runtime.shared_libs += libdexfile_external.so namespace.default.link.art.shared_libs += libdexfile_external.so
namespace.default.link.runtime.shared_libs += libdexfiled_external.so namespace.default.link.art.shared_libs += libdexfiled_external.so
# TODO(b/120786417 or b/134659294): libicuuc.so and libicui18n.so are kept for app compat. # TODO(b/120786417 or b/134659294): libicuuc.so and libicui18n.so are kept for app compat.
namespace.default.link.runtime.shared_libs += libicui18n.so namespace.default.link.art.shared_libs += libicui18n.so
namespace.default.link.runtime.shared_libs += libicuuc.so namespace.default.link.art.shared_libs += libicuuc.so
namespace.default.link.runtime.shared_libs += libnativebridge.so namespace.default.link.art.shared_libs += libnativebridge.so
namespace.default.link.runtime.shared_libs += libnativehelper.so namespace.default.link.art.shared_libs += libnativehelper.so
namespace.default.link.runtime.shared_libs += libnativeloader.so namespace.default.link.art.shared_libs += libnativeloader.so
# TODO(b/122876336): Remove libpac.so once it's migrated to Webview # TODO(b/122876336): Remove libpac.so once it's migrated to Webview
namespace.default.link.runtime.shared_libs += libpac.so namespace.default.link.art.shared_libs += libpac.so
# When libnetd_resolv.so can't be found in the default namespace, search for it # When libnetd_resolv.so can't be found in the default namespace, search for it
# in the resolv namespace. Don't allow any other libraries from the resolv namespace # in the resolv namespace. Don't allow any other libraries from the resolv namespace
@ -75,25 +75,24 @@ namespace.default.link.resolv.shared_libs = libnetd_resolv.so
namespace.default.link.neuralnetworks.shared_libs = libneuralnetworks.so namespace.default.link.neuralnetworks.shared_libs = libneuralnetworks.so
############################################################################### ###############################################################################
# "runtime" APEX namespace # "art" APEX namespace
# #
# This namespace exposes externally accessible libraries from the Runtime APEX. # This namespace exposes externally accessible libraries from the ART APEX.
# Keep in sync with the "runtime" namespace in art/build/apex/ld.config.txt. # Keep in sync with the "art" namespace in art/build/apex/ld.config.txt.
############################################################################### ###############################################################################
# TODO(b/139408016): Rename this namespace to "art". namespace.art.isolated = true
namespace.runtime.isolated = true
# 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.
namespace.runtime.visible = true namespace.art.visible = true
namespace.runtime.search.paths = /apex/com.android.art/${LIB} namespace.art.search.paths = /apex/com.android.art/${LIB}
namespace.runtime.asan.search.paths = /apex/com.android.art/${LIB} namespace.art.asan.search.paths = /apex/com.android.art/${LIB}
namespace.runtime.links = default namespace.art.links = default
# Need allow_all_shared_libs because libart.so can dlopen oat files in # Need allow_all_shared_libs because libart.so can dlopen oat files in
# /system/framework and /data. # /system/framework and /data.
# TODO(b/130340935): Use a dynamically created linker namespace similar to # TODO(b/130340935): Use a dynamically created linker namespace similar to
# classloader-namespace for oat files, and tighten this up. # classloader-namespace for oat files, and tighten this up.
namespace.runtime.link.default.allow_all_shared_libs = true namespace.art.link.default.allow_all_shared_libs = true
############################################################################### ###############################################################################
# "media" APEX namespace # "media" APEX namespace
@ -136,8 +135,8 @@ namespace.conscrypt.visible = true
namespace.conscrypt.search.paths = /apex/com.android.conscrypt/${LIB} namespace.conscrypt.search.paths = /apex/com.android.conscrypt/${LIB}
namespace.conscrypt.asan.search.paths = /apex/com.android.conscrypt/${LIB} namespace.conscrypt.asan.search.paths = /apex/com.android.conscrypt/${LIB}
namespace.conscrypt.links = runtime,default namespace.conscrypt.links = art,default
namespace.conscrypt.link.runtime.shared_libs = libandroidio.so namespace.conscrypt.link.art.shared_libs = libandroidio.so
namespace.conscrypt.link.default.shared_libs = libc.so namespace.conscrypt.link.default.shared_libs = libc.so
namespace.conscrypt.link.default.shared_libs += libm.so namespace.conscrypt.link.default.shared_libs += libm.so
namespace.conscrypt.link.default.shared_libs += libdl.so namespace.conscrypt.link.default.shared_libs += libdl.so

View file

@ -35,7 +35,7 @@ dir.postinstall = /postinstall
dir.system = /data dir.system = /data
[system] [system]
additional.namespaces = runtime,conscrypt,media,neuralnetworks,resolv,sphal,vndk,rs additional.namespaces = art,conscrypt,media,neuralnetworks,resolv,sphal,vndk,rs
############################################################################### ###############################################################################
# "default" namespace # "default" namespace
@ -68,23 +68,23 @@ 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.
# If a shared library or an executable requests a shared library that # If a shared library or an executable requests a shared library that
# cannot be loaded into the default namespace, the dynamic linker tries # cannot be loaded into the default namespace, the dynamic linker tries
# to load the shared library from the runtime namespace. And then, if the # to load the shared library from the art namespace. And then, if the
# shared library cannot be loaded from the runtime namespace either, the # shared library cannot be loaded from the art 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,neuralnetworks namespace.default.links = art,resolv,neuralnetworks
namespace.default.link.runtime.shared_libs = libandroidicu.so namespace.default.link.art.shared_libs = libandroidicu.so
namespace.default.link.runtime.shared_libs += libdexfile_external.so namespace.default.link.art.shared_libs += libdexfile_external.so
namespace.default.link.runtime.shared_libs += libdexfiled_external.so namespace.default.link.art.shared_libs += libdexfiled_external.so
# TODO(b/120786417 or b/134659294): libicuuc.so and libicui18n.so are kept for app compat. # TODO(b/120786417 or b/134659294): libicuuc.so and libicui18n.so are kept for app compat.
namespace.default.link.runtime.shared_libs += libicui18n.so namespace.default.link.art.shared_libs += libicui18n.so
namespace.default.link.runtime.shared_libs += libicuuc.so namespace.default.link.art.shared_libs += libicuuc.so
namespace.default.link.runtime.shared_libs += libnativebridge.so namespace.default.link.art.shared_libs += libnativebridge.so
namespace.default.link.runtime.shared_libs += libnativehelper.so namespace.default.link.art.shared_libs += libnativehelper.so
namespace.default.link.runtime.shared_libs += libnativeloader.so namespace.default.link.art.shared_libs += libnativeloader.so
# TODO(b/122876336): Remove libpac.so once it's migrated to Webview # TODO(b/122876336): Remove libpac.so once it's migrated to Webview
namespace.default.link.runtime.shared_libs += libpac.so namespace.default.link.art.shared_libs += libpac.so
# When libnetd_resolv.so can't be found in the default namespace, search for it # When libnetd_resolv.so can't be found in the default namespace, search for it
# in the resolv namespace. Don't allow any other libraries from the resolv namespace # in the resolv namespace. Don't allow any other libraries from the resolv namespace
@ -95,26 +95,25 @@ namespace.default.link.resolv.shared_libs = libnetd_resolv.so
namespace.default.link.neuralnetworks.shared_libs = libneuralnetworks.so namespace.default.link.neuralnetworks.shared_libs = libneuralnetworks.so
############################################################################### ###############################################################################
# "runtime" APEX namespace # "art" APEX namespace
# #
# This namespace pulls in externally accessible libs from the Runtime APEX. # This namespace pulls in externally accessible libs from the ART APEX.
# Keep in sync with the "runtime" namespace in art/build/apex/ld.config.txt. # Keep in sync with the "art" namespace in art/build/apex/ld.config.txt.
############################################################################### ###############################################################################
# TODO(b/139408016): Rename this namespace to "art". namespace.art.isolated = true
namespace.runtime.isolated = true
# 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.
namespace.runtime.visible = true namespace.art.visible = true
namespace.runtime.search.paths = /apex/com.android.art/${LIB} namespace.art.search.paths = /apex/com.android.art/${LIB}
namespace.runtime.asan.search.paths = /apex/com.android.art/${LIB} namespace.art.asan.search.paths = /apex/com.android.art/${LIB}
namespace.runtime.links = default,neuralnetworks namespace.art.links = default,neuralnetworks
# Need allow_all_shared_libs because libart.so can dlopen oat files in # Need allow_all_shared_libs because libart.so can dlopen oat files in
# /system/framework and /data. # /system/framework and /data.
# TODO(b/130340935): Use a dynamically created linker namespace similar to # TODO(b/130340935): Use a dynamically created linker namespace similar to
# classloader-namespace for oat files, and tighten this up. # classloader-namespace for oat files, and tighten this up.
namespace.runtime.link.default.allow_all_shared_libs = true namespace.art.link.default.allow_all_shared_libs = true
namespace.runtime.link.neuralnetworks.shared_libs = libneuralnetworks.so namespace.art.link.neuralnetworks.shared_libs = libneuralnetworks.so
############################################################################### ###############################################################################
# "media" APEX namespace # "media" APEX namespace
@ -149,8 +148,8 @@ namespace.conscrypt.visible = true
namespace.conscrypt.search.paths = /apex/com.android.conscrypt/${LIB} namespace.conscrypt.search.paths = /apex/com.android.conscrypt/${LIB}
namespace.conscrypt.asan.search.paths = /apex/com.android.conscrypt/${LIB} namespace.conscrypt.asan.search.paths = /apex/com.android.conscrypt/${LIB}
namespace.conscrypt.links = runtime,default namespace.conscrypt.links = art,default
namespace.conscrypt.link.runtime.shared_libs = libandroidio.so namespace.conscrypt.link.art.shared_libs = libandroidio.so
namespace.conscrypt.link.default.shared_libs = libc.so namespace.conscrypt.link.default.shared_libs = libc.so
namespace.conscrypt.link.default.shared_libs += libm.so namespace.conscrypt.link.default.shared_libs += libm.so
namespace.conscrypt.link.default.shared_libs += libdl.so namespace.conscrypt.link.default.shared_libs += libdl.so
@ -357,7 +356,7 @@ namespace.neuralnetworks.link.default.shared_libs += libvndksupport.so
# (LL-NDK only) access. # (LL-NDK only) access.
############################################################################### ###############################################################################
[vendor] [vendor]
additional.namespaces = runtime,neuralnetworks additional.namespaces = art,neuralnetworks
namespace.default.isolated = false namespace.default.isolated = false
@ -399,36 +398,35 @@ namespace.default.asan.search.paths += /%PRODUCT%/${LIB}
namespace.default.asan.search.paths += /data/asan/system/${LIB}/vndk%VNDK_VER% namespace.default.asan.search.paths += /data/asan/system/${LIB}/vndk%VNDK_VER%
namespace.default.asan.search.paths += /system/${LIB}/vndk%VNDK_VER% namespace.default.asan.search.paths += /system/${LIB}/vndk%VNDK_VER%
namespace.default.links = runtime,neuralnetworks namespace.default.links = art,neuralnetworks
namespace.default.link.runtime.shared_libs = libdexfile_external.so namespace.default.link.art.shared_libs = libdexfile_external.so
namespace.default.link.runtime.shared_libs += libdexfiled_external.so namespace.default.link.art.shared_libs += libdexfiled_external.so
# TODO(b/120786417 or b/134659294): libicuuc.so and libicui18n.so are kept for app compat. # TODO(b/120786417 or b/134659294): libicuuc.so and libicui18n.so are kept for app compat.
namespace.default.link.runtime.shared_libs += libicui18n.so namespace.default.link.art.shared_libs += libicui18n.so
namespace.default.link.runtime.shared_libs += libicuuc.so namespace.default.link.art.shared_libs += libicuuc.so
namespace.default.link.runtime.shared_libs += libnativebridge.so namespace.default.link.art.shared_libs += libnativebridge.so
namespace.default.link.runtime.shared_libs += libnativehelper.so namespace.default.link.art.shared_libs += libnativehelper.so
namespace.default.link.runtime.shared_libs += libnativeloader.so namespace.default.link.art.shared_libs += libnativeloader.so
# Workaround for b/124772622 # Workaround for b/124772622
namespace.default.link.runtime.shared_libs += libandroidicu.so namespace.default.link.art.shared_libs += libandroidicu.so
# LLNDK library moved into apex # LLNDK library moved into apex
namespace.default.link.neuralnetworks.shared_libs = libneuralnetworks.so namespace.default.link.neuralnetworks.shared_libs = libneuralnetworks.so
############################################################################### ###############################################################################
# "runtime" APEX namespace # "art" APEX namespace
# #
# This namespace exposes externally accessible libraries from the Runtime APEX. # This namespace exposes externally accessible libraries from the ART APEX.
# Keep in sync with the "runtime" namespace in art/build/apex/ld.config.txt. # Keep in sync with the "art" namespace in art/build/apex/ld.config.txt.
############################################################################### ###############################################################################
# TODO(b/139408016): Rename this namespace to "art". namespace.art.isolated = true
namespace.runtime.isolated = true
namespace.runtime.search.paths = /apex/com.android.art/${LIB} namespace.art.search.paths = /apex/com.android.art/${LIB}
namespace.runtime.asan.search.paths = /apex/com.android.art/${LIB} namespace.art.asan.search.paths = /apex/com.android.art/${LIB}
namespace.runtime.links = default namespace.art.links = default
# TODO(b/130340935): Use a dynamically created linker namespace similar to # TODO(b/130340935): Use a dynamically created linker namespace similar to
# classloader-namespace for oat files, and tighten this up. # classloader-namespace for oat files, and tighten this up.
namespace.runtime.link.default.allow_all_shared_libs = true namespace.art.link.default.allow_all_shared_libs = true
############################################################################### ###############################################################################
# "neuralnetworks" APEX namespace # "neuralnetworks" APEX namespace
@ -459,7 +457,7 @@ namespace.neuralnetworks.link.default.shared_libs += libvndksupport.so
# includes the requisite namespace setup for APEXes. # includes the requisite namespace setup for APEXes.
############################################################################### ###############################################################################
[unrestricted] [unrestricted]
additional.namespaces = runtime,media,conscrypt,resolv,neuralnetworks additional.namespaces = art,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.
@ -477,20 +475,20 @@ 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,neuralnetworks namespace.default.links = art,resolv,neuralnetworks
namespace.default.link.runtime.shared_libs = libandroidicu.so namespace.default.link.art.shared_libs = libandroidicu.so
namespace.default.link.runtime.shared_libs += libdexfile_external.so namespace.default.link.art.shared_libs += libdexfile_external.so
namespace.default.link.runtime.shared_libs += libdexfiled_external.so namespace.default.link.art.shared_libs += libdexfiled_external.so
# TODO(b/120786417 or b/134659294): libicuuc.so and libicui18n.so are kept for app compat. # TODO(b/120786417 or b/134659294): libicuuc.so and libicui18n.so are kept for app compat.
namespace.default.link.runtime.shared_libs += libicui18n.so namespace.default.link.art.shared_libs += libicui18n.so
namespace.default.link.runtime.shared_libs += libicuuc.so namespace.default.link.art.shared_libs += libicuuc.so
namespace.default.link.runtime.shared_libs += libnativebridge.so namespace.default.link.art.shared_libs += libnativebridge.so
namespace.default.link.runtime.shared_libs += libnativehelper.so namespace.default.link.art.shared_libs += libnativehelper.so
namespace.default.link.runtime.shared_libs += libnativeloader.so namespace.default.link.art.shared_libs += libnativeloader.so
# TODO(b/122876336): Remove libpac.so once it's migrated to Webview # TODO(b/122876336): Remove libpac.so once it's migrated to Webview
namespace.default.link.runtime.shared_libs += libpac.so namespace.default.link.art.shared_libs += libpac.so
namespace.default.link.runtime.shared_libs += %SANITIZER_RUNTIME_LIBRARIES% namespace.default.link.art.shared_libs += %SANITIZER_RUNTIME_LIBRARIES%
namespace.default.link.resolv.shared_libs = libnetd_resolv.so namespace.default.link.resolv.shared_libs = libnetd_resolv.so
@ -498,20 +496,19 @@ namespace.default.link.resolv.shared_libs = libnetd_resolv.so
namespace.default.link.neuralnetworks.shared_libs = libneuralnetworks.so namespace.default.link.neuralnetworks.shared_libs = libneuralnetworks.so
############################################################################### ###############################################################################
# "runtime" APEX namespace # "art" APEX namespace
# #
# This namespace exposes externally accessible libraries from the Runtime APEX. # This namespace exposes externally accessible libraries from the ART APEX.
# Keep in sync with the "runtime" namespace in art/build/apex/ld.config.txt. # Keep in sync with the "art" namespace in art/build/apex/ld.config.txt.
############################################################################### ###############################################################################
# TODO(b/139408016): Rename this namespace to "art". namespace.art.isolated = true
namespace.runtime.isolated = true
# 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.
namespace.runtime.visible = true namespace.art.visible = true
namespace.runtime.search.paths = /apex/com.android.art/${LIB} namespace.art.search.paths = /apex/com.android.art/${LIB}
namespace.runtime.asan.search.paths = /apex/com.android.art/${LIB} namespace.art.asan.search.paths = /apex/com.android.art/${LIB}
namespace.runtime.links = default namespace.art.links = default
# TODO(b/130340935): Use a dynamically created linker namespace similar to # TODO(b/130340935): Use a dynamically created linker namespace similar to
# classloader-namespace for oat files, and tighten this up. # classloader-namespace for oat files, and tighten this up.
@ -548,8 +545,8 @@ namespace.conscrypt.visible = true
namespace.conscrypt.search.paths = /apex/com.android.conscrypt/${LIB} namespace.conscrypt.search.paths = /apex/com.android.conscrypt/${LIB}
namespace.conscrypt.asan.search.paths = /apex/com.android.conscrypt/${LIB} namespace.conscrypt.asan.search.paths = /apex/com.android.conscrypt/${LIB}
namespace.conscrypt.links = runtime,default namespace.conscrypt.links = art,default
namespace.conscrypt.link.runtime.shared_libs = libandroidio.so namespace.conscrypt.link.art.shared_libs = libandroidio.so
namespace.conscrypt.link.default.shared_libs = libc.so namespace.conscrypt.link.default.shared_libs = libc.so
namespace.conscrypt.link.default.shared_libs += libm.so namespace.conscrypt.link.default.shared_libs += libm.so
namespace.conscrypt.link.default.shared_libs += libdl.so namespace.conscrypt.link.default.shared_libs += libdl.so