From b356b2b3a548cd70c088962c593334ad749589cd Mon Sep 17 00:00:00 2001 From: Jake Egan Date: Wed, 18 Jun 2025 15:04:50 -0400 Subject: [PATCH 1/3] Set allocator size and beginning --- compiler-rt/lib/asan/asan_allocator.h | 4 ++++ .../lib/sanitizer_common/sanitizer_allocator_primary32.h | 1 + 2 files changed, 5 insertions(+) diff --git a/compiler-rt/lib/asan/asan_allocator.h b/compiler-rt/lib/asan/asan_allocator.h index 247d8bb77c984..7dfb055c4f4b7 100644 --- a/compiler-rt/lib/asan/asan_allocator.h +++ b/compiler-rt/lib/asan/asan_allocator.h @@ -198,7 +198,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_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; From 10c603115675faece8b827d625294577c40b11bb Mon Sep 17 00:00:00 2001 From: Jake Egan Date: Thu, 10 Jul 2025 00:39:30 -0400 Subject: [PATCH 2/3] Update PR for SANITIZER_MMAP_BEGIN --- compiler-rt/lib/sanitizer_common/sanitizer_platform.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform.h index 196c0a988478e..6079dff36c8aa 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_platform.h +++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform.h @@ -319,7 +319,11 @@ #endif // The first address that can be returned by mmap. -#define SANITIZER_MMAP_BEGIN 0 +#if SANITIZER_AIX && SANITIZER_WORDSIZE == 64 +# define SANITIZER_MMAP_BEGIN 0x0a00000000000000ULL +#else +# define SANITIZER_MMAP_BEGIN 0 +#endif // The range of addresses which can be returned my mmap. // FIXME: this value should be different on different platforms. Larger values From 1c4588d2f27d5c43943d1fdd67141142fa7dda4a Mon Sep 17 00:00:00 2001 From: Jake Egan Date: Thu, 10 Jul 2025 00:43:38 -0400 Subject: [PATCH 3/3] Fix formatting --- compiler-rt/lib/sanitizer_common/sanitizer_platform.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform.h index 6079dff36c8aa..71bc80e87e3f7 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_platform.h +++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform.h @@ -320,9 +320,9 @@ // The first address that can be returned by mmap. #if SANITIZER_AIX && SANITIZER_WORDSIZE == 64 -# define SANITIZER_MMAP_BEGIN 0x0a00000000000000ULL +# define SANITIZER_MMAP_BEGIN 0x0a00000000000000ULL #else -# define SANITIZER_MMAP_BEGIN 0 +# define SANITIZER_MMAP_BEGIN 0 #endif // The range of addresses which can be returned my mmap.