forked from OSchip/llvm-project
[sanitizer] [msan] Unify aarch64 mapping
This patch unify the 39-bit and 42-bit mapping for aarch64 to use only one instrumentation algorithm. This removes compiler flag SANITIZER_AARCH64_VMA requirement for MSAN on aarch64. The mapping to use now is for 39 and 42-bits: 0x00000000000ULL-0x01000000000ULL MappingDesc::INVALID 0x01000000000ULL-0x02000000000ULL MappingDesc::SHADOW 0x02000000000ULL-0x03000000000ULL MappingDesc::ORIGIN 0x03000000000ULL-0x04000000000ULL MappingDesc::SHADOW 0x04000000000ULL-0x05000000000ULL MappingDesc::ORIGIN 0x05000000000ULL-0x06000000000ULL MappingDesc::APP 0x06000000000ULL-0x07000000000ULL MappingDesc::INVALID 0x07000000000ULL-0x08000000000ULL MappingDesc::APP And only for 42-bits: 0x08000000000ULL-0x09000000000ULL MappingDesc::INVALID 0x09000000000ULL-0x0A000000000ULL MappingDesc::SHADOW 0x0A000000000ULL-0x0B000000000ULL MappingDesc::ORIGIN 0x0B000000000ULL-0x0F000000000ULL MappingDesc::INVALID 0x0F000000000ULL-0x10000000000ULL MappingDesc::APP 0x10000000000ULL-0x11000000000ULL MappingDesc::INVALID 0x11000000000ULL-0x12000000000ULL MappingDesc::APP 0x12000000000ULL-0x17000000000ULL MappingDesc::INVALID 0x17000000000ULL-0x18000000000ULL MappingDesc::SHADOW 0x18000000000ULL-0x19000000000ULL MappingDesc::ORIGIN 0x19000000000ULL-0x20000000000ULL MappingDesc::INVALID 0x20000000000ULL-0x21000000000ULL MappingDesc::APP 0x21000000000ULL-0x26000000000ULL MappingDesc::INVALID 0x26000000000ULL-0x27000000000ULL MappingDesc::SHADOW 0x27000000000ULL-0x28000000000ULL MappingDesc::ORIGIN 0x28000000000ULL-0x29000000000ULL MappingDesc::SHADOW 0x29000000000ULL-0x2A000000000ULL MappingDesc::ORIGIN 0x2A000000000ULL-0x2B000000000ULL MappingDesc::APP 0x2B000000000ULL-0x2C000000000ULL MappingDesc::INVALID 0x2C000000000ULL-0x2D000000000ULL MappingDesc::SHADOW 0x2D000000000ULL-0x2E000000000ULL MappingDesc::ORIGIN 0x2E000000000ULL-0x2F000000000ULL MappingDesc::APP 0x2F000000000ULL-0x39000000000ULL MappingDesc::INVALID 0x39000000000ULL-0x3A000000000ULL MappingDesc::SHADOW 0x3A000000000ULL-0x3B000000000ULL MappingDesc::ORIGIN 0x3B000000000ULL-0x3C000000000ULL MappingDesc::APP 0x3C000000000ULL-0x3D000000000ULL MappingDesc::INVALID 0x3D000000000ULL-0x3E000000000ULL MappingDesc::SHADOW 0x3E000000000ULL-0x3F000000000ULL MappingDesc::ORIGIN 0x3F000000000ULL-0x40000000000ULL MappingDesc::APP And although complex it provides a better memory utilization that previous one. llvm-svn: 251624
This commit is contained in:
parent
1de905a667
commit
1edb084919
|
@ -120,16 +120,6 @@ using namespace llvm;
|
|||
|
||||
#define DEBUG_TYPE "msan"
|
||||
|
||||
// VMA size definition for architecture that support multiple sizes.
|
||||
// AArch64 has 3 VMA sizes: 39, 42 and 48.
|
||||
#ifndef SANITIZER_AARCH64_VMA
|
||||
# define SANITIZER_AARCH64_VMA 39
|
||||
#else
|
||||
# if SANITIZER_AARCH64_VMA != 39 && SANITIZER_AARCH64_VMA != 42
|
||||
# error "invalid SANITIZER_AARCH64_VMA size"
|
||||
# endif
|
||||
#endif
|
||||
|
||||
static const unsigned kOriginSize = 4;
|
||||
static const unsigned kMinOriginAlignment = 4;
|
||||
static const unsigned kShadowTLSAlignment = 8;
|
||||
|
@ -263,17 +253,10 @@ static const MemoryMapParams Linux_PowerPC64_MemoryMapParams = {
|
|||
|
||||
// aarch64 Linux
|
||||
static const MemoryMapParams Linux_AArch64_MemoryMapParams = {
|
||||
#if SANITIZER_AARCH64_VMA == 39
|
||||
0x007C00000000, // AndMask
|
||||
0x000100000000, // XorMask
|
||||
0x004000000000, // ShadowBase
|
||||
0x004300000000, // OriginBase
|
||||
#elif SANITIZER_AARCH64_VMA == 42
|
||||
0x03E000000000, // AndMask
|
||||
0x001000000000, // XorMask
|
||||
0x010000000000, // ShadowBase
|
||||
0x012000000000, // OriginBase
|
||||
#endif
|
||||
0, // AndMask (not used)
|
||||
0x06000000000, // XorMask
|
||||
0, // ShadowBase (not used)
|
||||
0x01000000000, // OriginBase
|
||||
};
|
||||
|
||||
// i386 FreeBSD
|
||||
|
|
Loading…
Reference in New Issue