[compiler-rt] [asan][sanitizer_common][AIX] Set allocator size and beginning (PR #144784)
Jake Egan via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 18 12:12:54 PDT 2025
https://github.com/jakeegan created https://github.com/llvm/llvm-project/pull/144784
None
>From e586f1273e5180c01fcb5751570d71094a934313 Mon Sep 17 00:00:00 2001
From: Jake Egan <jake.egan at ibm.com>
Date: Wed, 18 Jun 2025 15:04:50 -0400
Subject: [PATCH] Set allocator size and beginning
---
compiler-rt/lib/asan/asan_allocator.h | 4 ++++
.../lib/sanitizer_common/sanitizer_allocator_internal.h | 5 +++++
.../lib/sanitizer_common/sanitizer_allocator_primary32.h | 1 +
3 files changed, 10 insertions(+)
diff --git a/compiler-rt/lib/asan/asan_allocator.h b/compiler-rt/lib/asan/asan_allocator.h
index db8dc3bebfc62..6fb533423580d 100644
--- a/compiler-rt/lib/asan/asan_allocator.h
+++ b/compiler-rt/lib/asan/asan_allocator.h
@@ -197,7 +197,11 @@ const uptr kAllocatorSpace = ~(uptr)0;
# endif // SANITIZER_APPLE
# if defined(__powerpc64__)
+# if SANITIZER_AIX
+const uptr kAllocatorSize = 1ULL << 38; // 256G.
+# else
const uptr kAllocatorSize = 0x20000000000ULL; // 2T.
+# endif
typedef DefaultSizeClassMap SizeClassMap;
# elif defined(__aarch64__) && SANITIZER_ANDROID
// Android needs to support 39, 42 and 48 bit VMA.
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_allocator_internal.h b/compiler-rt/lib/sanitizer_common/sanitizer_allocator_internal.h
index 62523c7ae187c..e5b912d70e61e 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_allocator_internal.h
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_allocator_internal.h
@@ -23,7 +23,12 @@ namespace __sanitizer {
typedef CompactSizeClassMap InternalSizeClassMap;
struct AP32 {
+// For AIX 64-bit, the mmap begin is at address 0x0a00000000000000ULL.
+#if SANITIZER_AIX && SANITIZER_WORDSIZE == 64
+ static const uptr kSpaceBeg = 0x0a00000000000000ULL;
+#else
static const uptr kSpaceBeg = 0;
+#endif
static const u64 kSpaceSize = SANITIZER_MMAP_RANGE_SIZE;
static const uptr kMetadataSize = 0;
typedef InternalSizeClassMap SizeClassMap;
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_allocator_primary32.h b/compiler-rt/lib/sanitizer_common/sanitizer_allocator_primary32.h
index 602b197c42ae3..0faf9b3c151a4 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_allocator_primary32.h
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_allocator_primary32.h
@@ -288,6 +288,7 @@ class SizeClassAllocator32 {
uptr ComputeRegionId(uptr mem) const {
if (SANITIZER_SIGN_EXTENDED_ADDRESSES)
mem &= (kSpaceSize - 1);
+ mem -= kSpaceBeg;
const uptr res = mem >> kRegionSizeLog;
CHECK_LT(res, kNumPossibleRegions);
return res;
More information about the llvm-commits
mailing list