[compiler-rt] Go back to using the 32-bit allocator for Fuchsia+RISCV64
authorLeonard Chan <leonardchan@google.com>
Thu, 15 Jun 2023 23:14:05 +0000 (23:14 +0000)
committerLeonard Chan <leonardchan@google.com>
Thu, 15 Jun 2023 23:29:06 +0000 (23:29 +0000)
Due to logic in the 64-bit allocator, the smallest allocation we can
zx_vmar_allocate is 2^37 bytes, but this is too large to allocate for
the standalone lsan allocator on a 39-bit VMA. This leads to the
zx_vmar_allocate call when initially setting up the allocator to fail.
This is similar to what android experiences on a 64-bit system with a
small vma. (See sanitizer_allocator_test.cpp).

This effectively reverts f6c4808d95221a5838e14474d95c6fe85bb1488a and
has Fuchsia use the 32-bit allocator for RISCV.

compiler-rt/lib/sanitizer_common/sanitizer_platform.h

index ea703b7..764996e 100644 (file)
 // 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 (SANITIZER_RISCV64 && !SANITIZER_FUCHSIA) || SANITIZER_IOS
+#  if SANITIZER_RISCV64 || SANITIZER_IOS
 #    define SANITIZER_CAN_USE_ALLOCATOR64 0
 #  elif defined(__mips64) || defined(__hexagon__)
 #    define SANITIZER_CAN_USE_ALLOCATOR64 0