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,65 +157,60 @@ 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 #if SANITIZER_FUCHSIA # define SHADOW_OFFSET_CONST (0) #elif SANITIZER_WORDSIZE == 32 -# if defined(__mips__) -# define SHADOW_OFFSET_CONST kMIPS32_ShadowOffset32 +# if SANITIZER_ANDROID +# define SHADOW_OFFSET_DYNAMIC +# elif defined(__mips__) +# 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_RISCV64 -# define SHADOW_OFFSET_CONST kRiscv64_ShadowOffset64 +# if SANITIZER_IOS +# define SHADOW_OFFSET_DYNAMIC +# elif SANITIZER_MAC && defined(__aarch64__) +# define SHADOW_OFFSET_DYNAMIC +# elif SANITIZER_RISCV64 +# define SHADOW_OFFSET_CONST 0xd55550000 # elif defined(__aarch64__) -# define SHADOW_OFFSET_CONST kAArch64_ShadowOffset64 +# define SHADOW_OFFSET_CONST 0x1000000000 # elif defined(__powerpc64__) -# define SHADOW_OFFSET_CONST kPPC64_ShadowOffset64 +# define SHADOW_OFFSET_CONST 0x100000000000 # elif defined(__s390x__) -# define SHADOW_OFFSET_CONST kSystemZ_ShadowOffset64 +# define SHADOW_OFFSET_CONST 0x10000000000000 # elif SANITIZER_FREEBSD -# define SHADOW_OFFSET_CONST kFreeBSD_ShadowOffset64 +# define SHADOW_OFFSET_CONST 0x400000000000 # elif SANITIZER_NETBSD -# define SHADOW_OFFSET_CONST kNetBSD_ShadowOffset64 +# define SHADOW_OFFSET_CONST 0x400000000000 # elif SANITIZER_MAC -# define SHADOW_OFFSET_CONST kDefaultShadowOffset64 +# define SHADOW_OFFSET_CONST 0x100000000000 # elif defined(__mips64) -# define SHADOW_OFFSET_CONST kMIPS64_ShadowOffset64 +# define SHADOW_OFFSET_CONST 0x2000000000 # elif defined(__sparc__) -# define SHADOW_OFFSET_CONST kSPARC64_ShadowOffset64 +# define SHADOW_OFFSET_CONST 0x80000000000 +# elif SANITIZER_WINDOWS64 +# define SHADOW_OFFSET_DYNAMIC # else -# define SHADOW_OFFSET_CONST kDefaultShort64bitShadowOffset +# define SHADOW_OFFSET_CONST 0x7FFFFFFF & (~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 #else # define SHADOW_OFFSET __asan_shadow_memory_dynamic_address #endif @@ -240,7 +235,7 @@ // Don't set to 1 other than for testing. #define ASAN_FIXED_MAPPING 0 - namespace __asan { +namespace __asan { extern uptr AsanMappingProfile[]; @@ -255,7 +250,7 @@ extern uptr kHighMemEnd, kMidMemBeg, kMidMemEnd; // Initialized in __asan_init. #endif -} // namespace __asan +} // namespace __asan #if defined(__sparc__) && SANITIZER_WORDSIZE == 64 # include "asan_mapping_sparc64.h"