[tsan] Fix aarch64-*-linux after D86377
authorFangrui Song <i@maskray.me>
Thu, 11 Mar 2021 06:16:03 +0000 (22:16 -0800)
committerFangrui Song <i@maskray.me>
Thu, 11 Mar 2021 06:16:04 +0000 (22:16 -0800)
All check-tsan tests fail on aarch64-*-linux because HeapMemEnd() > ShadowBeg()
for the following code path:
```
 #if defined(__aarch64__) && !HAS_48_BIT_ADDRESS_SPACE
   ProtectRange(HeapMemEnd(), ShadowBeg());
```

Restore the behavior before D86377 for aarch64-*-linux.

compiler-rt/lib/tsan/rtl/tsan_platform_posix.cpp

index 8e14a05..73e1d45 100644 (file)
@@ -99,7 +99,7 @@ void CheckAndProtect() {
     Die();
   }
 
-#if defined(__aarch64__) && !HAS_48_BIT_ADDRESS_SPACE
+#if defined(__aarch64__) && defined(__APPLE__) && !HAS_48_BIT_ADDRESS_SPACE
   ProtectRange(HeapMemEnd(), ShadowBeg());
   ProtectRange(ShadowEnd(), MetaShadowBeg());
   ProtectRange(MetaShadowEnd(), TraceMemBeg());