diff --git a/compiler-rt/CMakeLists.txt b/compiler-rt/CMakeLists.txt --- a/compiler-rt/CMakeLists.txt +++ b/compiler-rt/CMakeLists.txt @@ -52,25 +52,6 @@ option(COMPILER_RT_BUILD_GWP_ASAN "Build GWP-ASan, and link it into SCUDO" ON) mark_as_advanced(COMPILER_RT_BUILD_GWP_ASAN) -set(COMPILER_RT_ASAN_SHADOW_SCALE "" - CACHE STRING "Override the shadow scale to be used in ASan runtime") - -if (NOT COMPILER_RT_ASAN_SHADOW_SCALE STREQUAL "") - # Check that the shadow scale value is valid. - if (NOT (COMPILER_RT_ASAN_SHADOW_SCALE GREATER -1 AND - COMPILER_RT_ASAN_SHADOW_SCALE LESS 8)) - message(FATAL_ERROR " - Invalid ASan Shadow Scale '${COMPILER_RT_ASAN_SHADOW_SCALE}'.") - endif() - - set(COMPILER_RT_ASAN_SHADOW_SCALE_LLVM_FLAG - -mllvm -asan-mapping-scale=${COMPILER_RT_ASAN_SHADOW_SCALE}) - set(COMPILER_RT_ASAN_SHADOW_SCALE_DEFINITION - ASAN_SHADOW_SCALE=${COMPILER_RT_ASAN_SHADOW_SCALE}) - set(COMPILER_RT_ASAN_SHADOW_SCALE_FLAG - -D${COMPILER_RT_ASAN_SHADOW_SCALE_DEFINITION}) -endif() - if(FUCHSIA) set(COMPILER_RT_HWASAN_WITH_INTERCEPTORS_DEFAULT OFF) else() diff --git a/compiler-rt/lib/asan/asan_mapping.h b/compiler-rt/lib/asan/asan_mapping.h --- a/compiler-rt/lib/asan/asan_mapping.h +++ b/compiler-rt/lib/asan/asan_mapping.h @@ -151,16 +151,13 @@ // || `[0x30000000, 0x35ffffff]` || LowShadow || // || `[0x00000000, 0x2fffffff]` || LowMem || -#if defined(ASAN_SHADOW_SCALE) -static const u64 kDefaultShadowScale = ASAN_SHADOW_SCALE; -#else -static const u64 kDefaultShadowScale = 3; -#endif +#define SHADOW_SCALE 3 + static const u64 kDefaultShadowSentinel = ~(uptr)0; static const u64 kDefaultShadowOffset32 = 1ULL << 29; // 0x20000000 static const u64 kDefaultShadowOffset64 = 1ULL << 44; // 0x100000000000 static const u64 kDefaultShort64bitShadowOffset = - 0x7FFFFFFF & (~0xFFFULL << kDefaultShadowScale); // < 2G. + 0x7FFFFFFF & (~0xFFFULL << SHADOW_SCALE); // < 2G. static const u64 kAArch64_ShadowOffset64 = 1ULL << 36; // 0x1000000000 static const u64 kRiscv64_ShadowOffset64 = 0xd55550000; static const u64 kMIPS32_ShadowOffset32 = 0x0aaa0000; @@ -174,62 +171,54 @@ static const u64 kNetBSD_ShadowOffset64 = 1ULL << 46; // 0x400000000000 static const u64 kWindowsShadowOffset32 = 3ULL << 28; // 0x30000000 -#define SHADOW_SCALE kDefaultShadowScale - #if SANITIZER_FUCHSIA -# define SHADOW_OFFSET_CONST (0) +# define SHADOW_OFFSET (0) #elif SANITIZER_WORDSIZE == 32 # if SANITIZER_ANDROID -# define SHADOW_OFFSET_DYNAMIC +# define SHADOW_OFFSET __asan_shadow_memory_dynamic_address # elif defined(__mips__) -# define SHADOW_OFFSET_CONST kMIPS32_ShadowOffset32 +# define SHADOW_OFFSET kMIPS32_ShadowOffset32 # elif SANITIZER_FREEBSD -# define SHADOW_OFFSET_CONST kFreeBSD_ShadowOffset32 +# define SHADOW_OFFSET kFreeBSD_ShadowOffset32 # elif SANITIZER_NETBSD -# define SHADOW_OFFSET_CONST kNetBSD_ShadowOffset32 +# define SHADOW_OFFSET kNetBSD_ShadowOffset32 # elif SANITIZER_WINDOWS -# define SHADOW_OFFSET_CONST kWindowsShadowOffset32 +# define SHADOW_OFFSET kWindowsShadowOffset32 # elif SANITIZER_IOS -# define SHADOW_OFFSET_DYNAMIC +# define SHADOW_OFFSET __asan_shadow_memory_dynamic_address # else -# define SHADOW_OFFSET_CONST kDefaultShadowOffset32 +# define SHADOW_OFFSET kDefaultShadowOffset32 # endif #else # if SANITIZER_IOS -# define SHADOW_OFFSET_DYNAMIC +# define SHADOW_OFFSET __asan_shadow_memory_dynamic_address # elif SANITIZER_MAC && defined(__aarch64__) -# define SHADOW_OFFSET_DYNAMIC +# define SHADOW_OFFSET __asan_shadow_memory_dynamic_address # elif SANITIZER_RISCV64 -# define SHADOW_OFFSET_CONST kRiscv64_ShadowOffset64 +# define SHADOW_OFFSET kRiscv64_ShadowOffset64 # elif defined(__aarch64__) -# define SHADOW_OFFSET_CONST kAArch64_ShadowOffset64 +# define SHADOW_OFFSET kAArch64_ShadowOffset64 # elif defined(__powerpc64__) -# define SHADOW_OFFSET_CONST kPPC64_ShadowOffset64 +# define SHADOW_OFFSET kPPC64_ShadowOffset64 # elif defined(__s390x__) -# define SHADOW_OFFSET_CONST kSystemZ_ShadowOffset64 +# define SHADOW_OFFSET kSystemZ_ShadowOffset64 # elif SANITIZER_FREEBSD -# define SHADOW_OFFSET_CONST kFreeBSD_ShadowOffset64 +# define SHADOW_OFFSET kFreeBSD_ShadowOffset64 # elif SANITIZER_NETBSD -# define SHADOW_OFFSET_CONST kNetBSD_ShadowOffset64 +# define SHADOW_OFFSET kNetBSD_ShadowOffset64 # elif SANITIZER_MAC -# define SHADOW_OFFSET_CONST kDefaultShadowOffset64 +# define SHADOW_OFFSET kDefaultShadowOffset64 # elif defined(__mips64) -# define SHADOW_OFFSET_CONST kMIPS64_ShadowOffset64 +# define SHADOW_OFFSET kMIPS64_ShadowOffset64 # elif defined(__sparc__) -# define SHADOW_OFFSET_CONST kSPARC64_ShadowOffset64 +# define SHADOW_OFFSET kSPARC64_ShadowOffset64 # elif SANITIZER_WINDOWS64 -# define SHADOW_OFFSET_DYNAMIC +# define SHADOW_OFFSET __asan_shadow_memory_dynamic_address # else -# define SHADOW_OFFSET_CONST kDefaultShort64bitShadowOffset +# define SHADOW_OFFSET kDefaultShort64bitShadowOffset # endif #endif -#if defined(SHADOW_OFFSET_CONST) -# define SHADOW_OFFSET SHADOW_OFFSET_CONST -#elif defined(SHADOW_OFFSET_DYNAMIC) -# define SHADOW_OFFSET __asan_shadow_memory_dynamic_address -#endif - #if SANITIZER_ANDROID && defined(__arm__) # define ASAN_PREMAP_SHADOW 1 #else diff --git a/compiler-rt/lib/asan/tests/CMakeLists.txt b/compiler-rt/lib/asan/tests/CMakeLists.txt --- a/compiler-rt/lib/asan/tests/CMakeLists.txt +++ b/compiler-rt/lib/asan/tests/CMakeLists.txt @@ -23,7 +23,6 @@ set(ASAN_UNITTEST_COMMON_CFLAGS ${COMPILER_RT_UNITTEST_CFLAGS} ${COMPILER_RT_GTEST_CFLAGS} - ${COMPILER_RT_ASAN_SHADOW_SCALE_LLVM_FLAG} -I${COMPILER_RT_SOURCE_DIR}/include -I${COMPILER_RT_SOURCE_DIR}/lib -I${COMPILER_RT_SOURCE_DIR}/lib/asan @@ -52,7 +51,6 @@ # Use -D instead of definitions to please custom compile command. list(APPEND ASAN_UNITTEST_COMMON_CFLAGS - ${COMPILER_RT_ASAN_SHADOW_SCALE_FLAG} -DASAN_HAS_IGNORELIST=1 -DASAN_HAS_EXCEPTIONS=1 -DASAN_UAR=0 diff --git a/compiler-rt/lib/asan/tests/asan_interface_test.cpp b/compiler-rt/lib/asan/tests/asan_interface_test.cpp --- a/compiler-rt/lib/asan/tests/asan_interface_test.cpp +++ b/compiler-rt/lib/asan/tests/asan_interface_test.cpp @@ -160,7 +160,6 @@ #define BAD_ACCESS(ptr, offset) \ EXPECT_TRUE(__asan_address_is_poisoned(ptr + offset)) -#if !defined(ASAN_SHADOW_SCALE) || ASAN_SHADOW_SCALE == 3 static const char* kUseAfterPoisonErrorMessage = "use-after-poison"; TEST(AddressSanitizerInterface, SimplePoisonMemoryRegionTest) { @@ -200,7 +199,6 @@ BAD_ACCESS(array, 96); free(array); } -#endif // !defined(ASAN_SHADOW_SCALE) || ASAN_SHADOW_SCALE == 3 TEST(AddressSanitizerInterface, PushAndPopWithPoisoningTest) { // Vector of capacity 20