lib/tsan/builtins/assembly.h | 12 + lib/tsan/interception/interception.h | 25 +- lib/tsan/interception/interception_type_test.cpp | 31 +- lib/tsan/interception/interception_win.cpp | 432 ++++++++++++--- lib/tsan/interception/interception_win.h | 3 + lib/tsan/sanitizer_common/sanitizer_allocator.cpp | 5 +- lib/tsan/sanitizer_common/sanitizer_allocator_dlsym.h | 27 +- lib/tsan/sanitizer_common/sanitizer_allocator_primary64.h | 12 +- lib/tsan/sanitizer_common/sanitizer_common.h | 27 +- lib/tsan/sanitizer_common/sanitizer_common_interceptors.inc | 410 +++++++-------- lib/tsan/sanitizer_common/sanitizer_common_interceptors_memintrinsics.inc | 34 +- lib/tsan/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S | 48 ++ lib/tsan/sanitizer_common/sanitizer_common_interceptors_vfork_arm.inc.S | 49 ++ lib/tsan/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S | 64 +++ lib/tsan/sanitizer_common/sanitizer_common_interceptors_vfork_loongarch64.inc.S | 57 ++ lib/tsan/sanitizer_common/sanitizer_common_interceptors_vfork_riscv64.inc.S | 56 ++ lib/tsan/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S | 42 ++ lib/tsan/sanitizer_common/sanitizer_common_interface.inc | 8 + lib/tsan/sanitizer_common/sanitizer_common_libcdep.cpp | 28 +- lib/tsan/sanitizer_common/sanitizer_common_nolibc.cpp | 7 +- lib/tsan/sanitizer_common/sanitizer_common_syscalls.inc | 33 +- lib/tsan/sanitizer_common/sanitizer_coverage_win_dll_thunk.cpp | 20 - lib/tsan/sanitizer_common/sanitizer_coverage_win_dynamic_runtime_thunk.cpp | 26 - lib/tsan/sanitizer_common/sanitizer_coverage_win_weak_interception.cpp | 23 - lib/tsan/sanitizer_common/sanitizer_deadlock_detector.h | 2 +- lib/tsan/sanitizer_common/sanitizer_dense_map.h | 70 ++- lib/tsan/sanitizer_common/sanitizer_errno.cpp | 1 + lib/tsan/sanitizer_common/sanitizer_errno_codes.h | 1 + lib/tsan/sanitizer_common/sanitizer_fuchsia.cpp | 7 +- lib/tsan/sanitizer_common/sanitizer_getauxval.h | 23 +- lib/tsan/sanitizer_common/sanitizer_interface_internal.h | 10 + lib/tsan/sanitizer_common/sanitizer_internal_defs.h | 40 +- lib/tsan/sanitizer_common/sanitizer_libignore.cpp | 28 +- lib/tsan/sanitizer_common/sanitizer_libignore.h | 35 +- lib/tsan/sanitizer_common/sanitizer_linux.cpp | 396 +++++++++++--- lib/tsan/sanitizer_common/sanitizer_linux.h | 8 +- lib/tsan/sanitizer_common/sanitizer_linux_libcdep.cpp | 300 ++++++----- lib/tsan/sanitizer_common/sanitizer_mac.cpp | 64 ++- lib/tsan/sanitizer_common/sanitizer_platform_interceptors.h | 52 +- lib/tsan/sanitizer_common/sanitizer_platform_limits_netbsd.cpp | 3 +- lib/tsan/sanitizer_common/sanitizer_platform_limits_netbsd.h | 3 +- lib/tsan/sanitizer_common/sanitizer_platform_limits_posix.cpp | 61 ++- lib/tsan/sanitizer_common/sanitizer_platform_limits_posix.h | 62 ++- lib/tsan/sanitizer_common/sanitizer_platform_limits_solaris.cpp | 3 + lib/tsan/sanitizer_common/sanitizer_platform_limits_solaris.h | 2 + lib/tsan/sanitizer_common/sanitizer_posix.cpp | 10 +- lib/tsan/sanitizer_common/sanitizer_posix.h | 6 +- lib/tsan/sanitizer_common/sanitizer_posix_libcdep.cpp | 100 +++- lib/tsan/sanitizer_common/sanitizer_procmaps_mac.cpp | 4 +- lib/tsan/sanitizer_common/sanitizer_procmaps_solaris.cpp | 4 + lib/tsan/sanitizer_common/sanitizer_redefine_builtins.h | 8 +- lib/tsan/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp | 15 +- lib/tsan/sanitizer_common/sanitizer_symbolizer.h | 8 +- lib/tsan/sanitizer_common/sanitizer_symbolizer_mac.cpp | 4 +- lib/tsan/sanitizer_common/sanitizer_symbolizer_report.cpp | 15 +- lib/tsan/sanitizer_common/sanitizer_symbolizer_win.cpp | 13 +- lib/tsan/sanitizer_common/sanitizer_thread_history.cpp | 72 +++ lib/tsan/sanitizer_common/sanitizer_thread_history.h | 24 + lib/tsan/sanitizer_common/sanitizer_thread_registry.cpp | 51 +- lib/tsan/sanitizer_common/sanitizer_thread_registry.h | 11 +- lib/tsan/sanitizer_common/sanitizer_tls_get_addr.cpp | 74 ++- lib/tsan/sanitizer_common/sanitizer_tls_get_addr.h | 4 - lib/tsan/sanitizer_common/sanitizer_win.cpp | 101 +++- lib/tsan/sanitizer_common/sanitizer_win_dll_thunk.cpp | 101 ---- lib/tsan/sanitizer_common/sanitizer_win_dll_thunk.h | 181 ------- lib/tsan/sanitizer_common/sanitizer_win_dynamic_runtime_thunk.cpp | 26 - lib/tsan/sanitizer_common/sanitizer_win_immortalize.h | 71 +++ lib/tsan/sanitizer_common/sanitizer_win_interception.cpp | 156 ++++++ lib/tsan/sanitizer_common/sanitizer_win_interception.h | 32 ++ lib/tsan/sanitizer_common/sanitizer_win_weak_interception.cpp | 94 ---- lib/tsan/sanitizer_common/sanitizer_win_weak_interception.h | 32 -- lib/tsan/tsan_interceptors_mac.cpp | 220 ++++---- lib/tsan/tsan_interceptors_posix.cpp | 62 ++- lib/tsan/tsan_interface.h | 151 +++--- lib/tsan/tsan_interface_atomic.cpp | 906 +++++++++++++++++--------------- lib/tsan/tsan_mman.cpp | 2 +- lib/tsan/tsan_platform_linux.cpp | 1 - lib/tsan/tsan_rtl.cpp | 5 +- lib/tsan/tsan_rtl.h | 2 +- lib/tsan/tsan_rtl_report.cpp | 10 +- lib/tsan/tsan_rtl_thread.cpp | 10 +- lib/tsan/tsan_spinlock_defs_mac.h | 45 -- src/libtsan.zig | 8 +- 83 files changed, 3242 insertions(+), 2047 deletions(-)