diff options
author | Jooyung Han <jooyung@google.com> | 2024-04-18 10:41:52 +0900 |
---|---|---|
committer | Jooyung Han <jooyung@google.com> | 2024-04-18 02:11:24 +0000 |
commit | 8ebf897a0a80fa5ec62d2dcc7c362c1fbd9ce1e8 (patch) | |
tree | e74b564985a46095c68c70ef3c71405efa187fca | |
parent | 420b2ae390beacf88aea5599eacb4525ec32dc37 (diff) | |
download | linkerconfig-8ebf897a0a80fa5ec62d2dcc7c362c1fbd9ce1e8.tar.gz |
Link sanitizer LLNDK libs
Vendor/product apexes need to link sanitizer LLNDK libraries from
system. For now, vendor/product apex requires :sanitizer. But with VNDK
deprecation the requirement is missing, and vendor apex installation
fails. (Note that linkerconfig is called with --strict mode on apex
installation, which aborts when a requirement is not met)
Previously, sanitizer VNDK libs are linked from the vndk namespace and
sanitizer LLNDK libs are linked from the system namespace with
:sanitizer alias.
Now, sanitizer LLNDK is linked to vendor/product apexes.
Bug: 335491075
Bug: 329366340
Test: atest --test-mapping .
Test: atest VendorApexHostTestCases
Merged-In: I8fe57ffc21dc7cc3ea03f92a9e5cc1948b2d8c77
Change-Id: I8fe57ffc21dc7cc3ea03f92a9e5cc1948b2d8c77
6 files changed, 20 insertions, 6 deletions
diff --git a/contents/section/apexdefault.cc b/contents/section/apexdefault.cc index 0c9c5da..5c9c8c0 100644 --- a/contents/section/apexdefault.cc +++ b/contents/section/apexdefault.cc @@ -154,6 +154,16 @@ Section BuildApexDefaultSection(Context& ctx, const ApexInfo& apex_info) { std::bind(BuildVndkNamespace, ctx, user_partition), SharedLibs{{Var("VNDK_SAMEPROCESS_LIBRARIES_" + user_partition_suffix)}}, }}; + } else if (apex_info.InProduct() || apex_info.InVendor()) { + // vendor or product partitions don't need this because they link LLNDK + // libs. however, vendor/product apexes still need to link LLNDK sanitizer + // libs even though these are not listed in "required". + libs_providers[":sanitizer"] = {LibProvider{ + ctx.GetSystemNamespaceName(), + std::bind(BuildApexPlatformNamespace, + ctx), // "system" should be available + SharedLibs{{Var("SANITIZER_LIBRARIES_LLNDK")}}, + }}; } if (apex_info.InVendor()) { diff --git a/generator/variableloader.cc b/generator/variableloader.cc index 26615a5..33bdb10 100644 --- a/generator/variableloader.cc +++ b/generator/variableloader.cc @@ -156,9 +156,13 @@ void LoadLibraryListVariables(const std::string& root) { LoadLlndkLibraryListVariables(root, GetVendorVndkVersion(), "VENDOR"); LoadLlndkLibraryListVariables(root, GetProductVndkVersion(), "PRODUCT"); + auto llndk_library_path = root + "/system/etc/llndk.libraries.txt"; auto sanitizer_library_path = root + "/system/etc/sanitizer.libraries.txt"; Variables::AddValue("SANITIZER_RUNTIME_LIBRARIES", GetLibrariesString(sanitizer_library_path)); + Variables::AddValue( + "SANITIZER_LIBRARIES_LLNDK", + GetPrivateLibrariesString(sanitizer_library_path, llndk_library_path)); } } // namespace diff --git a/testdata/golden_output/deprecate_product_vndk/com.product.service1/ld.config.txt b/testdata/golden_output/deprecate_product_vndk/com.product.service1/ld.config.txt index a67ffd1..5589f8e 100644 --- a/testdata/golden_output/deprecate_product_vndk/com.product.service1/ld.config.txt +++ b/testdata/golden_output/deprecate_product_vndk/com.product.service1/ld.config.txt @@ -21,7 +21,7 @@ namespace.default.hwasan.permitted.paths += /system/${LIB} namespace.default.hwasan.permitted.paths += /system_ext/${LIB}/hwasan namespace.default.hwasan.permitted.paths += /system_ext/${LIB} namespace.default.links = system -namespace.default.link.system.shared_libs = libbinder_ndk.so:libc.so:libdl.so:liblog.so:libm.so:libdl_android.so: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.default.link.system.shared_libs = libclang_rt.asan-i686-android.so:libbinder_ndk.so:libc.so:libdl.so:liblog.so:libm.so:libdl_android.so:libclang_rt.asan-arm-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_adbd.isolated = true namespace.com_android_adbd.search.paths = /apex/com.android.adbd/${LIB} namespace.com_android_adbd.permitted.paths = /apex/com.android.adbd/${LIB} diff --git a/testdata/golden_output/deprecate_vndk/com.product.service1/ld.config.txt b/testdata/golden_output/deprecate_vndk/com.product.service1/ld.config.txt index c5371e4..47e244b 100644 --- a/testdata/golden_output/deprecate_vndk/com.product.service1/ld.config.txt +++ b/testdata/golden_output/deprecate_vndk/com.product.service1/ld.config.txt @@ -21,7 +21,7 @@ namespace.default.hwasan.permitted.paths += /system/${LIB} namespace.default.hwasan.permitted.paths += /system_ext/${LIB}/hwasan namespace.default.hwasan.permitted.paths += /system_ext/${LIB} namespace.default.links = system -namespace.default.link.system.shared_libs = libbinder_ndk.so:libc.so:libdl.so:liblog.so:libm.so:libdl_android.so: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.default.link.system.shared_libs = libclang_rt.asan-i686-android.so:libbinder_ndk.so:libc.so:libdl.so:liblog.so:libm.so:libdl_android.so:libclang_rt.asan-arm-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_adbd.isolated = true namespace.com_android_adbd.search.paths = /apex/com.android.adbd/${LIB} namespace.com_android_adbd.permitted.paths = /apex/com.android.adbd/${LIB} diff --git a/testdata/golden_output/deprecate_vndk/com.vendor.service1/ld.config.txt b/testdata/golden_output/deprecate_vndk/com.vendor.service1/ld.config.txt index 3e9c37c..8657666 100644 --- a/testdata/golden_output/deprecate_vndk/com.vendor.service1/ld.config.txt +++ b/testdata/golden_output/deprecate_vndk/com.vendor.service1/ld.config.txt @@ -29,9 +29,9 @@ namespace.default.hwasan.permitted.paths += /system_ext/${LIB}/hwasan namespace.default.hwasan.permitted.paths += /system_ext/${LIB} namespace.default.hwasan.permitted.paths += /vendor/${LIB}/egl/hwasan namespace.default.hwasan.permitted.paths += /vendor/${LIB}/egl -namespace.default.links = vendor,system +namespace.default.links = system,vendor +namespace.default.link.system.shared_libs = libclang_rt.asan-i686-android.so:libbinder_ndk.so:libc.so:libdl.so:liblog.so:libm.so:libdl_android.so:libclang_rt.asan-arm-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.default.link.vendor.shared_libs = libbinder.so:libvendorprovide.so -namespace.default.link.system.shared_libs = libbinder_ndk.so:libc.so:libdl.so:liblog.so:libm.so:libdl_android.so: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_adbd.isolated = true namespace.com_android_adbd.search.paths = /apex/com.android.adbd/${LIB} namespace.com_android_adbd.permitted.paths = /apex/com.android.adbd/${LIB} diff --git a/testdata/golden_output/deprecate_vndk/com.vendor.service2/ld.config.txt b/testdata/golden_output/deprecate_vndk/com.vendor.service2/ld.config.txt index 313eefc..7d51a0e 100644 --- a/testdata/golden_output/deprecate_vndk/com.vendor.service2/ld.config.txt +++ b/testdata/golden_output/deprecate_vndk/com.vendor.service2/ld.config.txt @@ -24,10 +24,10 @@ namespace.default.hwasan.permitted.paths += /system/${LIB}/hwasan namespace.default.hwasan.permitted.paths += /system/${LIB} namespace.default.hwasan.permitted.paths += /system_ext/${LIB}/hwasan namespace.default.hwasan.permitted.paths += /system_ext/${LIB} -namespace.default.links = mediacas,vendor,system +namespace.default.links = mediacas,system,vendor namespace.default.link.mediacas.allow_all_shared_libs = true +namespace.default.link.system.shared_libs = libclang_rt.asan-i686-android.so:libc.so:libdl.so:libdl_android.so:libm.so:libclang_rt.asan-arm-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.default.link.vendor.shared_libs = libbinder.so -namespace.default.link.system.shared_libs = libc.so:libdl.so:libdl_android.so:libm.so: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_adbd.isolated = true namespace.com_android_adbd.search.paths = /apex/com.android.adbd/${LIB} namespace.com_android_adbd.permitted.paths = /apex/com.android.adbd/${LIB} |