summaryrefslogtreecommitdiff
path: root/linker/linker.cpp
diff options
context:
space:
mode:
authordimitry <dimitry@google.com>2017-08-11 14:43:21 +0200
committerdimitry <dimitry@google.com>2017-08-23 10:47:07 +0200
commitfe1b27cf844aabaf4c4b06018cea96794e8b5d0d (patch)
tree0cccd3a6c05a817c652483e05e60fedd71752759 /linker/linker.cpp
parent96ba713f7336c1c21dacee8a4add72a47cdd826c (diff)
Add support of architecture specific ld.configs
Prefer architecture specific ld.config.<arch>.txt if it exists; fall back to default ld.config.txt files if arch-specific one is not present. Bug: http://b/64061157 Test: bionic-unit-tests && linker-unit-tests Change-Id: I83a298a932f2e4af7acb2049a7641fb86908736c
Diffstat (limited to 'linker/linker.cpp')
-rw-r--r--linker/linker.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/linker/linker.cpp b/linker/linker.cpp
index 8aadd14bc..59e4bac69 100644
--- a/linker/linker.cpp
+++ b/linker/linker.cpp
@@ -66,6 +66,7 @@
#include "linker_reloc_iterators.h"
#include "linker_utils.h"
+#include "android-base/macros.h"
#include "android-base/strings.h"
#include "android-base/stringprintf.h"
#include "ziparchive/zip_archive.h"
@@ -83,6 +84,8 @@ static LinkerTypeAllocator<LinkedListEntry<soinfo>> g_soinfo_links_allocator;
static LinkerTypeAllocator<android_namespace_t> g_namespace_allocator;
static LinkerTypeAllocator<LinkedListEntry<android_namespace_t>> g_namespace_list_allocator;
+static const char* const kLdConfigArchFilePath = "/system/etc/ld.config." ABI_STRING ".txt";
+
static const char* const kLdConfigFilePath = "/system/etc/ld.config.txt";
#if defined(__LP64__)
@@ -3467,7 +3470,7 @@ std::vector<android_namespace_t*> init_default_namespaces(const char* executable
std::string error_msg;
- const char* config_file = kLdConfigFilePath;
+ const char* config_file = file_exists(kLdConfigArchFilePath) ? kLdConfigArchFilePath : kLdConfigFilePath;
#ifdef USE_LD_CONFIG_FILE
// This is a debugging/testing only feature. Must not be available on
// production builds.