The patch set aims to update libsanitizer from upstream. The motivation is that RISC-V is changing the shadow offset for AddressSanitizer, and I also plan to submit another patch set to add dynamic shadow offset support for GCC.
This is my first time updating it, so I used my laptop and an AArch64 server from cfram to run the regression tests. I tested on x86_64/Linux (Ubuntu 22.04) and AArch64/Linux (Rocky 9.4), both with --with-build-config=bootstrap-asan and performed a standard 3-stage build. No new regressions were introduced. NOTE: I tried to run regression tests with --with-build-config=bootstrap-asan, but I received warnings from LeakSanitizer due to the pretty printer, which make the test results unusable... Kito Cheng (4): libsanitizer: merge from upstream (61a6439f35b6de28) libsanitizer: Apply local patches libsanitizer: Improve FrameIsInternal libsanitizer: update test gcc/testsuite/c-c++-common/ubsan/builtin-1.c | 4 +- libsanitizer/MERGE | 2 +- libsanitizer/asan/Makefile.am | 1 - libsanitizer/asan/Makefile.in | 5 +- libsanitizer/asan/asan_allocator.cpp | 10 +- libsanitizer/asan/asan_allocator.h | 36 +- libsanitizer/asan/asan_descriptions.cpp | 52 +- libsanitizer/asan/asan_descriptions.h | 2 - libsanitizer/asan/asan_errors.cpp | 20 +- libsanitizer/asan/asan_errors.h | 19 + libsanitizer/asan/asan_flags.cpp | 96 +- libsanitizer/asan/asan_fuchsia.cpp | 7 +- libsanitizer/asan/asan_globals.cpp | 259 +- libsanitizer/asan/asan_globals_win.cpp | 12 +- libsanitizer/asan/asan_interceptors.cpp | 139 +- libsanitizer/asan/asan_interceptors.h | 8 - libsanitizer/asan/asan_internal.h | 4 +- libsanitizer/asan/asan_linux.cpp | 29 +- libsanitizer/asan/asan_lock.h | 0 libsanitizer/asan/asan_mac.cpp | 12 +- libsanitizer/asan/asan_malloc_linux.cpp | 16 +- libsanitizer/asan/asan_malloc_mac.cpp | 5 +- libsanitizer/asan/asan_malloc_win.cpp | 97 +- libsanitizer/asan/asan_malloc_win_thunk.cpp | 229 ++ libsanitizer/asan/asan_mapping.h | 7 +- libsanitizer/asan/asan_new_delete.cpp | 9 - libsanitizer/asan/asan_poisoning.cpp | 184 +- libsanitizer/asan/asan_posix.cpp | 47 +- libsanitizer/asan/asan_preinit.cpp | 10 +- libsanitizer/asan/asan_premap_shadow.cpp | 3 +- libsanitizer/asan/asan_report.cpp | 43 +- libsanitizer/asan/asan_report.h | 3 + libsanitizer/asan/asan_rtl.cpp | 65 +- libsanitizer/asan/asan_rtl_x86_64.S | 10 + libsanitizer/asan/asan_suppressions.cpp | 12 +- libsanitizer/asan/asan_thread.cpp | 40 +- libsanitizer/asan/asan_thread.h | 11 +- libsanitizer/asan/asan_win.cpp | 12 +- .../asan/asan_win_common_runtime_thunk.cpp | 112 + .../asan/asan_win_common_runtime_thunk.h | 38 + libsanitizer/asan/asan_win_dll_thunk.cpp | 165 -- .../asan/asan_win_dynamic_runtime_thunk.cpp | 104 +- .../asan/asan_win_static_runtime_thunk.cpp | 113 + .../asan/asan_win_weak_interception.cpp | 22 - libsanitizer/builtins/assembly.h | 5 +- libsanitizer/hwasan/hwasan.cpp | 8 +- libsanitizer/hwasan/hwasan.h | 10 +- .../hwasan/hwasan_allocation_functions.cpp | 8 +- libsanitizer/hwasan/hwasan_allocator.cpp | 7 +- libsanitizer/hwasan/hwasan_checks.h | 1 - libsanitizer/hwasan/hwasan_dynamic_shadow.cpp | 17 +- libsanitizer/hwasan/hwasan_flags.inc | 7 + libsanitizer/hwasan/hwasan_interceptors.cpp | 7 +- .../hwasan/hwasan_interface_internal.h | 3 + libsanitizer/hwasan/hwasan_linux.cpp | 108 +- libsanitizer/hwasan/hwasan_preinit.cpp | 10 +- libsanitizer/hwasan/hwasan_report.cpp | 161 +- libsanitizer/hwasan/hwasan_thread.cpp | 8 +- libsanitizer/hwasan/hwasan_thread_list.cpp | 9 +- libsanitizer/hwasan/hwasan_thread_list.h | 8 +- .../include/sanitizer/allocator_interface.h | 15 +- .../include/sanitizer/common_interface_defs.h | 39 +- .../include/sanitizer/hwasan_interface.h | 4 + .../include/sanitizer/linux_syscall_hooks.h | 16 +- .../include/sanitizer/memprof_interface.h | 6 + .../include/sanitizer/nsan_interface.h | 75 + .../include/sanitizer/rtsan_interface.h | 75 + .../include/sanitizer/ubsan_interface.h | 2 + libsanitizer/interception/interception.h | 35 +- .../interception/interception_linux.h | 16 +- .../interception/interception_type_test.cpp | 31 +- .../interception/interception_win.cpp | 237 +- libsanitizer/lsan/lsan.cpp | 3 +- libsanitizer/lsan/lsan.h | 1 + libsanitizer/lsan/lsan_allocator.cpp | 2 +- libsanitizer/lsan/lsan_common.cpp | 355 ++- libsanitizer/lsan/lsan_common.h | 5 + libsanitizer/lsan/lsan_common_linux.cpp | 2 +- libsanitizer/lsan/lsan_flags.inc | 7 + libsanitizer/lsan/lsan_fuchsia.cpp | 1 + libsanitizer/lsan/lsan_interceptors.cpp | 12 +- libsanitizer/lsan/lsan_posix.cpp | 45 +- libsanitizer/lsan/lsan_preinit.cpp | 8 +- libsanitizer/lsan/lsan_thread.cpp | 13 +- libsanitizer/sanitizer_common/Makefile.am | 6 +- libsanitizer/sanitizer_common/Makefile.in | 20 +- .../sanitizer_common/sancov_flags.cpp | 6 +- .../sanitizer_common/sanitizer_allocator.cpp | 7 +- .../sanitizer_allocator_dlsym.h | 13 +- .../sanitizer_allocator_interface.h | 2 + .../sanitizer_allocator_primary32.h | 2 +- .../sanitizer_allocator_primary64.h | 13 +- .../sanitizer_common/sanitizer_atomic.h | 14 +- .../sanitizer_common/sanitizer_atomic_clang.h | 85 +- .../sanitizer_atomic_clang_mips.h | 117 - .../sanitizer_atomic_clang_other.h | 85 - .../sanitizer_atomic_clang_x86.h | 113 - .../sanitizer_common/sanitizer_atomic_msvc.h | 8 +- .../sanitizer_common/sanitizer_bitvector.h | 8 +- .../sanitizer_chained_origin_depot.cpp | 6 +- .../sanitizer_chained_origin_depot.h | 4 +- .../sanitizer_common/sanitizer_common.cpp | 15 +- .../sanitizer_common/sanitizer_common.h | 61 +- .../sanitizer_common_interceptors.inc | 457 ++-- .../sanitizer_common_interface.inc | 9 + .../sanitizer_common_libcdep.cpp | 34 +- .../sanitizer_common_nolibc.cpp | 7 +- .../sanitizer_common_syscalls.inc | 68 +- .../sanitizer_coverage_fuchsia.cpp | 2 +- .../sanitizer_coverage_libcdep_new.cpp | 3 +- .../sanitizer_coverage_win_dll_thunk.cpp | 20 - ... sanitizer_coverage_win_runtime_thunk.cpp} | 21 +- ...nitizer_coverage_win_weak_interception.cpp | 23 - .../sanitizer_common/sanitizer_dense_map.h | 70 +- .../sanitizer_common/sanitizer_errno.cpp | 1 + .../sanitizer_common/sanitizer_errno_codes.h | 1 + .../sanitizer_common/sanitizer_file.cpp | 4 +- .../sanitizer_common/sanitizer_flags.inc | 7 + .../sanitizer_common/sanitizer_flat_map.h | 4 + .../sanitizer_common/sanitizer_freebsd.h | 137 -- .../sanitizer_common/sanitizer_fuchsia.cpp | 107 +- .../sanitizer_common/sanitizer_hash.h | 2 +- .../sanitizer_interface_internal.h | 10 + .../sanitizer_internal_defs.h | 45 +- .../sanitizer_common/sanitizer_libignore.cpp | 32 +- .../sanitizer_common/sanitizer_libignore.h | 35 +- .../sanitizer_common/sanitizer_linux.cpp | 2137 ++++++++++------- .../sanitizer_common/sanitizer_linux.h | 122 +- .../sanitizer_linux_libcdep.cpp | 730 +++--- .../sanitizer_common/sanitizer_linux_s390.cpp | 164 +- .../sanitizer_common/sanitizer_mac.cpp | 46 +- .../sanitizer_common/sanitizer_mallinfo.h | 4 + .../sanitizer_common/sanitizer_mutex.cpp | 6 +- .../sanitizer_placement_new.h | 4 +- .../sanitizer_common/sanitizer_platform.h | 17 +- .../sanitizer_platform_interceptors.h | 54 +- .../sanitizer_platform_limits_freebsd.cpp | 2 + .../sanitizer_platform_limits_freebsd.h | 24 +- .../sanitizer_platform_limits_openbsd.cpp | 0 .../sanitizer_platform_limits_openbsd.h | 0 .../sanitizer_platform_limits_posix.cpp | 57 +- .../sanitizer_platform_limits_posix.h | 32 +- .../sanitizer_common/sanitizer_posix.cpp | 22 +- .../sanitizer_common/sanitizer_posix.h | 32 +- .../sanitizer_posix_libcdep.cpp | 133 +- .../sanitizer_common/sanitizer_printf.cpp | 2 +- .../sanitizer_procmaps_bsd.cpp | 47 +- .../sanitizer_procmaps_common.cpp | 2 +- .../sanitizer_procmaps_mac.cpp | 4 +- .../sanitizer_procmaps_solaris.cpp | 4 + .../sanitizer_common/sanitizer_ptrauth.h | 46 +- .../sanitizer_redefine_builtins.h | 8 +- .../sanitizer_stack_store.cpp | 9 +- .../sanitizer_common/sanitizer_stackdepot.cpp | 8 +- .../sanitizer_common/sanitizer_stackdepot.h | 4 +- .../sanitizer_stackdepotbase.h | 31 +- .../sanitizer_stacktrace_libcdep.cpp | 20 +- .../sanitizer_stacktrace_printer.cpp | 45 +- .../sanitizer_stacktrace_printer.h | 48 +- .../sanitizer_stacktrace_sparc.cpp | 11 +- .../sanitizer_stoptheworld_linux_libcdep.cpp | 19 +- .../sanitizer_stoptheworld_netbsd_libcdep.cpp | 4 +- .../sanitizer_suppressions.cpp | 7 +- .../sanitizer_common/sanitizer_symbolizer.h | 30 +- .../sanitizer_symbolizer_libcdep.cpp | 7 + .../sanitizer_symbolizer_mac.cpp | 4 +- .../sanitizer_symbolizer_markup.cpp | 234 +- .../sanitizer_symbolizer_markup.h | 79 + ...> sanitizer_symbolizer_markup_constants.h} | 19 +- .../sanitizer_symbolizer_markup_fuchsia.cpp | 85 + .../sanitizer_symbolizer_posix_libcdep.cpp | 34 +- .../sanitizer_symbolizer_report.cpp | 85 +- .../sanitizer_symbolizer_report_fuchsia.cpp | 33 + .../sanitizer_symbolizer_win.cpp | 13 +- .../sanitizer_thread_arg_retval.cpp | 23 +- .../sanitizer_thread_arg_retval.h | 1 + .../sanitizer_thread_history.cpp | 72 + .../sanitizer_thread_history.h | 24 + .../sanitizer_thread_registry.cpp | 51 +- .../sanitizer_thread_registry.h | 11 +- .../sanitizer_tls_get_addr.cpp | 81 +- .../sanitizer_common/sanitizer_tls_get_addr.h | 4 - .../sanitizer_unwind_fuchsia.cpp | 66 + .../sanitizer_common/sanitizer_unwind_win.cpp | 7 + .../sanitizer_common/sanitizer_win.cpp | 107 +- .../sanitizer_win_dll_thunk.cpp | 101 - .../sanitizer_win_dll_thunk.h | 181 -- .../sanitizer_win_dynamic_runtime_thunk.cpp | 26 - .../sanitizer_win_immortalize.h | 71 + .../sanitizer_win_interception.cpp | 156 ++ .../sanitizer_win_interception.h | 32 + .../sanitizer_win_thunk_interception.cpp | 110 + .../sanitizer_win_thunk_interception.h | 88 + .../sanitizer_win_weak_interception.cpp | 94 - .../sanitizer_win_weak_interception.h | 32 - libsanitizer/tsan/tsan_defs.h | 2 +- libsanitizer/tsan/tsan_dispatch_defs.h | 7 - libsanitizer/tsan/tsan_interceptors_mac.cpp | 8 + libsanitizer/tsan/tsan_interceptors_posix.cpp | 187 +- libsanitizer/tsan/tsan_interface_ann.cpp | 2 +- libsanitizer/tsan/tsan_mman.cpp | 31 +- libsanitizer/tsan/tsan_mman.h | 4 +- libsanitizer/tsan/tsan_platform.h | 42 +- libsanitizer/tsan/tsan_platform_linux.cpp | 171 +- libsanitizer/tsan/tsan_platform_mac.cpp | 9 +- libsanitizer/tsan/tsan_platform_posix.cpp | 43 +- libsanitizer/tsan/tsan_preinit.cpp | 10 +- libsanitizer/tsan/tsan_report.cpp | 26 +- libsanitizer/tsan/tsan_rtl.cpp | 24 +- libsanitizer/tsan/tsan_rtl.h | 8 +- libsanitizer/tsan/tsan_rtl_aarch64.S | 7 + libsanitizer/tsan/tsan_rtl_access.cpp | 22 +- libsanitizer/tsan/tsan_rtl_mutex.cpp | 2 +- libsanitizer/tsan/tsan_rtl_thread.cpp | 20 +- libsanitizer/tsan/tsan_suppressions.cpp | 2 +- libsanitizer/tsan/tsan_vector_clock.h | 2 +- libsanitizer/ubsan/ubsan_diag.cpp | 6 +- libsanitizer/ubsan/ubsan_diag.h | 20 - libsanitizer/ubsan/ubsan_diag_standalone.cpp | 2 +- libsanitizer/ubsan/ubsan_handlers.cpp | 38 +- libsanitizer/ubsan/ubsan_handlers.h | 2 + libsanitizer/ubsan/ubsan_init.cpp | 2 +- .../ubsan/ubsan_init_standalone_preinit.cpp | 4 +- .../ubsan/ubsan_signals_standalone.cpp | 5 + .../ubsan/ubsan_type_hash_itanium.cpp | 2 +- libsanitizer/ubsan/ubsan_value.cpp | 17 +- libsanitizer/ubsan/ubsan_value.h | 33 +- libsanitizer/ubsan/ubsan_win_dll_thunk.cpp | 20 - ..._thunk.cpp => ubsan_win_runtime_thunk.cpp} | 11 +- .../ubsan/ubsan_win_weak_interception.cpp | 23 - 230 files changed, 7205 insertions(+), 4615 deletions(-) delete mode 100644 libsanitizer/asan/asan_lock.h create mode 100644 libsanitizer/asan/asan_malloc_win_thunk.cpp create mode 100644 libsanitizer/asan/asan_win_common_runtime_thunk.cpp create mode 100644 libsanitizer/asan/asan_win_common_runtime_thunk.h delete mode 100644 libsanitizer/asan/asan_win_dll_thunk.cpp create mode 100644 libsanitizer/asan/asan_win_static_runtime_thunk.cpp delete mode 100644 libsanitizer/asan/asan_win_weak_interception.cpp create mode 100644 libsanitizer/include/sanitizer/nsan_interface.h create mode 100644 libsanitizer/include/sanitizer/rtsan_interface.h delete mode 100644 libsanitizer/sanitizer_common/sanitizer_atomic_clang_mips.h delete mode 100644 libsanitizer/sanitizer_common/sanitizer_atomic_clang_other.h delete mode 100644 libsanitizer/sanitizer_common/sanitizer_atomic_clang_x86.h delete mode 100644 libsanitizer/sanitizer_common/sanitizer_coverage_win_dll_thunk.cpp rename libsanitizer/sanitizer_common/{sanitizer_coverage_win_dynamic_runtime_thunk.cpp => sanitizer_coverage_win_runtime_thunk.cpp} (59%) delete mode 100644 libsanitizer/sanitizer_common/sanitizer_coverage_win_weak_interception.cpp delete mode 100644 libsanitizer/sanitizer_common/sanitizer_freebsd.h delete mode 100644 libsanitizer/sanitizer_common/sanitizer_platform_limits_openbsd.cpp delete mode 100644 libsanitizer/sanitizer_common/sanitizer_platform_limits_openbsd.h create mode 100644 libsanitizer/sanitizer_common/sanitizer_symbolizer_markup.h rename libsanitizer/sanitizer_common/{sanitizer_symbolizer_fuchsia.h => sanitizer_symbolizer_markup_constants.h} (69%) create mode 100644 libsanitizer/sanitizer_common/sanitizer_symbolizer_markup_fuchsia.cpp create mode 100644 libsanitizer/sanitizer_common/sanitizer_symbolizer_report_fuchsia.cpp create mode 100644 libsanitizer/sanitizer_common/sanitizer_thread_history.cpp create mode 100644 libsanitizer/sanitizer_common/sanitizer_thread_history.h create mode 100644 libsanitizer/sanitizer_common/sanitizer_unwind_fuchsia.cpp delete mode 100644 libsanitizer/sanitizer_common/sanitizer_win_dll_thunk.cpp delete mode 100644 libsanitizer/sanitizer_common/sanitizer_win_dll_thunk.h delete mode 100644 libsanitizer/sanitizer_common/sanitizer_win_dynamic_runtime_thunk.cpp create mode 100644 libsanitizer/sanitizer_common/sanitizer_win_immortalize.h create mode 100644 libsanitizer/sanitizer_common/sanitizer_win_interception.cpp create mode 100644 libsanitizer/sanitizer_common/sanitizer_win_interception.h create mode 100644 libsanitizer/sanitizer_common/sanitizer_win_thunk_interception.cpp create mode 100644 libsanitizer/sanitizer_common/sanitizer_win_thunk_interception.h delete mode 100644 libsanitizer/sanitizer_common/sanitizer_win_weak_interception.cpp delete mode 100644 libsanitizer/sanitizer_common/sanitizer_win_weak_interception.h delete mode 100644 libsanitizer/ubsan/ubsan_win_dll_thunk.cpp rename libsanitizer/ubsan/{ubsan_win_dynamic_runtime_thunk.cpp => ubsan_win_runtime_thunk.cpp} (62%) delete mode 100644 libsanitizer/ubsan/ubsan_win_weak_interception.cpp -- 2.34.1