[HWASan] [MTE] disable MTE for HWASan binaries
Bug: 389848256
Test: atest hwasan_test with persist.arm64.memtag.default=sync
Test: atest bionic-unit-tests[-static]
Change-Id: I871932af1ed763e3b7d5f580052a009d5aa02e7d
diff --git a/linker/linker.cpp b/linker/linker.cpp
index 2393f13..742f639 100644
--- a/linker/linker.cpp
+++ b/linker/linker.cpp
@@ -3614,14 +3614,7 @@
return kLdConfigFilePath;
}
-
-std::vector<android_namespace_t*> init_default_namespaces(const char* executable_path) {
- g_default_namespace.set_name("(default)");
-
- soinfo* somain = solist_get_somain();
-
- const char *interp = phdr_table_get_interpreter_name(somain->phdr, somain->phnum,
- somain->load_bias);
+void init_sanitizer_mode(const char *interp ) {
const char* bname = (interp != nullptr) ? basename(interp) : nullptr;
g_is_asan = bname != nullptr &&
@@ -3637,7 +3630,13 @@
g_is_hwasan = (bname != nullptr &&
strcmp(bname, "linker_hwasan64") == 0) ||
(hwasan_env != nullptr && !getauxval(AT_SECURE) && strcmp(hwasan_env, "1") == 0);
+ __libc_shared_globals()->is_hwasan = g_is_hwasan;
#endif
+}
+
+std::vector<android_namespace_t*> init_default_namespaces(const char* executable_path) {
+ g_default_namespace.set_name("(default)");
+
const Config* config = nullptr;
{
diff --git a/linker/linker_main.cpp b/linker/linker_main.cpp
index 40f6b9a..425bcda 100644
--- a/linker/linker_main.cpp
+++ b/linker/linker_main.cpp
@@ -366,6 +366,7 @@
}
solinker->set_realpath(interp);
init_link_map_head(*solinker);
+ init_sanitizer_mode(interp);
#if defined(__aarch64__)
__libc_init_mte(somain->memtag_dynamic_entries(), somain->phdr, somain->phnum, somain->load_bias);
diff --git a/linker/linker_main.h b/linker/linker_main.h
index ffbcf0f..bec9d35 100644
--- a/linker/linker_main.h
+++ b/linker/linker_main.h
@@ -48,6 +48,7 @@
class ElfReader;
+void init_sanitizer_mode(const char *interp);
std::vector<android_namespace_t*> init_default_namespaces(const char* executable_path);
soinfo* soinfo_alloc(android_namespace_t* ns, const char* name,
const struct stat* file_stat, off64_t file_offset,