forked from OSchip/llvm-project
[ASan] Move the shadow on Windows 32-bit from 0x20000000 to 0x40000000
llvm-svn: 225641
This commit is contained in:
parent
e03bef7543
commit
00ede84084
|
@ -79,6 +79,13 @@
|
||||||
// || `[0x48000000, 0x4bffffff]` || ShadowGap ||
|
// || `[0x48000000, 0x4bffffff]` || ShadowGap ||
|
||||||
// || `[0x40000000, 0x47ffffff]` || LowShadow ||
|
// || `[0x40000000, 0x47ffffff]` || LowShadow ||
|
||||||
// || `[0x00000000, 0x3fffffff]` || LowMem ||
|
// || `[0x00000000, 0x3fffffff]` || LowMem ||
|
||||||
|
//
|
||||||
|
// Default Windows/i386 mapping:
|
||||||
|
// || `[0x60000000, 0xffffffff]` || HighMem ||
|
||||||
|
// || `[0x4c000000, 0x5fffffff]` || HighShadow ||
|
||||||
|
// || `[0x48000000, 0x4bffffff]` || ShadowGap ||
|
||||||
|
// || `[0x40000000, 0x47ffffff]` || LowShadow ||
|
||||||
|
// || `[0x00000000, 0x3fffffff]` || LowMem ||
|
||||||
|
|
||||||
static const u64 kDefaultShadowScale = 3;
|
static const u64 kDefaultShadowScale = 3;
|
||||||
static const u64 kDefaultShadowOffset32 = 1ULL << 29; // 0x20000000
|
static const u64 kDefaultShadowOffset32 = 1ULL << 29; // 0x20000000
|
||||||
|
@ -91,6 +98,7 @@ static const u64 kMIPS64_ShadowOffset64 = 1ULL << 36;
|
||||||
static const u64 kPPC64_ShadowOffset64 = 1ULL << 41;
|
static const u64 kPPC64_ShadowOffset64 = 1ULL << 41;
|
||||||
static const u64 kFreeBSD_ShadowOffset32 = 1ULL << 30; // 0x40000000
|
static const u64 kFreeBSD_ShadowOffset32 = 1ULL << 30; // 0x40000000
|
||||||
static const u64 kFreeBSD_ShadowOffset64 = 1ULL << 46; // 0x400000000000
|
static const u64 kFreeBSD_ShadowOffset64 = 1ULL << 46; // 0x400000000000
|
||||||
|
static const u64 kWindowsShadowOffset32 = 1ULL << 30; // 0x40000000
|
||||||
|
|
||||||
#define SHADOW_SCALE kDefaultShadowScale
|
#define SHADOW_SCALE kDefaultShadowScale
|
||||||
#if SANITIZER_ANDROID
|
#if SANITIZER_ANDROID
|
||||||
|
@ -101,12 +109,12 @@ static const u64 kFreeBSD_ShadowOffset64 = 1ULL << 46; // 0x400000000000
|
||||||
# define SHADOW_OFFSET kMIPS32_ShadowOffset32
|
# define SHADOW_OFFSET kMIPS32_ShadowOffset32
|
||||||
# elif SANITIZER_FREEBSD
|
# elif SANITIZER_FREEBSD
|
||||||
# define SHADOW_OFFSET kFreeBSD_ShadowOffset32
|
# define SHADOW_OFFSET kFreeBSD_ShadowOffset32
|
||||||
|
# elif SANITIZER_IOS
|
||||||
|
# define SHADOW_OFFSET kIosShadowOffset32
|
||||||
|
# elif SANITIZER_WINDOWS
|
||||||
|
# define SHADOW_OFFSET kWindowsShadowOffset32
|
||||||
# else
|
# else
|
||||||
# if SANITIZER_IOS
|
# define SHADOW_OFFSET kDefaultShadowOffset32
|
||||||
# define SHADOW_OFFSET kIosShadowOffset32
|
|
||||||
# else
|
|
||||||
# define SHADOW_OFFSET kDefaultShadowOffset32
|
|
||||||
# endif
|
|
||||||
# endif
|
# endif
|
||||||
# else
|
# else
|
||||||
# if defined(__aarch64__)
|
# if defined(__aarch64__)
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
char bigchunk[1 << 29];
|
char bigchunk[1 << 30];
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
printf("Hello, world!\n");
|
printf("Hello, world!\n");
|
||||||
|
|
|
@ -67,6 +67,7 @@ static const uint64_t kMIPS32_ShadowOffset32 = 0x0aaa0000;
|
||||||
static const uint64_t kMIPS64_ShadowOffset64 = 1ULL << 36;
|
static const uint64_t kMIPS64_ShadowOffset64 = 1ULL << 36;
|
||||||
static const uint64_t kFreeBSD_ShadowOffset32 = 1ULL << 30;
|
static const uint64_t kFreeBSD_ShadowOffset32 = 1ULL << 30;
|
||||||
static const uint64_t kFreeBSD_ShadowOffset64 = 1ULL << 46;
|
static const uint64_t kFreeBSD_ShadowOffset64 = 1ULL << 46;
|
||||||
|
static const uint64_t kWindowsShadowOffset32 = 1ULL << 30;
|
||||||
|
|
||||||
static const size_t kMinStackMallocSize = 1 << 6; // 64B
|
static const size_t kMinStackMallocSize = 1 << 6; // 64B
|
||||||
static const size_t kMaxStackMallocSize = 1 << 16; // 64K
|
static const size_t kMaxStackMallocSize = 1 << 16; // 64K
|
||||||
|
@ -307,6 +308,7 @@ static ShadowMapping getShadowMapping(Triple &TargetTriple, int LongSize) {
|
||||||
TargetTriple.getArch() == llvm::Triple::mipsel;
|
TargetTriple.getArch() == llvm::Triple::mipsel;
|
||||||
bool IsMIPS64 = TargetTriple.getArch() == llvm::Triple::mips64 ||
|
bool IsMIPS64 = TargetTriple.getArch() == llvm::Triple::mips64 ||
|
||||||
TargetTriple.getArch() == llvm::Triple::mips64el;
|
TargetTriple.getArch() == llvm::Triple::mips64el;
|
||||||
|
bool IsWindows = TargetTriple.isOSWindows();
|
||||||
|
|
||||||
ShadowMapping Mapping;
|
ShadowMapping Mapping;
|
||||||
|
|
||||||
|
@ -319,6 +321,8 @@ static ShadowMapping getShadowMapping(Triple &TargetTriple, int LongSize) {
|
||||||
Mapping.Offset = kFreeBSD_ShadowOffset32;
|
Mapping.Offset = kFreeBSD_ShadowOffset32;
|
||||||
else if (IsIOS)
|
else if (IsIOS)
|
||||||
Mapping.Offset = kIOSShadowOffset32;
|
Mapping.Offset = kIOSShadowOffset32;
|
||||||
|
else if (IsWindows)
|
||||||
|
Mapping.Offset = kWindowsShadowOffset32;
|
||||||
else
|
else
|
||||||
Mapping.Offset = kDefaultShadowOffset32;
|
Mapping.Offset = kDefaultShadowOffset32;
|
||||||
} else { // LongSize == 64
|
} else { // LongSize == 64
|
||||||
|
|
Loading…
Reference in New Issue