summaryrefslogtreecommitdiff
path: root/linker/linker.cpp
diff options
context:
space:
mode:
authorKiyoung Kim <kiyoungkim@google.com>2019-08-07 19:24:13 +0900
committerKiyoung Kim <kiyoungkim@google.com>2019-08-07 19:24:13 +0900
commit35e3b4b0132533d0b2ff5a839d22e202e9374ae3 (patch)
tree5f8c78e2cd72a4dc54a7f1b82d11ebc8553ac0a4 /linker/linker.cpp
parentfd56f554190bfa1ad8c58bc0d8cae14510864973 (diff)
Use generated linker config
Linker config now generates ld.config.txt under /dev/linkerconfig from init. To use this, this change updates linker to pick up /dev/linkerconfig/ld.config.txt if system property (sys.linker.use_generated_config) is true. Bug: 138920271 Test: m -j && tested from cuttlefish Change-Id: I0f527741ace2d512b45fd72c301aa4cfcfe17a71
Diffstat (limited to 'linker/linker.cpp')
-rw-r--r--linker/linker.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/linker/linker.cpp b/linker/linker.cpp
index df7dd4020..6645ea4b6 100644
--- a/linker/linker.cpp
+++ b/linker/linker.cpp
@@ -90,6 +90,8 @@ static const char* const kLdConfigArchFilePath = "/system/etc/ld.config." ABI_ST
static const char* const kLdConfigFilePath = "/system/etc/ld.config.txt";
static const char* const kLdConfigVndkLiteFilePath = "/system/etc/ld.config.vndk_lite.txt";
+static const char* const kLdGeneratedConfigFilePath = "/dev/linkerconfig/ld.config.txt";
+
#if defined(__LP64__)
static const char* const kSystemLibDir = "/system/lib64";
static const char* const kOdmLibDir = "/odm/lib64";
@@ -4142,6 +4144,13 @@ static std::string get_ld_config_file_path(const char* executable_path) {
}
#endif
+ // Use generated linker config if flag is set
+ // TODO(b/138920271) Do not check property once it is confirmed as stable
+ if (android::base::GetBoolProperty("sys.linker.use_generated_config", false) &&
+ file_exists(kLdGeneratedConfigFilePath)) {
+ return kLdGeneratedConfigFilePath;
+ }
+
std::string path = get_ld_config_file_apex_path(executable_path);
if (!path.empty()) {
if (file_exists(path.c_str())) {