diff options
author | dimitry <dimitry@google.com> | 2017-08-11 14:43:21 +0200 |
---|---|---|
committer | dimitry <dimitry@google.com> | 2017-08-23 10:47:07 +0200 |
commit | fe1b27cf844aabaf4c4b06018cea96794e8b5d0d (patch) | |
tree | 0cccd3a6c05a817c652483e05e60fedd71752759 /linker/linker.cpp | |
parent | 96ba713f7336c1c21dacee8a4add72a47cdd826c (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.cpp | 5 |
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. |