[compiler-rt] bd0fc48 - [sanitizer_common] Use 38-bit mmap range for Fuchsia (#69387)

via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 17 17:03:02 PDT 2023


Author: PiJoules
Date: 2023-10-17T17:02:59-07:00
New Revision: bd0fc480df2f04b579ecac60cd9709c570b34f1f

URL: https://github.com/llvm/llvm-project/commit/bd0fc480df2f04b579ecac60cd9709c570b34f1f
DIFF: https://github.com/llvm/llvm-project/commit/bd0fc480df2f04b579ecac60cd9709c570b34f1f.diff

LOG: [sanitizer_common] Use 38-bit mmap range for Fuchsia (#69387)

46cb8d9a325233ac11ed5e90367c43774294d87e unconditionally changed the
mmap range to 2^48 for all riscv sanitizers. This changes the allocator
tunings for the 32-bit allocator for riscv and led to a severe
performance regression for our lsan tests. This effectively revers the
tuning change but only for Fuchsia.

Once we enable the 64-bit allocator for everything riscv, this value
will be irrelevant since it's only relevant for the 32-bit allocator.

Added: 
    

Modified: 
    compiler-rt/lib/sanitizer_common/sanitizer_platform.h

Removed: 
    


################################################################################
diff  --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform.h
index 5280416f8bd3029..df446d0659f8ba9 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_platform.h
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform.h
@@ -303,7 +303,15 @@
 #    define SANITIZER_MMAP_RANGE_SIZE FIRST_32_SECOND_64(1ULL << 32, 1ULL << 40)
 #  endif
 #elif SANITIZER_RISCV64
-#  define SANITIZER_MMAP_RANGE_SIZE FIRST_32_SECOND_64(1ULL << 32, 1ULL << 47)
+// FIXME: Rather than hardcoding the VMA here, we should rely on
+// GetMaxUserVirtualAddress(). This will require some refactoring though since
+// many places either hardcode some value or SANITIZER_MMAP_RANGE_SIZE is
+// assumed to be some constant integer.
+#  if SANITIZER_FUCHSIA
+#    define SANITIZER_MMAP_RANGE_SIZE (1ULL << 38)
+#  else
+#    define SANITIZER_MMAP_RANGE_SIZE FIRST_32_SECOND_64(1ULL << 32, 1ULL << 47)
+#  endif
 #elif defined(__aarch64__)
 #  if SANITIZER_APPLE
 #    if SANITIZER_OSX || SANITIZER_IOSSIM


        


More information about the llvm-commits mailing list