forked from OSchip/llvm-project
0c3bc1f3a4
Fixes the ASan RISC-V memory mapping (originally introduced by D87580 and D87581). This should be an improvement both in terms of first principles soundness and observed test failures --- test failures would occur non-deterministically depending on the ASLR random offset. On RISC-V Linux (64-bit), `TASK_UNMAPPED_BASE` is currently defined as `PAGE_ALIGN(TASK_SIZE / 3)`. The non-power-of-two divisor makes the result be the not very round number 0x1555556000. That address had to be further rounded to ensure page alignment after the shadow scale shifting is applied. Still, that value explains why the mapping table may look less regular than expected. Further cleanups: - Moved the mapping table comment, to ensure that the two Linux/AArch64 tables stayed together; - Removed mention of Sv48. Neither the original mapping nor this one are compatible with an actual Linux Sv48 address space (mainline Linux still operates Sv48 in Sv39 mode). A future patch can improve this; - Removed the additional comments, for consistency. Differential Revision: https://reviews.llvm.org/D97646 |
||
---|---|---|
.. | ||
scripts | ||
tests | ||
.clang-format | ||
CMakeLists.txt | ||
README.txt | ||
asan.syms.extra | ||
asan_activation.cpp | ||
asan_activation.h | ||
asan_activation_flags.inc | ||
asan_allocator.cpp | ||
asan_allocator.h | ||
asan_blacklist.txt | ||
asan_debugging.cpp | ||
asan_descriptions.cpp | ||
asan_descriptions.h | ||
asan_errors.cpp | ||
asan_errors.h | ||
asan_fake_stack.cpp | ||
asan_fake_stack.h | ||
asan_flags.cpp | ||
asan_flags.h | ||
asan_flags.inc | ||
asan_fuchsia.cpp | ||
asan_globals.cpp | ||
asan_globals_win.cpp | ||
asan_init_version.h | ||
asan_interceptors.cpp | ||
asan_interceptors.h | ||
asan_interceptors_memintrinsics.cpp | ||
asan_interceptors_memintrinsics.h | ||
asan_interceptors_vfork.S | ||
asan_interface.inc | ||
asan_interface_internal.h | ||
asan_internal.h | ||
asan_linux.cpp | ||
asan_lock.h | ||
asan_mac.cpp | ||
asan_malloc_linux.cpp | ||
asan_malloc_local.h | ||
asan_malloc_mac.cpp | ||
asan_malloc_win.cpp | ||
asan_mapping.h | ||
asan_mapping_myriad.h | ||
asan_mapping_sparc64.h | ||
asan_memory_profile.cpp | ||
asan_new_delete.cpp | ||
asan_poisoning.cpp | ||
asan_poisoning.h | ||
asan_posix.cpp | ||
asan_preinit.cpp | ||
asan_premap_shadow.cpp | ||
asan_premap_shadow.h | ||
asan_report.cpp | ||
asan_report.h | ||
asan_rtems.cpp | ||
asan_rtl.cpp | ||
asan_scariness_score.h | ||
asan_shadow_setup.cpp | ||
asan_stack.cpp | ||
asan_stack.h | ||
asan_stats.cpp | ||
asan_stats.h | ||
asan_suppressions.cpp | ||
asan_suppressions.h | ||
asan_thread.cpp | ||
asan_thread.h | ||
asan_win.cpp | ||
asan_win_dll_thunk.cpp | ||
asan_win_dynamic_runtime_thunk.cpp | ||
asan_win_weak_interception.cpp | ||
weak_symbols.txt |
README.txt
AddressSanitizer RT ================================ This directory contains sources of the AddressSanitizer (ASan) runtime library. Directory structure: README.txt : This file. Makefile.mk : File for make-based build. CMakeLists.txt : File for cmake-based build. asan_*.{cc,h} : Sources of the asan runtime library. scripts/* : Helper scripts. tests/* : ASan unit tests. Also ASan runtime needs the following libraries: lib/interception/ : Machinery used to intercept function calls. lib/sanitizer_common/ : Code shared between various sanitizers. ASan runtime currently also embeds part of LeakSanitizer runtime for leak detection (lib/lsan/lsan_common.{cc,h}). ASan runtime can only be built by CMake. You can run ASan tests from the root of your CMake build tree: make check-asan For more instructions see: https://github.com/google/sanitizers/wiki/AddressSanitizerHowToBuild