diff options
author | Florian Mayer <fmayer@google.com> | 2024-04-01 14:57:48 -0700 |
---|---|---|
committer | Florian Mayer <fmayer@google.com> | 2024-04-04 20:07:04 +0000 |
commit | d8ad152208ab624d7bba9efad7f5100df0d2e1a7 (patch) | |
tree | 9b0ff8a48d12f988ce5bc4b453edb9efa13dba2c | |
parent | 2910ce1ed55fcc92ef8f8d5e43d8e4ae87b18a07 (diff) | |
download | bionic-d8ad152208ab624d7bba9efad7f5100df0d2e1a7.tar.gz |
Disable USE_SCUDO branches for HWASan
It would be nicer to do this in the build system properly, and skip
linking scudo altogether when using HWASan, but this workaround is
almost as good, so we should submit this for now.
Test: CtsWrapHwasanTestCases
Change-Id: If38df37daadae93b8979279dce7f2c9cc5bc03f8
-rw-r--r-- | libc/bionic/heap_tagging.cpp | 8 | ||||
-rw-r--r-- | libc/bionic/libc_init_common.cpp | 4 | ||||
-rw-r--r-- | libc/bionic/malloc_common_dynamic.cpp | 2 |
3 files changed, 7 insertions, 7 deletions
diff --git a/libc/bionic/heap_tagging.cpp b/libc/bionic/heap_tagging.cpp index c4347e8a3..4d1981c30 100644 --- a/libc/bionic/heap_tagging.cpp +++ b/libc/bionic/heap_tagging.cpp @@ -65,7 +65,7 @@ void SetDefaultHeapTaggingLevel() { }; }); -#if defined(USE_SCUDO) +#if defined(USE_SCUDO) && !__has_feature(hwaddress_sanitizer) switch (heap_tagging_level) { case M_HEAP_TAGGING_LEVEL_TBI: case M_HEAP_TAGGING_LEVEL_NONE: @@ -123,7 +123,7 @@ bool SetHeapTaggingLevel(HeapTaggingLevel tag_level) { return false; } } -#if defined(USE_SCUDO) +#if defined(USE_SCUDO) && !__has_feature(hwaddress_sanitizer) scudo_malloc_disable_memory_tagging(); #endif break; @@ -151,12 +151,12 @@ bool SetHeapTaggingLevel(HeapTaggingLevel tag_level) { if (!set_tcf_on_all_threads(PR_MTE_TCF_ASYNC | PR_MTE_TCF_SYNC)) { set_tcf_on_all_threads(PR_MTE_TCF_ASYNC); } -#if defined(USE_SCUDO) +#if defined(USE_SCUDO) && !__has_feature(hwaddress_sanitizer) scudo_malloc_set_track_allocation_stacks(0); #endif } else if (tag_level == M_HEAP_TAGGING_LEVEL_SYNC) { set_tcf_on_all_threads(PR_MTE_TCF_SYNC); -#if defined(USE_SCUDO) +#if defined(USE_SCUDO) && !__has_feature(hwaddress_sanitizer) scudo_malloc_set_track_allocation_stacks(1); #endif } diff --git a/libc/bionic/libc_init_common.cpp b/libc/bionic/libc_init_common.cpp index 944098f42..c82c52e9d 100644 --- a/libc/bionic/libc_init_common.cpp +++ b/libc/bionic/libc_init_common.cpp @@ -96,7 +96,7 @@ void __libc_init_scudo() { SetDefaultHeapTaggingLevel(); // TODO(b/158870657) make this unconditional when all devices support SCUDO. -#if defined(USE_SCUDO) +#if defined(USE_SCUDO) && !__has_feature(hwaddress_sanitizer) #if defined(SCUDO_PATTERN_FILL_CONTENTS) scudo_malloc_set_pattern_fill_contents(1); #elif defined(SCUDO_ZERO_CONTENTS) @@ -182,7 +182,7 @@ void __libc_init_fork_handler() { extern "C" void scudo_malloc_set_add_large_allocation_slack(int add_slack); __BIONIC_WEAK_FOR_NATIVE_BRIDGE void __libc_set_target_sdk_version(int target __unused) { -#if defined(USE_SCUDO) +#if defined(USE_SCUDO) && !__has_feature(hwaddress_sanitizer) scudo_malloc_set_add_large_allocation_slack(target < __ANDROID_API_S__); #endif } diff --git a/libc/bionic/malloc_common_dynamic.cpp b/libc/bionic/malloc_common_dynamic.cpp index 88581784a..6db625128 100644 --- a/libc/bionic/malloc_common_dynamic.cpp +++ b/libc/bionic/malloc_common_dynamic.cpp @@ -381,7 +381,7 @@ static void MallocInitImpl(libc_globals* globals) { MaybeInitGwpAsanFromLibc(globals); -#if defined(USE_SCUDO) +#if defined(USE_SCUDO) && !__has_feature(hwaddress_sanitizer) __libc_shared_globals()->scudo_stack_depot = __scudo_get_stack_depot_addr(); __libc_shared_globals()->scudo_region_info = __scudo_get_region_info_addr(); __libc_shared_globals()->scudo_ring_buffer = __scudo_get_ring_buffer_addr(); |