[compiler-rt] 84dbfe1 - [ASan] Replaced constants for SHADOW_OFFSET with defines.

Kirill Stoimenov via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 7 11:34:29 PST 2021


Author: Kirill Stoimenov
Date: 2021-12-07T19:34:17Z
New Revision: 84dbfe16426f76b425c24291942c71b115b565da

URL: https://github.com/llvm/llvm-project/commit/84dbfe16426f76b425c24291942c71b115b565da
DIFF: https://github.com/llvm/llvm-project/commit/84dbfe16426f76b425c24291942c71b115b565da.diff

LOG: [ASan] Replaced constants for SHADOW_OFFSET with defines.

Reviewed By: vitalybuka

Differential Revision: https://reviews.llvm.org/D115214

Added: 
    

Modified: 
    compiler-rt/lib/asan/asan_mapping.h

Removed: 
    


################################################################################
diff  --git a/compiler-rt/lib/asan/asan_mapping.h b/compiler-rt/lib/asan/asan_mapping.h
index f5248f101f055..5e73caa61bf9f 100644
--- a/compiler-rt/lib/asan/asan_mapping.h
+++ b/compiler-rt/lib/asan/asan_mapping.h
@@ -157,22 +157,6 @@ static const u64 kDefaultShadowScale = ASAN_SHADOW_SCALE;
 static const u64 kDefaultShadowScale = 3;
 #endif
 static const u64 kDefaultShadowSentinel = ~(uptr)0;
-static const u64 kDefaultShadowOffset32 = 1ULL << 29;  // 0x20000000
-static const u64 kDefaultShadowOffset64 = 1ULL << 44;  // 0x100000000000
-static const u64 kDefaultShort64bitShadowOffset =
-    0x7FFFFFFF & (~0xFFFULL << kDefaultShadowScale);    // < 2G.
-static const u64 kAArch64_ShadowOffset64 = 1ULL << 36;  // 0x1000000000
-static const u64 kRiscv64_ShadowOffset64 = 0xd55550000;
-static const u64 kMIPS32_ShadowOffset32 = 0x0aaa0000;
-static const u64 kMIPS64_ShadowOffset64 = 1ULL << 37;   // 0x2000000000
-static const u64 kPPC64_ShadowOffset64 = 1ULL << 44;    // 0x100000000000
-static const u64 kSystemZ_ShadowOffset64 = 1ULL << 52;  // 0x10000000000000
-static const u64 kSPARC64_ShadowOffset64 = 1ULL << 43;  // 0x80000000000
-static const u64 kFreeBSD_ShadowOffset32 = 1ULL << 30;  // 0x40000000
-static const u64 kFreeBSD_ShadowOffset64 = 1ULL << 46;  // 0x400000000000
-static const u64 kNetBSD_ShadowOffset32 = 1ULL << 30;   // 0x40000000
-static const u64 kNetBSD_ShadowOffset64 = 1ULL << 46;   // 0x400000000000
-static const u64 kWindowsShadowOffset32 = 3ULL << 28;   // 0x30000000
 
 #define SHADOW_SCALE kDefaultShadowScale
 
@@ -182,17 +166,17 @@ static const u64 kWindowsShadowOffset32 = 3ULL << 28;   // 0x30000000
 #  if SANITIZER_ANDROID
 #    define SHADOW_OFFSET_DYNAMIC
 #  elif defined(__mips__)
-#    define SHADOW_OFFSET_CONST kMIPS32_ShadowOffset32
+#    define SHADOW_OFFSET_CONST 0x0aaa0000
 #  elif SANITIZER_FREEBSD
-#    define SHADOW_OFFSET_CONST kFreeBSD_ShadowOffset32
+#    define SHADOW_OFFSET_CONST 0x40000000
 #  elif SANITIZER_NETBSD
-#    define SHADOW_OFFSET_CONST kNetBSD_ShadowOffset32
+#    define SHADOW_OFFSET_CONST 0x40000000
 #  elif SANITIZER_WINDOWS
-#    define SHADOW_OFFSET_CONST kWindowsShadowOffset32
+#    define SHADOW_OFFSET_CONST 0x30000000
 #  elif SANITIZER_IOS
 #    define SHADOW_OFFSET_DYNAMIC
 #  else
-#    define SHADOW_OFFSET_CONST kDefaultShadowOffset32
+#    define SHADOW_OFFSET_CONST 0x20000000
 #  endif
 #else
 #  if SANITIZER_IOS
@@ -200,34 +184,38 @@ static const u64 kWindowsShadowOffset32 = 3ULL << 28;   // 0x30000000
 #  elif SANITIZER_MAC && defined(__aarch64__)
 #    define SHADOW_OFFSET_DYNAMIC
 #  elif SANITIZER_RISCV64
-#    define SHADOW_OFFSET_CONST kRiscv64_ShadowOffset64
+#    define SHADOW_OFFSET_CONST 0x0000000d55550000
 #  elif defined(__aarch64__)
-#    define SHADOW_OFFSET_CONST kAArch64_ShadowOffset64
+#    define SHADOW_OFFSET_CONST 0x0000001000000000
 #  elif defined(__powerpc64__)
-#    define SHADOW_OFFSET_CONST kPPC64_ShadowOffset64
+#    define SHADOW_OFFSET_CONST 0x0000100000000000
 #  elif defined(__s390x__)
-#    define SHADOW_OFFSET_CONST kSystemZ_ShadowOffset64
+#    define SHADOW_OFFSET_CONST 0x0010000000000000
 #  elif SANITIZER_FREEBSD
-#    define SHADOW_OFFSET_CONST kFreeBSD_ShadowOffset64
+#    define SHADOW_OFFSET_CONST 0x0000400000000000
 #  elif SANITIZER_NETBSD
-#    define SHADOW_OFFSET_CONST kNetBSD_ShadowOffset64
+#    define SHADOW_OFFSET_CONST 0x0000400000000000
 #  elif SANITIZER_MAC
-#    define SHADOW_OFFSET_CONST kDefaultShadowOffset64
+#    define SHADOW_OFFSET_CONST 0x0000100000000000
 #  elif defined(__mips64)
-#    define SHADOW_OFFSET_CONST kMIPS64_ShadowOffset64
+#    define SHADOW_OFFSET_CONST 0x0000002000000000
 #  elif defined(__sparc__)
-#    define SHADOW_OFFSET_CONST kSPARC64_ShadowOffset64
+#    define SHADOW_OFFSET_CONST 0x0000080000000000
 #  elif SANITIZER_WINDOWS64
 #    define SHADOW_OFFSET_DYNAMIC
 #  else
-#    define SHADOW_OFFSET_CONST kDefaultShort64bitShadowOffset
+#    define SHADOW_OFFSET_CONST \
+      0x000000007FFFFFFF & (~0xFFFULL << kDefaultShadowScale)
 #  endif
 #endif
 
 #if defined(SHADOW_OFFSET_CONST)
-#  define SHADOW_OFFSET SHADOW_OFFSET_CONST
+static const u64 kConstShadowOffset = SHADOW_OFFSET_CONST;
+#  define SHADOW_OFFSET kConstShadowOffset
 #elif defined(SHADOW_OFFSET_DYNAMIC)
 #  define SHADOW_OFFSET __asan_shadow_memory_dynamic_address
+#else
+#  error "SHADOW_OFFSET can't be determined."
 #endif
 
 #if SANITIZER_ANDROID && defined(__arm__)


        


More information about the llvm-commits mailing list