aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJooyung Han <jooyung@google.com>2024-04-18 10:41:52 +0900
committerJooyung Han <jooyung@google.com>2024-04-18 02:11:24 +0000
commit8ebf897a0a80fa5ec62d2dcc7c362c1fbd9ce1e8 (patch)
treee74b564985a46095c68c70ef3c71405efa187fca
parent420b2ae390beacf88aea5599eacb4525ec32dc37 (diff)
downloadlinkerconfig-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
-rw-r--r--contents/section/apexdefault.cc10
-rw-r--r--generator/variableloader.cc4
-rw-r--r--testdata/golden_output/deprecate_product_vndk/com.product.service1/ld.config.txt2
-rw-r--r--testdata/golden_output/deprecate_vndk/com.product.service1/ld.config.txt2
-rw-r--r--testdata/golden_output/deprecate_vndk/com.vendor.service1/ld.config.txt4
-rw-r--r--testdata/golden_output/deprecate_vndk/com.vendor.service2/ld.config.txt4
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}