diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2017-04-01 04:18:32 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2017-04-01 04:18:33 +0000 |
commit | eca0f9910d3b1fc5608fc82b1ff28325f74678cb (patch) | |
tree | 661fa3d05fd23bb7d8d46c63455e571a4a9ff430 /linker/linker.cpp | |
parent | 74f7f29c859c7f751b2212c90702468cc01a4a04 (diff) | |
parent | a782f29108876ed5f1601415e9a82aac4653aeaf (diff) |
Merge "Refactor sanitized library on-disk layout - bionic." into oc-dev
Diffstat (limited to 'linker/linker.cpp')
-rw-r--r-- | linker/linker.cpp | 28 |
1 files changed, 10 insertions, 18 deletions
diff --git a/linker/linker.cpp b/linker/linker.cpp index 60dff988e..e2d61151f 100644 --- a/linker/linker.cpp +++ b/linker/linker.cpp @@ -83,15 +83,17 @@ static const char* const kLdConfigFilePath = "/system/etc/ld.config.txt"; #if defined(__LP64__) static const char* const kSystemLibDir = "/system/lib64"; static const char* const kVendorLibDir = "/vendor/lib64"; -static const char* const kAsanSystemLibDir = "/data/lib64"; -static const char* const kAsanVendorLibDir = "/data/vendor/lib64"; +static const char* const kAsanSystemLibDir = "/data/asan/system/lib64"; +static const char* const kAsanVendorLibDir = "/data/asan/vendor/lib64"; #else static const char* const kSystemLibDir = "/system/lib"; static const char* const kVendorLibDir = "/vendor/lib"; -static const char* const kAsanSystemLibDir = "/data/lib"; -static const char* const kAsanVendorLibDir = "/data/vendor/lib"; +static const char* const kAsanSystemLibDir = "/data/asan/system/lib"; +static const char* const kAsanVendorLibDir = "/data/asan/vendor/lib"; #endif +static const char* const kAsanLibDirPrefix = "/data/asan"; + static const char* const kDefaultLdPaths[] = { kSystemLibDir, kVendorLibDir, @@ -1897,20 +1899,10 @@ void* do_dlopen(const char* name, int flags, if (g_is_asan && translated_name != nullptr && translated_name[0] == '/') { char translated_path[PATH_MAX]; if (realpath(translated_name, translated_path) != nullptr) { - if (file_is_under_dir(translated_path, kSystemLibDir)) { - asan_name_holder = std::string(kAsanSystemLibDir) + "/" + - (translated_path + strlen(kSystemLibDir) + 1); - if (file_exists(asan_name_holder.c_str())) { - translated_name = asan_name_holder.c_str(); - PRINT("linker_asan dlopen translating \"%s\" -> \"%s\"", name, translated_name); - } - } else if (file_is_under_dir(translated_path, kVendorLibDir)) { - asan_name_holder = std::string(kAsanVendorLibDir) + "/" + - (translated_path + strlen(kVendorLibDir) + 1); - if (file_exists(asan_name_holder.c_str())) { - translated_name = asan_name_holder.c_str(); - PRINT("linker_asan dlopen translating \"%s\" -> \"%s\"", name, translated_name); - } + asan_name_holder = std::string(kAsanLibDirPrefix) + translated_path; + if (file_exists(asan_name_holder.c_str())) { + translated_name = asan_name_holder.c_str(); + PRINT("linker_asan dlopen translating \"%s\" -> \"%s\"", name, translated_name); } } } |