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 @@ -157,22 +157,6 @@ static const u64 kDefaultShadowScale = 3; #endif 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. -static const u64 kAArch64_ShadowOffset64 = 1ULL << 36; // 0x1000000000 -static const u64 kRiscv64_ShadowOffset64 = 0xd55550000; -static const u64 kMIPS32_ShadowOffset32 = 0x0aaa0000; -static const u64 kMIPS64_ShadowOffset64 = 1ULL << 37; // 0x2000000000 -static const u64 kPPC64_ShadowOffset64 = 1ULL << 44; // 0x100000000000 -static const u64 kSystemZ_ShadowOffset64 = 1ULL << 52; // 0x10000000000000 -static const u64 kSPARC64_ShadowOffset64 = 1ULL << 43; // 0x80000000000 -static const u64 kFreeBSD_ShadowOffset32 = 1ULL << 30; // 0x40000000 -static const u64 kFreeBSD_ShadowOffset64 = 1ULL << 46; // 0x400000000000 -static const u64 kNetBSD_ShadowOffset32 = 1ULL << 30; // 0x40000000 -static const u64 kNetBSD_ShadowOffset64 = 1ULL << 46; // 0x400000000000 -static const u64 kWindowsShadowOffset32 = 3ULL << 28; // 0x30000000 #define SHADOW_SCALE kDefaultShadowScale @@ -182,17 +166,17 @@ # if SANITIZER_ANDROID # define SHADOW_OFFSET_DYNAMIC # elif defined(__mips__) -# define SHADOW_OFFSET_CONST kMIPS32_ShadowOffset32 +# define SHADOW_OFFSET_CONST 0x0aaa0000 # elif SANITIZER_FREEBSD -# define SHADOW_OFFSET_CONST kFreeBSD_ShadowOffset32 +# define SHADOW_OFFSET_CONST 0x40000000 # elif SANITIZER_NETBSD -# define SHADOW_OFFSET_CONST kNetBSD_ShadowOffset32 +# define SHADOW_OFFSET_CONST 0x40000000 # elif SANITIZER_WINDOWS -# define SHADOW_OFFSET_CONST kWindowsShadowOffset32 +# define SHADOW_OFFSET_CONST 0x30000000 # elif SANITIZER_IOS # define SHADOW_OFFSET_DYNAMIC # else -# define SHADOW_OFFSET_CONST kDefaultShadowOffset32 +# define SHADOW_OFFSET_CONST 0x20000000 # endif #else # if SANITIZER_IOS @@ -200,34 +184,38 @@ # elif SANITIZER_MAC && defined(__aarch64__) # define SHADOW_OFFSET_DYNAMIC # elif SANITIZER_RISCV64 -# define SHADOW_OFFSET_CONST kRiscv64_ShadowOffset64 +# define SHADOW_OFFSET_CONST 0x0000000d55550000 # elif defined(__aarch64__) -# define SHADOW_OFFSET_CONST kAArch64_ShadowOffset64 +# define SHADOW_OFFSET_CONST 0x0000001000000000 # elif defined(__powerpc64__) -# define SHADOW_OFFSET_CONST kPPC64_ShadowOffset64 +# define SHADOW_OFFSET_CONST 0x0000100000000000 # elif defined(__s390x__) -# define SHADOW_OFFSET_CONST kSystemZ_ShadowOffset64 +# define SHADOW_OFFSET_CONST 0x0010000000000000 # elif SANITIZER_FREEBSD -# define SHADOW_OFFSET_CONST kFreeBSD_ShadowOffset64 +# define SHADOW_OFFSET_CONST 0x0000400000000000 # elif SANITIZER_NETBSD -# define SHADOW_OFFSET_CONST kNetBSD_ShadowOffset64 +# define SHADOW_OFFSET_CONST 0x0000400000000000 # elif SANITIZER_MAC -# define SHADOW_OFFSET_CONST kDefaultShadowOffset64 +# define SHADOW_OFFSET_CONST 0x0000100000000000 # elif defined(__mips64) -# define SHADOW_OFFSET_CONST kMIPS64_ShadowOffset64 +# define SHADOW_OFFSET_CONST 0x0000002000000000 # elif defined(__sparc__) -# define SHADOW_OFFSET_CONST kSPARC64_ShadowOffset64 +# define SHADOW_OFFSET_CONST 0x0000080000000000 # elif SANITIZER_WINDOWS64 # define SHADOW_OFFSET_DYNAMIC # else -# define SHADOW_OFFSET_CONST kDefaultShort64bitShadowOffset +# define SHADOW_OFFSET_CONST \ + 0x000000007FFFFFFF & (~0xFFFULL << kDefaultShadowScale) # endif #endif #if defined(SHADOW_OFFSET_CONST) -# define SHADOW_OFFSET SHADOW_OFFSET_CONST +static const u64 kConstShadowOffset = SHADOW_OFFSET_CONST; +# define SHADOW_OFFSET kConstShadowOffset #elif defined(SHADOW_OFFSET_DYNAMIC) # define SHADOW_OFFSET __asan_shadow_memory_dynamic_address +#else +# error "SHADOW_OFFSET can't be determined." #endif #if SANITIZER_ANDROID && defined(__arm__)