[PATCH] D13817: [sanitizer] [msan] Unify aarch64 mapping

Adhemerval Zanella via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 16 11:01:24 PDT 2015


zatrazz created this revision.
zatrazz added reviewers: pcc, rengolin, eugenis, kcc, samsonov.
zatrazz added a subscriber: llvm-commits.
Herald added subscribers: rengolin, aemerson.

This patch unify the 39-bit and 42-bit mapping for aarch64 using only
one instrumentation algorithm (based on 39-bit mapping). This removes
compiler flag SANITIZER_AARCH64_VMA requirement for msan on aarch64.

The unifies mapping scheme now is:

    {0x00000000000ULL, 0x04000000000ULL, MappingDesc::INVALID, "invalid"},
    {0x04000000000ULL, 0x04100000000ULL, MappingDesc::SHADOW,  "shadow-1"},
    {0x04100000000ULL, 0x04300000000ULL, MappingDesc::SHADOW,  "shadow-2"},
    {0x04300000000ULL, 0x04400000000ULL, MappingDesc::ORIGIN,  "origin-1"},
    {0x04400000000ULL, 0x04600000000ULL, MappingDesc::ORIGIN,  "origin-2"},
    {0x04600000000ULL, 0x05500000000ULL, MappingDesc::INVALID, "invalid"},
    {0x05500000000ULL, 0x05600000000ULL, MappingDesc::APP,     "app-1 (39)"},
    {0x05600000000ULL, 0x07000000000ULL, MappingDesc::INVALID, "invalid"},
    {0x07000000000ULL, 0x08000000000ULL, MappingDesc::APP,     "app-2 (39)"},
    {0x08000000000ULL, 0x2AA00000000ULL, MappingDesc::INVALID, "invalid"},
    // The segments below are only valid and mapped for 42-bit VMA kernels.
    {0x2AA00000000ULL, 0x2AB00000000ULL, MappingDesc::APP,     "app-3 (42)"},
    {0x2AB00000000ULL, 0x2C300000000ULL, MappingDesc::INVALID, "invalid"},
    {0x2C300000000ULL, 0x2C400000000ULL, MappingDesc::SHADOW,  "shadow-3"},
    {0x2C400000000ULL, 0x2C600000000ULL, MappingDesc::INVALID, "invalid"},
    {0x2C600000000ULL, 0x2C700000000ULL, MappingDesc::ORIGIN,  "origin-3"},
    {0x2C700000000ULL, 0x3C100000000ULL, MappingDesc::INVALID, "invalid"},
    {0x3C100000000ULL, 0x3C300000000ULL, MappingDesc::SHADOW,  "shadow-4"},
    {0x3C300000000ULL, 0x3C400000000ULL, MappingDesc::INVALID, "invalid"},
    {0x3C400000000ULL, 0x3C600000000ULL, MappingDesc::ORIGIN,  "origin-5"},
    {0x3C600000000ULL, 0x3F000000000ULL, MappingDesc::INVALID, "invalid"},
    {0x3F000000000ULL, 0x40000000000ULL, MappingDesc::APP,     "app-4 (42)"},


http://reviews.llvm.org/D13817

Files:
  lib/Transforms/Instrumentation/MemorySanitizer.cpp

Index: lib/Transforms/Instrumentation/MemorySanitizer.cpp
===================================================================
--- lib/Transforms/Instrumentation/MemorySanitizer.cpp
+++ lib/Transforms/Instrumentation/MemorySanitizer.cpp
@@ -120,16 +120,6 @@
 
 #define DEBUG_TYPE "msan"
 
-// VMA size definition for architecture that support multiple sizes.
-// AArch64 has 3 VMA sizes: 39, 42 and 48.
-#ifndef SANITIZER_AARCH64_VMA
-# define SANITIZER_AARCH64_VMA 39
-#else
-# if SANITIZER_AARCH64_VMA != 39 && SANITIZER_AARCH64_VMA != 42
-#  error "invalid SANITIZER_AARCH64_VMA size"
-# endif
-#endif
-
 static const unsigned kOriginSize = 4;
 static const unsigned kMinOriginAlignment = 4;
 static const unsigned kShadowTLSAlignment = 8;
@@ -263,17 +253,10 @@
 
 // aarch64 Linux
 static const MemoryMapParams Linux_AArch64_MemoryMapParams = {
-#if SANITIZER_AARCH64_VMA == 39
   0x007C00000000,  // AndMask
   0x000100000000,  // XorMask
   0x004000000000,  // ShadowBase
   0x004300000000,  // OriginBase
-#elif SANITIZER_AARCH64_VMA == 42
-  0x03E000000000,  // AndMask
-  0x001000000000,  // XorMask
-  0x010000000000,  // ShadowBase
-  0x012000000000,  // OriginBase
-#endif
 };
 
 // i386 FreeBSD


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D13817.37613.patch
Type: text/x-patch
Size: 1207 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20151016/874537f8/attachment.bin>


More information about the llvm-commits mailing list