summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Kiyoung Kim <kiyoungkim@google.com> 2023-08-11 10:55:23 +0900
committer Kiyoung Kim <kiyoungkim@google.com> 2023-09-04 08:09:54 +0000
commit065d968d7c754f6042f113c18d2fd8858ec83455 (patch)
treec340d4234af5dcd96d927e443f6ed2d8174129f0
parentfa41df028f28e8f71f0e06ccc6b97c6a099b5bba (diff)
Use llndk.libraries.txt from system if VNDK is deprecated
llndk.libraries.txt will be relocated into system when VNDK is deprecated. This change sets a new location to load llndk.libraries.txt when VNDK is deprecated. Bug: 290160925 Test: aosp_cf build and boot succeeded with llndk.libraries.txt in the system image Change-Id: Id1c6f3e0c68f5a805a9285611da759f1b9a26da4
-rw-r--r--libnativeloader/public_libraries.cpp35
1 files changed, 31 insertions, 4 deletions
diff --git a/libnativeloader/public_libraries.cpp b/libnativeloader/public_libraries.cpp
index 896c5c7106..de8639d602 100644
--- a/libnativeloader/public_libraries.cpp
+++ b/libnativeloader/public_libraries.cpp
@@ -55,6 +55,7 @@ constexpr const char* kExtendedPublicLibrariesFileSuffix = ".txt";
constexpr const char* kApexLibrariesConfigFile = "/linkerconfig/apex.libraries.config.txt";
constexpr const char* kVendorPublicLibrariesFile = "/vendor/etc/public.libraries.txt";
constexpr const char* kLlndkLibrariesFile = "/apex/com.android.vndk.v{}/etc/llndk.libraries.{}.txt";
+constexpr const char* kLlndkLibrariesNoVndkFile = "/system/etc/llndk.libraries.txt";
constexpr const char* kVndkLibrariesFile = "/apex/com.android.vndk.v{}/etc/vndksp.libraries.{}.txt";
@@ -225,9 +226,30 @@ static std::string InitExtendedPublicLibraries() {
return libs;
}
+bool IsVendorVndkEnabled() {
+#if defined(ART_TARGET_ANDROID)
+ return android::base::GetProperty("ro.vndk.version", "") != "";
+#else
+ return true;
+#endif
+}
+
+bool IsProductVndkEnabled() {
+#if defined(ART_TARGET_ANDROID)
+ return android::base::GetProperty("ro.product.vndk.version", "") != "";
+#else
+ return true;
+#endif
+}
+
static std::string InitLlndkLibrariesVendor() {
- std::string config_file = kLlndkLibrariesFile;
- InsertVndkVersionStr(&config_file, false);
+ std::string config_file;
+ if (IsVendorVndkEnabled()) {
+ config_file = kLlndkLibrariesFile;
+ InsertVndkVersionStr(&config_file, false);
+ } else {
+ config_file = kLlndkLibrariesNoVndkFile;
+ }
auto sonames = ReadConfig(config_file, always_true);
if (!sonames.ok()) {
LOG_ALWAYS_FATAL("%s: %s", config_file.c_str(), sonames.error().message().c_str());
@@ -243,8 +265,13 @@ static std::string InitLlndkLibrariesProduct() {
ALOGD("InitLlndkLibrariesProduct: No product VNDK version defined");
return "";
}
- std::string config_file = kLlndkLibrariesFile;
- InsertVndkVersionStr(&config_file, true);
+ std::string config_file;
+ if (IsProductVndkEnabled()) {
+ config_file = kLlndkLibrariesFile;
+ InsertVndkVersionStr(&config_file, true);
+ } else {
+ config_file = kLlndkLibrariesNoVndkFile;
+ }
auto sonames = ReadConfig(config_file, always_true);
if (!sonames.ok()) {
LOG_ALWAYS_FATAL("%s: %s", config_file.c_str(), sonames.error().message().c_str());