Skip to content

Commit b1338d1

Browse files
authored
[tsan] Shrink RiscV64 48-bit LowApp region slightly to speed up TSan RestoreAddr (#72316)
The RiscV64 48-bit mappings introduced in 46cb8d9 necessitated changing RestoreAddr to use 4-bits as the indicator. This roughly halves the speed of RestoreAddr, because it is now brute-force testing addresses in 1TB increments, rather than 2TB increments. Crucially, this slowdown applies to TSan on all platforms, not just RiscV64 48-bit. This patch slightly shrinks the RiscV64 48-bit LowApp region mapping (from 5TB to 4TB); we hope that 4TB ought to be enough for anybody, especially since there is no ASLR applied to the binary in this region. This allows restoring RestoreAddr to use 3-bits as the indicator again, thus speeding up TSan on all platforms. Co-authored-by: Thurston Dang <thurston@google.com>
1 parent 3ce5c04 commit b1338d1

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

compiler-rt/lib/tsan/rtl/tsan_platform.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -413,18 +413,18 @@ struct MappingRiscv64_39 {
413413

414414
/*
415415
C/C++ on linux/riscv64 (48-bit VMA)
416-
0000 0000 1000 - 0500 0000 0000: main binary ( 5 TB)
416+
0000 0000 1000 - 0400 0000 0000: main binary ( 4 TB)
417417
0500 0000 0000 - 2000 0000 0000: -
418418
2000 0000 0000 - 4000 0000 0000: shadow memory (32 TB)
419419
4000 0000 0000 - 4800 0000 0000: metainfo ( 8 TB)
420420
4800 0000 0000 - 5555 5555 5000: -
421421
5555 5555 5000 - 5a00 0000 0000: main binary (PIE) (~5 TB)
422422
5a00 0000 0000 - 7a00 0000 0000: -
423-
7a00 0000 0000 - 7fff ffff ffff: libraries and main thread stack ( 5 TB)
423+
7a00 0000 0000 - 7fff ffff ffff: libraries and main thread stack ( 6 TB)
424424
*/
425425
struct MappingRiscv64_48 {
426426
static const uptr kLoAppMemBeg = 0x000000001000ull;
427-
static const uptr kLoAppMemEnd = 0x050000000000ull;
427+
static const uptr kLoAppMemEnd = 0x040000000000ull;
428428
static const uptr kShadowBeg = 0x200000000000ull;
429429
static const uptr kShadowEnd = 0x400000000000ull;
430430
static const uptr kMetaShadowBeg = 0x400000000000ull;
@@ -967,7 +967,7 @@ struct RestoreAddrImpl {
967967
Mapping::kMidAppMemEnd, Mapping::kHiAppMemBeg, Mapping::kHiAppMemEnd,
968968
Mapping::kHeapMemBeg, Mapping::kHeapMemEnd,
969969
};
970-
const uptr indicator = 0x0f0000000000ull;
970+
const uptr indicator = 0x0e0000000000ull;
971971
const uptr ind_lsb = 1ull << LeastSignificantSetBitIndex(indicator);
972972
for (uptr i = 0; i < ARRAY_SIZE(ranges); i += 2) {
973973
uptr beg = ranges[i];

0 commit comments

Comments
 (0)