diff options
| author | 2023-08-11 10:55:23 +0900 | |
|---|---|---|
| committer | 2024-02-28 05:35:22 +0000 | |
| commit | f701823d2bc4911fc5eaa2d94799118751e8c637 (patch) | |
| tree | 53b420fb92520f899037b507d01c5f20853c50c8 /libnativeloader/public_libraries.cpp | |
| parent | c968f45f41f9ca409c967e5495d28a049eebf14d (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
Bug: 325710867
Test: aosp_cf build and boot succeeded with llndk.libraries.txt in the
system image
Change-Id: Id1c6f3e0c68f5a805a9285611da759f1b9a26da4
Merged-In: Id1c6f3e0c68f5a805a9285611da759f1b9a26da4
(cherry picked from commit 065d968d7c754f6042f113c18d2fd8858ec83455)
Diffstat (limited to 'libnativeloader/public_libraries.cpp')
| -rw-r--r-- | libnativeloader/public_libraries.cpp | 35 | 
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());  |