Skip to content

Commit 4b220d0

Browse files
committed
[asan][hwasan] Add config for AArch64 Linux with 39-bit VA.
This is leveraging work which has already been done for Android, which ships 39-bit VA kernels, and extending it to other embedded Linux targets.
1 parent 7e9db96 commit 4b220d0

File tree

3 files changed

+9
-2
lines changed

3 files changed

+9
-2
lines changed

compiler-rt/CMakeLists.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,9 @@ option(SANITIZER_USE_STATIC_TEST_CXX
290290
"Use static libc++ for tests." ${DEFAULT_SANITIZER_USE_STATIC_TEST_CXX})
291291
pythonize_bool(SANITIZER_USE_STATIC_TEST_CXX)
292292

293+
option(SANITIZER_AARCH64_39BIT_VA
294+
"Configure sanitizer allocator for 39-bit VA kernel." OFF)
295+
293296
set(COMPILER_RT_SUPPORTED_CXX_LIBRARIES none default libcxx)
294297
set(COMPILER_RT_CXX_LIBRARY "default" CACHE STRING "Specify C++ library to use. Supported values are ${COMPILER_RT_SUPPORTED_CXX_LIBRARIES}.")
295298
if (NOT "${COMPILER_RT_CXX_LIBRARY}" IN_LIST COMPILER_RT_SUPPORTED_CXX_LIBRARIES)
@@ -843,6 +846,10 @@ if (SANITIZER_DISABLE_SYMBOLIZER_PATH_SEARCH)
843846
add_compile_definitions(SANITIZER_DISABLE_SYMBOLIZER_PATH_SEARCH)
844847
endif()
845848

849+
if (SANITIZER_AARCH64_39BIT_VA)
850+
add_compile_definitions(SANITIZER_AARCH64_39BIT_VA)
851+
endif()
852+
846853
add_subdirectory(lib)
847854

848855
if(COMPILER_RT_INCLUDE_TESTS)

compiler-rt/lib/asan/asan_allocator.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ const uptr kAllocatorSpace = ~(uptr)0;
200200
# if defined(__powerpc64__)
201201
const uptr kAllocatorSize = 0x20000000000ULL; // 2T.
202202
typedef DefaultSizeClassMap SizeClassMap;
203-
# elif defined(__aarch64__) && SANITIZER_ANDROID
203+
# elif defined(__aarch64__) && (SANITIZER_ANDROID || defined(SANITIZER_AARCH64_39BIT_VA))
204204
// Android needs to support 39, 42 and 48 bit VMA.
205205
const uptr kAllocatorSize = 0x2000000000ULL; // 128G.
206206
typedef VeryCompactSizeClassMap SizeClassMap;

compiler-rt/lib/hwasan/hwasan_allocator.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ struct AP64 {
7474
#if defined(HWASAN_ALIASING_MODE)
7575
static const uptr kSpaceSize = 1ULL << kAddressTagShift;
7676
typedef __sanitizer::DefaultSizeClassMap SizeClassMap;
77-
#elif SANITIZER_LINUX && !SANITIZER_ANDROID
77+
#elif SANITIZER_LINUX && !SANITIZER_ANDROID && !defined(SANITIZER_AARCH64_39BIT_VA)
7878
static const uptr kSpaceSize = 0x40000000000ULL; // 4T.
7979
typedef __sanitizer::DefaultSizeClassMap SizeClassMap;
8080
#else

0 commit comments

Comments
 (0)