From bd7e51956aa00c3347fdd266e2fef8ecb140a707 Mon Sep 17 00:00:00 2001 From: Jooyung Han Date: Fri, 6 Nov 2020 10:18:03 +0900 Subject: [PATCH] JNI libs should be visible to ART namespace JNI libs from apexes should be visible for libnativeloader to load them. Bug: 172541385 Bug: 150767721 Bug: 172689934 Test: linkerconfig_diff_test Test: loading jni libs from apexes Change-Id: Ie6cd53fb0aef78132dccc4398270884f4455804b --- contents/section/apexart.cc | 8 +++----- .../legacy/com.android.art/ld.config.txt | 23 +++++++++++++++++++++- .../product-enabled/com.android.art/ld.config.txt | 23 +++++++++++++++++++++- .../stage2/com.android.art/ld.config.txt | 23 +++++++++++++++++++++- 4 files changed, 69 insertions(+), 8 deletions(-) diff --git a/contents/section/apexart.cc b/contents/section/apexart.cc index 897d7d9..cc438e6 100644 --- a/contents/section/apexart.cc +++ b/contents/section/apexart.cc @@ -38,13 +38,11 @@ Section BuildApexArtSection(Context& ctx, const ApexInfo& apex_info) { namespaces.emplace_back(BuildApexPlatformNamespace(ctx)); namespaces.emplace_back(BuildArtNamespace(ctx, apex_info)); - std::set visible_apexes{ - "com.android.conscrypt", - }; + std::set visible_apexes; - // APEXes with public libs should be visible + // APEXes with JNI libs or public libs should be visible for (const auto& apex : ctx.GetApexModules()) { - if (apex.public_libs.size() > 0) { + if (apex.jni_libs.size() > 0 || apex.public_libs.size() > 0) { visible_apexes.insert(apex.name); } } diff --git a/testdata/golden_output/legacy/com.android.art/ld.config.txt b/testdata/golden_output/legacy/com.android.art/ld.config.txt index 87836f1..68f9d52 100644 --- a/testdata/golden_output/legacy/com.android.art/ld.config.txt +++ b/testdata/golden_output/legacy/com.android.art/ld.config.txt @@ -1,6 +1,6 @@ dir.com.android.art = /apex/com.android.art/bin [com.android.art] -additional.namespaces = com_android_adbd,com_android_art,com_android_conscrypt,com_android_i18n,com_android_media,com_android_neuralnetworks,com_android_os_statsd,com_android_resolv,com_android_runtime,system +additional.namespaces = com_android_adbd,com_android_art,com_android_conscrypt,com_android_cronet,com_android_i18n,com_android_media,com_android_neuralnetworks,com_android_os_statsd,com_android_resolv,com_android_runtime,system namespace.default.isolated = true namespace.default.links = com_android_art,system,com_android_adbd namespace.default.link.com_android_art.allow_all_shared_libs = true @@ -71,6 +71,26 @@ namespace.com_android_conscrypt.link.system.shared_libs += libdl.so namespace.com_android_conscrypt.link.system.shared_libs += libdl_android.so namespace.com_android_conscrypt.link.system.shared_libs += libm.so namespace.com_android_conscrypt.link.system.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.asan-i686-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.hwasan-i686-android.so:libclang_rt.tsan-arm-android.so:libclang_rt.tsan-i686-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.ubsan_standalone-i686-android.so +namespace.com_android_cronet.isolated = true +namespace.com_android_cronet.visible = true +namespace.com_android_cronet.search.paths = /apex/com.android.cronet/${LIB} +namespace.com_android_cronet.permitted.paths = /apex/com.android.cronet/${LIB} +namespace.com_android_cronet.permitted.paths += /system/${LIB} +namespace.com_android_cronet.asan.search.paths = /apex/com.android.cronet/${LIB} +namespace.com_android_cronet.asan.permitted.paths = /apex/com.android.cronet/${LIB} +namespace.com_android_cronet.asan.permitted.paths += /data/asan/system/${LIB} +namespace.com_android_cronet.asan.permitted.paths += /system/${LIB} +namespace.com_android_cronet.links = system +namespace.com_android_cronet.link.system.shared_libs = libandroid.so +namespace.com_android_cronet.link.system.shared_libs += libc.so +namespace.com_android_cronet.link.system.shared_libs += libdl.so +namespace.com_android_cronet.link.system.shared_libs += liblog.so +namespace.com_android_cronet.link.system.shared_libs += libm.so +namespace.com_android_cronet.link.system.shared_libs += libc.so +namespace.com_android_cronet.link.system.shared_libs += libdl.so +namespace.com_android_cronet.link.system.shared_libs += libdl_android.so +namespace.com_android_cronet.link.system.shared_libs += libm.so +namespace.com_android_cronet.link.system.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.asan-i686-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.hwasan-i686-android.so:libclang_rt.tsan-arm-android.so:libclang_rt.tsan-i686-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.ubsan_standalone-i686-android.so namespace.com_android_i18n.isolated = true namespace.com_android_i18n.visible = true namespace.com_android_i18n.search.paths = /apex/com.android.i18n/${LIB} @@ -137,6 +157,7 @@ namespace.com_android_neuralnetworks.link.system.shared_libs += libdl_android.so namespace.com_android_neuralnetworks.link.system.shared_libs += libm.so namespace.com_android_neuralnetworks.link.system.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.asan-i686-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.hwasan-i686-android.so:libclang_rt.tsan-arm-android.so:libclang_rt.tsan-i686-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.ubsan_standalone-i686-android.so namespace.com_android_os_statsd.isolated = true +namespace.com_android_os_statsd.visible = true namespace.com_android_os_statsd.search.paths = /apex/com.android.os.statsd/${LIB} namespace.com_android_os_statsd.permitted.paths = /apex/com.android.os.statsd/${LIB} namespace.com_android_os_statsd.permitted.paths += /system/${LIB} diff --git a/testdata/golden_output/product-enabled/com.android.art/ld.config.txt b/testdata/golden_output/product-enabled/com.android.art/ld.config.txt index 3c4e5fd..992a5f0 100644 --- a/testdata/golden_output/product-enabled/com.android.art/ld.config.txt +++ b/testdata/golden_output/product-enabled/com.android.art/ld.config.txt @@ -1,6 +1,6 @@ dir.com.android.art = /apex/com.android.art/bin [com.android.art] -additional.namespaces = com_android_adbd,com_android_art,com_android_conscrypt,com_android_i18n,com_android_media,com_android_neuralnetworks,com_android_os_statsd,com_android_resolv,com_android_runtime,system +additional.namespaces = com_android_adbd,com_android_art,com_android_conscrypt,com_android_cronet,com_android_i18n,com_android_media,com_android_neuralnetworks,com_android_os_statsd,com_android_resolv,com_android_runtime,system namespace.default.isolated = true namespace.default.links = com_android_art,system,com_android_adbd namespace.default.link.com_android_art.allow_all_shared_libs = true @@ -71,6 +71,26 @@ namespace.com_android_conscrypt.link.system.shared_libs += libdl.so namespace.com_android_conscrypt.link.system.shared_libs += libdl_android.so namespace.com_android_conscrypt.link.system.shared_libs += libm.so namespace.com_android_conscrypt.link.system.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.asan-i686-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.hwasan-i686-android.so:libclang_rt.tsan-arm-android.so:libclang_rt.tsan-i686-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.ubsan_standalone-i686-android.so +namespace.com_android_cronet.isolated = true +namespace.com_android_cronet.visible = true +namespace.com_android_cronet.search.paths = /apex/com.android.cronet/${LIB} +namespace.com_android_cronet.permitted.paths = /apex/com.android.cronet/${LIB} +namespace.com_android_cronet.permitted.paths += /system/${LIB} +namespace.com_android_cronet.asan.search.paths = /apex/com.android.cronet/${LIB} +namespace.com_android_cronet.asan.permitted.paths = /apex/com.android.cronet/${LIB} +namespace.com_android_cronet.asan.permitted.paths += /data/asan/system/${LIB} +namespace.com_android_cronet.asan.permitted.paths += /system/${LIB} +namespace.com_android_cronet.links = system +namespace.com_android_cronet.link.system.shared_libs = libandroid.so +namespace.com_android_cronet.link.system.shared_libs += libc.so +namespace.com_android_cronet.link.system.shared_libs += libdl.so +namespace.com_android_cronet.link.system.shared_libs += liblog.so +namespace.com_android_cronet.link.system.shared_libs += libm.so +namespace.com_android_cronet.link.system.shared_libs += libc.so +namespace.com_android_cronet.link.system.shared_libs += libdl.so +namespace.com_android_cronet.link.system.shared_libs += libdl_android.so +namespace.com_android_cronet.link.system.shared_libs += libm.so +namespace.com_android_cronet.link.system.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.asan-i686-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.hwasan-i686-android.so:libclang_rt.tsan-arm-android.so:libclang_rt.tsan-i686-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.ubsan_standalone-i686-android.so namespace.com_android_i18n.isolated = true namespace.com_android_i18n.visible = true namespace.com_android_i18n.search.paths = /apex/com.android.i18n/${LIB} @@ -137,6 +157,7 @@ namespace.com_android_neuralnetworks.link.system.shared_libs += libdl_android.so namespace.com_android_neuralnetworks.link.system.shared_libs += libm.so namespace.com_android_neuralnetworks.link.system.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.asan-i686-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.hwasan-i686-android.so:libclang_rt.tsan-arm-android.so:libclang_rt.tsan-i686-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.ubsan_standalone-i686-android.so namespace.com_android_os_statsd.isolated = true +namespace.com_android_os_statsd.visible = true namespace.com_android_os_statsd.search.paths = /apex/com.android.os.statsd/${LIB} namespace.com_android_os_statsd.permitted.paths = /apex/com.android.os.statsd/${LIB} namespace.com_android_os_statsd.permitted.paths += /system/${LIB} diff --git a/testdata/golden_output/stage2/com.android.art/ld.config.txt b/testdata/golden_output/stage2/com.android.art/ld.config.txt index 87836f1..68f9d52 100644 --- a/testdata/golden_output/stage2/com.android.art/ld.config.txt +++ b/testdata/golden_output/stage2/com.android.art/ld.config.txt @@ -1,6 +1,6 @@ dir.com.android.art = /apex/com.android.art/bin [com.android.art] -additional.namespaces = com_android_adbd,com_android_art,com_android_conscrypt,com_android_i18n,com_android_media,com_android_neuralnetworks,com_android_os_statsd,com_android_resolv,com_android_runtime,system +additional.namespaces = com_android_adbd,com_android_art,com_android_conscrypt,com_android_cronet,com_android_i18n,com_android_media,com_android_neuralnetworks,com_android_os_statsd,com_android_resolv,com_android_runtime,system namespace.default.isolated = true namespace.default.links = com_android_art,system,com_android_adbd namespace.default.link.com_android_art.allow_all_shared_libs = true @@ -71,6 +71,26 @@ namespace.com_android_conscrypt.link.system.shared_libs += libdl.so namespace.com_android_conscrypt.link.system.shared_libs += libdl_android.so namespace.com_android_conscrypt.link.system.shared_libs += libm.so namespace.com_android_conscrypt.link.system.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.asan-i686-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.hwasan-i686-android.so:libclang_rt.tsan-arm-android.so:libclang_rt.tsan-i686-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.ubsan_standalone-i686-android.so +namespace.com_android_cronet.isolated = true +namespace.com_android_cronet.visible = true +namespace.com_android_cronet.search.paths = /apex/com.android.cronet/${LIB} +namespace.com_android_cronet.permitted.paths = /apex/com.android.cronet/${LIB} +namespace.com_android_cronet.permitted.paths += /system/${LIB} +namespace.com_android_cronet.asan.search.paths = /apex/com.android.cronet/${LIB} +namespace.com_android_cronet.asan.permitted.paths = /apex/com.android.cronet/${LIB} +namespace.com_android_cronet.asan.permitted.paths += /data/asan/system/${LIB} +namespace.com_android_cronet.asan.permitted.paths += /system/${LIB} +namespace.com_android_cronet.links = system +namespace.com_android_cronet.link.system.shared_libs = libandroid.so +namespace.com_android_cronet.link.system.shared_libs += libc.so +namespace.com_android_cronet.link.system.shared_libs += libdl.so +namespace.com_android_cronet.link.system.shared_libs += liblog.so +namespace.com_android_cronet.link.system.shared_libs += libm.so +namespace.com_android_cronet.link.system.shared_libs += libc.so +namespace.com_android_cronet.link.system.shared_libs += libdl.so +namespace.com_android_cronet.link.system.shared_libs += libdl_android.so +namespace.com_android_cronet.link.system.shared_libs += libm.so +namespace.com_android_cronet.link.system.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.asan-i686-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.hwasan-i686-android.so:libclang_rt.tsan-arm-android.so:libclang_rt.tsan-i686-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.ubsan_standalone-i686-android.so namespace.com_android_i18n.isolated = true namespace.com_android_i18n.visible = true namespace.com_android_i18n.search.paths = /apex/com.android.i18n/${LIB} @@ -137,6 +157,7 @@ namespace.com_android_neuralnetworks.link.system.shared_libs += libdl_android.so namespace.com_android_neuralnetworks.link.system.shared_libs += libm.so namespace.com_android_neuralnetworks.link.system.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.asan-i686-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.hwasan-i686-android.so:libclang_rt.tsan-arm-android.so:libclang_rt.tsan-i686-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.ubsan_standalone-i686-android.so namespace.com_android_os_statsd.isolated = true +namespace.com_android_os_statsd.visible = true namespace.com_android_os_statsd.search.paths = /apex/com.android.os.statsd/${LIB} namespace.com_android_os_statsd.permitted.paths = /apex/com.android.os.statsd/${LIB} namespace.com_android_os_statsd.permitted.paths += /system/${LIB} -- 2.11.0