mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-25 08:26:06 +00:00
tsan: reduce shadow ranges
The new tsan runtime has 2x more compact shadow. Adjust shadow ranges accordingly. Depends on D112603. Reviewed By: vitalybuka, melver Differential Revision: https://reviews.llvm.org/D113751
This commit is contained in:
parent
53fc462513
commit
9789e74a90
@ -40,8 +40,8 @@ enum {
|
||||
C/C++ on linux/x86_64 and freebsd/x86_64
|
||||
0000 0000 1000 - 0080 0000 0000: main binary and/or MAP_32BIT mappings (512GB)
|
||||
0040 0000 0000 - 0100 0000 0000: -
|
||||
0100 0000 0000 - 2000 0000 0000: shadow
|
||||
2000 0000 0000 - 3000 0000 0000: -
|
||||
0100 0000 0000 - 1000 0000 0000: shadow
|
||||
1000 0000 0000 - 3000 0000 0000: -
|
||||
3000 0000 0000 - 4000 0000 0000: metainfo (memory blocks and sync objects)
|
||||
4000 0000 0000 - 5500 0000 0000: -
|
||||
5500 0000 0000 - 5680 0000 0000: pie binaries without ASLR or on 4.1+ kernels
|
||||
@ -66,7 +66,7 @@ struct Mapping48AddressSpace {
|
||||
static const uptr kMetaShadowBeg = 0x300000000000ull;
|
||||
static const uptr kMetaShadowEnd = 0x340000000000ull;
|
||||
static const uptr kShadowBeg = 0x010000000000ull;
|
||||
static const uptr kShadowEnd = 0x200000000000ull;
|
||||
static const uptr kShadowEnd = 0x100000000000ull;
|
||||
static const uptr kHeapMemBeg = 0x7b0000000000ull;
|
||||
static const uptr kHeapMemEnd = 0x7c0000000000ull;
|
||||
static const uptr kLoAppMemBeg = 0x000000001000ull;
|
||||
@ -85,8 +85,9 @@ struct Mapping48AddressSpace {
|
||||
C/C++ on linux/mips64 (40-bit VMA)
|
||||
0000 0000 00 - 0100 0000 00: - (4 GB)
|
||||
0100 0000 00 - 0200 0000 00: main binary (4 GB)
|
||||
0200 0000 00 - 1200 0000 00: - (120 GB)
|
||||
1200 0000 00 - 4000 0000 00: shadow (128 GB)
|
||||
0200 0000 00 - 1200 0000 00: - (64 GB)
|
||||
1200 0000 00 - 2200 0000 00: shadow (64 GB)
|
||||
2200 0000 00 - 4000 0000 00: - (120 GB)
|
||||
4000 0000 00 - 5000 0000 00: metainfo (memory blocks and sync objects) (64 GB)
|
||||
5000 0000 00 - aa00 0000 00: - (360 GB)
|
||||
aa00 0000 00 - ab00 0000 00: main binary (PIE) (4 GB)
|
||||
@ -99,7 +100,7 @@ struct MappingMips64_40 {
|
||||
static const uptr kMetaShadowBeg = 0x4000000000ull;
|
||||
static const uptr kMetaShadowEnd = 0x5000000000ull;
|
||||
static const uptr kShadowBeg = 0x1200000000ull;
|
||||
static const uptr kShadowEnd = 0x4000000000ull;
|
||||
static const uptr kShadowEnd = 0x2200000000ull;
|
||||
static const uptr kHeapMemBeg = 0xfe00000000ull;
|
||||
static const uptr kHeapMemEnd = 0xff00000000ull;
|
||||
static const uptr kLoAppMemBeg = 0x0100000000ull;
|
||||
@ -120,8 +121,8 @@ C/C++ on Darwin/iOS/ARM64 (36-bit VMA, 64 GB VM)
|
||||
0100 0000 00 - 0200 0000 00: main binary, modules, thread stacks (4 GB)
|
||||
0200 0000 00 - 0300 0000 00: heap (4 GB)
|
||||
0300 0000 00 - 0400 0000 00: - (4 GB)
|
||||
0400 0000 00 - 0c00 0000 00: shadow memory (32 GB)
|
||||
0c00 0000 00 - 0d00 0000 00: - (4 GB)
|
||||
0400 0000 00 - 0800 0000 00: shadow memory (16 GB)
|
||||
0800 0000 00 - 0d00 0000 00: - (20 GB)
|
||||
0d00 0000 00 - 0e00 0000 00: metainfo (4 GB)
|
||||
0e00 0000 00 - 1000 0000 00: -
|
||||
*/
|
||||
@ -131,7 +132,7 @@ struct MappingAppleAarch64 {
|
||||
static const uptr kHeapMemBeg = 0x0200000000ull;
|
||||
static const uptr kHeapMemEnd = 0x0300000000ull;
|
||||
static const uptr kShadowBeg = 0x0400000000ull;
|
||||
static const uptr kShadowEnd = 0x0c00000000ull;
|
||||
static const uptr kShadowEnd = 0x0800000000ull;
|
||||
static const uptr kMetaShadowBeg = 0x0d00000000ull;
|
||||
static const uptr kMetaShadowEnd = 0x0e00000000ull;
|
||||
static const uptr kHiAppMemBeg = 0x0fc0000000ull;
|
||||
@ -148,7 +149,7 @@ struct MappingAppleAarch64 {
|
||||
C/C++ on linux/aarch64 (39-bit VMA)
|
||||
0000 0010 00 - 0100 0000 00: main binary
|
||||
0100 0000 00 - 0400 0000 00: -
|
||||
0400 0000 00 - 2000 0000 00: shadow memory
|
||||
0400 0000 00 - 1000 0000 00: shadow memory
|
||||
2000 0000 00 - 3100 0000 00: -
|
||||
3100 0000 00 - 3400 0000 00: metainfo
|
||||
3400 0000 00 - 5500 0000 00: -
|
||||
@ -161,7 +162,7 @@ struct MappingAarch64_39 {
|
||||
static const uptr kLoAppMemBeg = 0x0000001000ull;
|
||||
static const uptr kLoAppMemEnd = 0x0100000000ull;
|
||||
static const uptr kShadowBeg = 0x0400000000ull;
|
||||
static const uptr kShadowEnd = 0x2000000000ull;
|
||||
static const uptr kShadowEnd = 0x1000000000ull;
|
||||
static const uptr kMetaShadowBeg = 0x3100000000ull;
|
||||
static const uptr kMetaShadowEnd = 0x3400000000ull;
|
||||
static const uptr kMidAppMemBeg = 0x5500000000ull;
|
||||
@ -180,8 +181,8 @@ struct MappingAarch64_39 {
|
||||
C/C++ on linux/aarch64 (42-bit VMA)
|
||||
00000 0010 00 - 01000 0000 00: main binary
|
||||
01000 0000 00 - 08000 0000 00: -
|
||||
08000 0000 00 - 20000 0000 00: shadow memory
|
||||
20000 0000 00 - 26000 0000 00: -
|
||||
08000 0000 00 - 10000 0000 00: shadow memory
|
||||
10000 0000 00 - 26000 0000 00: -
|
||||
26000 0000 00 - 28000 0000 00: metainfo
|
||||
28000 0000 00 - 2aa00 0000 00: -
|
||||
2aa00 0000 00 - 2ab00 0000 00: main binary (PIE)
|
||||
@ -194,7 +195,7 @@ struct MappingAarch64_42 {
|
||||
static const uptr kLoAppMemBeg = 0x00000001000ull;
|
||||
static const uptr kLoAppMemEnd = 0x01000000000ull;
|
||||
static const uptr kShadowBeg = 0x08000000000ull;
|
||||
static const uptr kShadowEnd = 0x20000000000ull;
|
||||
static const uptr kShadowEnd = 0x10000000000ull;
|
||||
static const uptr kMetaShadowBeg = 0x26000000000ull;
|
||||
static const uptr kMetaShadowEnd = 0x28000000000ull;
|
||||
static const uptr kMidAppMemBeg = 0x2aa00000000ull;
|
||||
@ -213,7 +214,7 @@ struct MappingAarch64_48 {
|
||||
static const uptr kLoAppMemBeg = 0x0000000001000ull;
|
||||
static const uptr kLoAppMemEnd = 0x0000200000000ull;
|
||||
static const uptr kShadowBeg = 0x0001000000000ull;
|
||||
static const uptr kShadowEnd = 0x0004000000000ull;
|
||||
static const uptr kShadowEnd = 0x0002000000000ull;
|
||||
static const uptr kMetaShadowBeg = 0x0005000000000ull;
|
||||
static const uptr kMetaShadowEnd = 0x0006000000000ull;
|
||||
static const uptr kMidAppMemBeg = 0x0aaaa00000000ull;
|
||||
@ -265,10 +266,9 @@ struct MappingPPC64_44 {
|
||||
C/C++ on linux/powerpc64 (46-bit VMA)
|
||||
0000 0000 1000 - 0100 0000 0000: main binary
|
||||
0100 0000 0000 - 0200 0000 0000: -
|
||||
0100 0000 0000 - 1000 0000 0000: shadow
|
||||
1000 0000 0000 - 1000 0000 0000: -
|
||||
1000 0000 0000 - 2000 0000 0000: metainfo (memory blocks and sync objects)
|
||||
2000 0000 0000 - 2000 0000 0000: -
|
||||
0100 0000 0000 - 0800 0000 0000: shadow
|
||||
0800 0000 0000 - 1000 0000 0000: -
|
||||
1000 0000 0000 - 1200 0000 0000: metainfo (memory blocks and sync objects)
|
||||
1200 0000 0000 - 3d00 0000 0000: -
|
||||
3d00 0000 0000 - 3e00 0000 0000: heap
|
||||
3e00 0000 0000 - 3e80 0000 0000: -
|
||||
@ -276,9 +276,9 @@ C/C++ on linux/powerpc64 (46-bit VMA)
|
||||
*/
|
||||
struct MappingPPC64_46 {
|
||||
static const uptr kMetaShadowBeg = 0x100000000000ull;
|
||||
static const uptr kMetaShadowEnd = 0x200000000000ull;
|
||||
static const uptr kMetaShadowEnd = 0x120000000000ull;
|
||||
static const uptr kShadowBeg = 0x010000000000ull;
|
||||
static const uptr kShadowEnd = 0x100000000000ull;
|
||||
static const uptr kShadowEnd = 0x080000000000ull;
|
||||
static const uptr kHeapMemBeg = 0x3d0000000000ull;
|
||||
static const uptr kHeapMemEnd = 0x3e0000000000ull;
|
||||
static const uptr kLoAppMemBeg = 0x000000001000ull;
|
||||
@ -297,19 +297,19 @@ struct MappingPPC64_46 {
|
||||
C/C++ on linux/powerpc64 (47-bit VMA)
|
||||
0000 0000 1000 - 0100 0000 0000: main binary
|
||||
0100 0000 0000 - 0200 0000 0000: -
|
||||
0100 0000 0000 - 1000 0000 0000: shadow
|
||||
1000 0000 0000 - 1000 0000 0000: -
|
||||
1000 0000 0000 - 2000 0000 0000: metainfo (memory blocks and sync objects)
|
||||
2000 0000 0000 - 7d00 0000 0000: -
|
||||
0100 0000 0000 - 0800 0000 0000: shadow
|
||||
0800 0000 0000 - 1000 0000 0000: -
|
||||
1000 0000 0000 - 1200 0000 0000: metainfo (memory blocks and sync objects)
|
||||
1200 0000 0000 - 7d00 0000 0000: -
|
||||
7d00 0000 0000 - 7e00 0000 0000: heap
|
||||
7e00 0000 0000 - 7e80 0000 0000: -
|
||||
7e80 0000 0000 - 8000 0000 0000: modules and main thread stack
|
||||
*/
|
||||
struct MappingPPC64_47 {
|
||||
static const uptr kMetaShadowBeg = 0x100000000000ull;
|
||||
static const uptr kMetaShadowEnd = 0x200000000000ull;
|
||||
static const uptr kMetaShadowEnd = 0x120000000000ull;
|
||||
static const uptr kShadowBeg = 0x010000000000ull;
|
||||
static const uptr kShadowEnd = 0x100000000000ull;
|
||||
static const uptr kShadowEnd = 0x080000000000ull;
|
||||
static const uptr kHeapMemBeg = 0x7d0000000000ull;
|
||||
static const uptr kHeapMemEnd = 0x7e0000000000ull;
|
||||
static const uptr kLoAppMemBeg = 0x000000001000ull;
|
||||
@ -330,8 +330,8 @@ While the kernel provides a 64-bit address space, we have to restrict ourselves
|
||||
to 48 bits due to how e.g. SyncVar::GetId() works.
|
||||
0000 0000 1000 - 0e00 0000 0000: binary, modules, stacks - 14 TiB
|
||||
0e00 0000 0000 - 2000 0000 0000: -
|
||||
2000 0000 0000 - 8000 0000 0000: shadow - 64TiB (4 * app)
|
||||
8000 0000 0000 - 9000 0000 0000: -
|
||||
2000 0000 0000 - 4000 0000 0000: shadow - 32TiB (2 * app)
|
||||
4000 0000 0000 - 9000 0000 0000: -
|
||||
9000 0000 0000 - 9800 0000 0000: metainfo - 8TiB (0.5 * app)
|
||||
9800 0000 0000 - be00 0000 0000: -
|
||||
be00 0000 0000 - c000 0000 0000: heap - 2TiB (max supported by the allocator)
|
||||
@ -340,7 +340,7 @@ struct MappingS390x {
|
||||
static const uptr kMetaShadowBeg = 0x900000000000ull;
|
||||
static const uptr kMetaShadowEnd = 0x980000000000ull;
|
||||
static const uptr kShadowBeg = 0x200000000000ull;
|
||||
static const uptr kShadowEnd = 0x800000000000ull;
|
||||
static const uptr kShadowEnd = 0x400000000000ull;
|
||||
static const uptr kHeapMemBeg = 0xbe0000000000ull;
|
||||
static const uptr kHeapMemEnd = 0xc00000000000ull;
|
||||
static const uptr kLoAppMemBeg = 0x000000001000ull;
|
||||
@ -360,8 +360,8 @@ struct MappingS390x {
|
||||
0000 1000 0000 - 00c0 0000 0000: -
|
||||
00c0 0000 0000 - 00e0 0000 0000: heap
|
||||
00e0 0000 0000 - 2000 0000 0000: -
|
||||
2000 0000 0000 - 2380 0000 0000: shadow
|
||||
2380 0000 0000 - 3000 0000 0000: -
|
||||
2000 0000 0000 - 21c0 0000 0000: shadow
|
||||
21c0 0000 0000 - 3000 0000 0000: -
|
||||
3000 0000 0000 - 4000 0000 0000: metainfo (memory blocks and sync objects)
|
||||
4000 0000 0000 - 8000 0000 0000: -
|
||||
*/
|
||||
@ -370,7 +370,7 @@ struct MappingGo48 {
|
||||
static const uptr kMetaShadowBeg = 0x300000000000ull;
|
||||
static const uptr kMetaShadowEnd = 0x400000000000ull;
|
||||
static const uptr kShadowBeg = 0x200000000000ull;
|
||||
static const uptr kShadowEnd = 0x238000000000ull;
|
||||
static const uptr kShadowEnd = 0x21c000000000ull;
|
||||
static const uptr kLoAppMemBeg = 0x000000001000ull;
|
||||
static const uptr kLoAppMemEnd = 0x00e000000000ull;
|
||||
static const uptr kMidAppMemBeg = 0;
|
||||
@ -390,8 +390,8 @@ struct MappingGo48 {
|
||||
0000 1000 0000 - 00f8 0000 0000: -
|
||||
00c0 0000 0000 - 00e0 0000 0000: heap
|
||||
00e0 0000 0000 - 0100 0000 0000: -
|
||||
0100 0000 0000 - 0500 0000 0000: shadow
|
||||
0500 0000 0000 - 0700 0000 0000: -
|
||||
0100 0000 0000 - 0300 0000 0000: shadow
|
||||
0300 0000 0000 - 0700 0000 0000: -
|
||||
0700 0000 0000 - 0770 0000 0000: metainfo (memory blocks and sync objects)
|
||||
07d0 0000 0000 - 8000 0000 0000: -
|
||||
*/
|
||||
@ -400,7 +400,7 @@ struct MappingGoWindows {
|
||||
static const uptr kMetaShadowBeg = 0x070000000000ull;
|
||||
static const uptr kMetaShadowEnd = 0x077000000000ull;
|
||||
static const uptr kShadowBeg = 0x010000000000ull;
|
||||
static const uptr kShadowEnd = 0x050000000000ull;
|
||||
static const uptr kShadowEnd = 0x030000000000ull;
|
||||
static const uptr kLoAppMemBeg = 0x000000001000ull;
|
||||
static const uptr kLoAppMemEnd = 0x00e000000000ull;
|
||||
static const uptr kMidAppMemBeg = 0;
|
||||
@ -420,17 +420,17 @@ struct MappingGoWindows {
|
||||
0000 1000 0000 - 00c0 0000 0000: -
|
||||
00c0 0000 0000 - 00e0 0000 0000: heap
|
||||
00e0 0000 0000 - 2000 0000 0000: -
|
||||
2000 0000 0000 - 2380 0000 0000: shadow
|
||||
2380 0000 0000 - 2400 0000 0000: -
|
||||
2400 0000 0000 - 3400 0000 0000: metainfo (memory blocks and sync objects)
|
||||
3400 0000 0000 - 4000 0000 0000: -
|
||||
2000 0000 0000 - 21c0 0000 0000: shadow
|
||||
21c0 0000 0000 - 2400 0000 0000: -
|
||||
2400 0000 0000 - 2470 0000 0000: metainfo (memory blocks and sync objects)
|
||||
2470 0000 0000 - 4000 0000 0000: -
|
||||
*/
|
||||
|
||||
struct MappingGoPPC64_46 {
|
||||
static const uptr kMetaShadowBeg = 0x240000000000ull;
|
||||
static const uptr kMetaShadowEnd = 0x340000000000ull;
|
||||
static const uptr kMetaShadowEnd = 0x247000000000ull;
|
||||
static const uptr kShadowBeg = 0x200000000000ull;
|
||||
static const uptr kShadowEnd = 0x238000000000ull;
|
||||
static const uptr kShadowEnd = 0x21c000000000ull;
|
||||
static const uptr kLoAppMemBeg = 0x000000001000ull;
|
||||
static const uptr kLoAppMemEnd = 0x00e000000000ull;
|
||||
static const uptr kMidAppMemBeg = 0;
|
||||
@ -450,17 +450,17 @@ struct MappingGoPPC64_46 {
|
||||
0000 1000 0000 - 00c0 0000 0000: -
|
||||
00c0 0000 0000 - 00e0 0000 0000: heap
|
||||
00e0 0000 0000 - 2000 0000 0000: -
|
||||
2000 0000 0000 - 3000 0000 0000: shadow
|
||||
3000 0000 0000 - 3000 0000 0000: -
|
||||
3000 0000 0000 - 4000 0000 0000: metainfo (memory blocks and sync objects)
|
||||
4000 0000 0000 - 8000 0000 0000: -
|
||||
2000 0000 0000 - 2800 0000 0000: shadow
|
||||
2800 0000 0000 - 3000 0000 0000: -
|
||||
3000 0000 0000 - 3200 0000 0000: metainfo (memory blocks and sync objects)
|
||||
3200 0000 0000 - 8000 0000 0000: -
|
||||
*/
|
||||
|
||||
struct MappingGoPPC64_47 {
|
||||
static const uptr kMetaShadowBeg = 0x300000000000ull;
|
||||
static const uptr kMetaShadowEnd = 0x400000000000ull;
|
||||
static const uptr kMetaShadowEnd = 0x320000000000ull;
|
||||
static const uptr kShadowBeg = 0x200000000000ull;
|
||||
static const uptr kShadowEnd = 0x300000000000ull;
|
||||
static const uptr kShadowEnd = 0x280000000000ull;
|
||||
static const uptr kLoAppMemBeg = 0x000000001000ull;
|
||||
static const uptr kLoAppMemEnd = 0x00e000000000ull;
|
||||
static const uptr kMidAppMemBeg = 0;
|
||||
@ -480,16 +480,16 @@ struct MappingGoPPC64_47 {
|
||||
0000 1000 0000 - 00c0 0000 0000: -
|
||||
00c0 0000 0000 - 00e0 0000 0000: heap
|
||||
00e0 0000 0000 - 2000 0000 0000: -
|
||||
2000 0000 0000 - 3000 0000 0000: shadow
|
||||
3000 0000 0000 - 3000 0000 0000: -
|
||||
3000 0000 0000 - 4000 0000 0000: metainfo (memory blocks and sync objects)
|
||||
4000 0000 0000 - 8000 0000 0000: -
|
||||
2000 0000 0000 - 2800 0000 0000: shadow
|
||||
2800 0000 0000 - 3000 0000 0000: -
|
||||
3000 0000 0000 - 3200 0000 0000: metainfo (memory blocks and sync objects)
|
||||
3200 0000 0000 - 8000 0000 0000: -
|
||||
*/
|
||||
struct MappingGoAarch64 {
|
||||
static const uptr kMetaShadowBeg = 0x300000000000ull;
|
||||
static const uptr kMetaShadowEnd = 0x400000000000ull;
|
||||
static const uptr kMetaShadowEnd = 0x320000000000ull;
|
||||
static const uptr kShadowBeg = 0x200000000000ull;
|
||||
static const uptr kShadowEnd = 0x300000000000ull;
|
||||
static const uptr kShadowEnd = 0x280000000000ull;
|
||||
static const uptr kLoAppMemBeg = 0x000000001000ull;
|
||||
static const uptr kLoAppMemEnd = 0x00e000000000ull;
|
||||
static const uptr kMidAppMemBeg = 0;
|
||||
@ -510,16 +510,16 @@ Go on linux/mips64 (47-bit VMA)
|
||||
0000 1000 0000 - 00c0 0000 0000: -
|
||||
00c0 0000 0000 - 00e0 0000 0000: heap
|
||||
00e0 0000 0000 - 2000 0000 0000: -
|
||||
2000 0000 0000 - 3000 0000 0000: shadow
|
||||
3000 0000 0000 - 3000 0000 0000: -
|
||||
3000 0000 0000 - 4000 0000 0000: metainfo (memory blocks and sync objects)
|
||||
2000 0000 0000 - 2800 0000 0000: shadow
|
||||
2800 0000 0000 - 3000 0000 0000: -
|
||||
3000 0000 0000 - 3200 0000 0000: metainfo (memory blocks and sync objects)
|
||||
3200 0000 0000 - 8000 0000 0000: -
|
||||
*/
|
||||
struct MappingGoMips64_47 {
|
||||
static const uptr kMetaShadowBeg = 0x300000000000ull;
|
||||
static const uptr kMetaShadowEnd = 0x400000000000ull;
|
||||
static const uptr kMetaShadowEnd = 0x320000000000ull;
|
||||
static const uptr kShadowBeg = 0x200000000000ull;
|
||||
static const uptr kShadowEnd = 0x300000000000ull;
|
||||
static const uptr kShadowEnd = 0x280000000000ull;
|
||||
static const uptr kLoAppMemBeg = 0x000000001000ull;
|
||||
static const uptr kLoAppMemEnd = 0x00e000000000ull;
|
||||
static const uptr kMidAppMemBeg = 0;
|
||||
@ -538,15 +538,15 @@ struct MappingGoMips64_47 {
|
||||
Go on linux/s390x
|
||||
0000 0000 1000 - 1000 0000 0000: executable and heap - 16 TiB
|
||||
1000 0000 0000 - 4000 0000 0000: -
|
||||
4000 0000 0000 - 8000 0000 0000: shadow - 64TiB (4 * app)
|
||||
8000 0000 0000 - 9000 0000 0000: -
|
||||
4000 0000 0000 - 6000 0000 0000: shadow - 64TiB (4 * app)
|
||||
6000 0000 0000 - 9000 0000 0000: -
|
||||
9000 0000 0000 - 9800 0000 0000: metainfo - 8TiB (0.5 * app)
|
||||
*/
|
||||
struct MappingGoS390x {
|
||||
static const uptr kMetaShadowBeg = 0x900000000000ull;
|
||||
static const uptr kMetaShadowEnd = 0x980000000000ull;
|
||||
static const uptr kShadowBeg = 0x400000000000ull;
|
||||
static const uptr kShadowEnd = 0x800000000000ull;
|
||||
static const uptr kShadowEnd = 0x600000000000ull;
|
||||
static const uptr kLoAppMemBeg = 0x000000001000ull;
|
||||
static const uptr kLoAppMemEnd = 0x100000000000ull;
|
||||
static const uptr kMidAppMemBeg = 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user