2015-01-22 Jakub Jelinek * sanitizer_common/sanitizer_platform.h (SANITIZER_AARCH64_VMA): Set to 42. (SANITIZER_CAN_USE_ALLOCATOR64): Set to 1 on __aarch64__ if SANITIZER_WORDSIZE is 64. (SANITIZER_MMAP_RANGE_SIZE): Define to 1ULL << 42 for __aarch64__. --- libsanitizer/sanitizer_common/sanitizer_platform.h.jj 2015-11-23 13:29:55.000000000 +0100 +++ libsanitizer/sanitizer_common/sanitizer_platform.h 2016-01-15 12:04:08.511206409 +0100 @@ -82,7 +82,7 @@ // VMA size definition for architecture that support multiple sizes. // AArch64 has 3 VMA sizes: 39, 42 and 48. #if !defined(SANITIZER_AARCH64_VMA) -# define SANITIZER_AARCH64_VMA 39 +# define SANITIZER_AARCH64_VMA 42 #else # if SANITIZER_AARCH64_VMA != 39 && SANITIZER_AARCH64_VMA != 42 # error "invalid SANITIZER_AARCH64_VMA size" @@ -95,7 +95,7 @@ // For such platforms build this code with -DSANITIZER_CAN_USE_ALLOCATOR64=0 or // change the definition of SANITIZER_CAN_USE_ALLOCATOR64 here. #ifndef SANITIZER_CAN_USE_ALLOCATOR64 -# if defined(__mips64) || defined(__aarch64__) +# if defined(__mips64) # define SANITIZER_CAN_USE_ALLOCATOR64 0 # else # define SANITIZER_CAN_USE_ALLOCATOR64 (SANITIZER_WORDSIZE == 64) @@ -107,6 +107,8 @@ // will still work but will consume more memory for TwoLevelByteMap. #if defined(__mips__) # define SANITIZER_MMAP_RANGE_SIZE FIRST_32_SECOND_64(1ULL << 32, 1ULL << 40) +#elif defined(__aarch64__) +# define SANITIZER_MMAP_RANGE_SIZE FIRST_32_SECOND_64(1ULL << 32, 1ULL << 42) #else # define SANITIZER_MMAP_RANGE_SIZE FIRST_32_SECOND_64(1ULL << 32, 1ULL << 47) #endif