summaryrefslogtreecommitdiff
path: root/lib/asan/asan_mapping.h
diff options
context:
space:
mode:
authorKostya Serebryany <kcc@google.com>2013-01-23 13:27:43 +0000
committerKostya Serebryany <kcc@google.com>2013-01-23 13:27:43 +0000
commite5ab9688b623a5a0150c7eae1ec1caaf06d44758 (patch)
tree21de0cebdfa8feba0f962a81639224ee987a5552 /lib/asan/asan_mapping.h
parent12530820a4d45e799cdbb83e7b3b1e8ef111650c (diff)
[asan] initialize kHighMemEnd at startup (instead of at compile time) to simplify further changes for various address space layouts. Fix asan_allocator2 for PowerPC (tested on 44-bit address space)
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@173260 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/asan/asan_mapping.h')
-rw-r--r--lib/asan/asan_mapping.h15
1 files changed, 3 insertions, 12 deletions
diff --git a/lib/asan/asan_mapping.h b/lib/asan/asan_mapping.h
index 2b77e24e5..06efabee6 100644
--- a/lib/asan/asan_mapping.h
+++ b/lib/asan/asan_mapping.h
@@ -43,20 +43,9 @@ extern SANITIZER_INTERFACE_ATTRIBUTE uptr __asan_mapping_offset;
#endif // ASAN_FLEXIBLE_MAPPING_AND_OFFSET
#define SHADOW_GRANULARITY (1ULL << SHADOW_SCALE)
-#define MEM_TO_SHADOW(mem) (((mem) >> SHADOW_SCALE) | (SHADOW_OFFSET))
+#define MEM_TO_SHADOW(mem) (((mem) >> SHADOW_SCALE) + (SHADOW_OFFSET))
#define SHADOW_TO_MEM(shadow) (((shadow) - SHADOW_OFFSET) << SHADOW_SCALE)
-#if SANITIZER_WORDSIZE == 64
-# if defined(__powerpc64__)
- static const uptr kHighMemEnd = 0x00000fffffffffffUL;
-# else
- static const uptr kHighMemEnd = 0x00007fffffffffffUL;
-# endif
-#else // SANITIZER_WORDSIZE == 32
- static const uptr kHighMemEnd = 0xffffffff;
-#endif // SANITIZER_WORDSIZE
-
-
#define kLowMemBeg 0
#define kLowMemEnd (SHADOW_OFFSET ? SHADOW_OFFSET - 1 : 0)
@@ -78,6 +67,8 @@ extern SANITIZER_INTERFACE_ATTRIBUTE uptr __asan_mapping_offset;
namespace __asan {
+extern uptr kHighMemEnd; // Initialized in __asan_init.
+
static inline bool AddrIsInLowMem(uptr a) {
return a < kLowMemEnd;
}