svn commit: r353944 - in vendor/compiler-rt/dist: include/fuzzer include/sanitizer lib/asan lib/builtins lib/builtins/aarch64 lib/builtins/arm lib/dfsan lib/fuzzer lib/fuzzer/utils lib/gwp_asan lib...
Dimitry Andric
dim at FreeBSD.org
Wed Oct 23 17:52:24 UTC 2019
Author: dim
Date: Wed Oct 23 17:52:22 2019
New Revision: 353944
URL: https://svnweb.freebsd.org/changeset/base/353944
Log:
Vendor import of stripped compiler-rt trunk r375505, the last commit
before the upstream Subversion repository was made read-only, and the
LLVM project migrated to GitHub:
https://llvm.org/svn/llvm-project/compiler-rt/trunk@375505
Added:
vendor/compiler-rt/dist/include/fuzzer/
vendor/compiler-rt/dist/include/fuzzer/FuzzedDataProvider.h
vendor/compiler-rt/dist/include/sanitizer/ubsan_interface.h
vendor/compiler-rt/dist/lib/asan/asan_activation.cpp
vendor/compiler-rt/dist/lib/asan/asan_allocator.cpp
vendor/compiler-rt/dist/lib/asan/asan_debugging.cpp
vendor/compiler-rt/dist/lib/asan/asan_descriptions.cpp
vendor/compiler-rt/dist/lib/asan/asan_errors.cpp
vendor/compiler-rt/dist/lib/asan/asan_fake_stack.cpp
vendor/compiler-rt/dist/lib/asan/asan_flags.cpp
vendor/compiler-rt/dist/lib/asan/asan_fuchsia.cpp
vendor/compiler-rt/dist/lib/asan/asan_globals.cpp
vendor/compiler-rt/dist/lib/asan/asan_globals_win.cpp
vendor/compiler-rt/dist/lib/asan/asan_interceptors.cpp
vendor/compiler-rt/dist/lib/asan/asan_interceptors_memintrinsics.cpp
vendor/compiler-rt/dist/lib/asan/asan_linux.cpp
vendor/compiler-rt/dist/lib/asan/asan_mac.cpp
vendor/compiler-rt/dist/lib/asan/asan_malloc_linux.cpp
vendor/compiler-rt/dist/lib/asan/asan_malloc_mac.cpp
vendor/compiler-rt/dist/lib/asan/asan_malloc_win.cpp
vendor/compiler-rt/dist/lib/asan/asan_memory_profile.cpp
vendor/compiler-rt/dist/lib/asan/asan_new_delete.cpp
vendor/compiler-rt/dist/lib/asan/asan_poisoning.cpp
vendor/compiler-rt/dist/lib/asan/asan_posix.cpp
vendor/compiler-rt/dist/lib/asan/asan_preinit.cpp
vendor/compiler-rt/dist/lib/asan/asan_premap_shadow.cpp
vendor/compiler-rt/dist/lib/asan/asan_report.cpp
vendor/compiler-rt/dist/lib/asan/asan_rtems.cpp
vendor/compiler-rt/dist/lib/asan/asan_rtl.cpp
vendor/compiler-rt/dist/lib/asan/asan_shadow_setup.cpp
vendor/compiler-rt/dist/lib/asan/asan_stack.cpp
vendor/compiler-rt/dist/lib/asan/asan_stats.cpp
vendor/compiler-rt/dist/lib/asan/asan_suppressions.cpp
vendor/compiler-rt/dist/lib/asan/asan_thread.cpp
vendor/compiler-rt/dist/lib/asan/asan_win.cpp
vendor/compiler-rt/dist/lib/asan/asan_win_dll_thunk.cpp
vendor/compiler-rt/dist/lib/asan/asan_win_dynamic_runtime_thunk.cpp
vendor/compiler-rt/dist/lib/asan/asan_win_weak_interception.cpp
vendor/compiler-rt/dist/lib/builtins/aarch64/fp_mode.c
vendor/compiler-rt/dist/lib/builtins/arm/fp_mode.c
vendor/compiler-rt/dist/lib/builtins/fp_mode.c
vendor/compiler-rt/dist/lib/builtins/fp_mode.h
vendor/compiler-rt/dist/lib/dfsan/dfsan.cpp
vendor/compiler-rt/dist/lib/dfsan/dfsan_custom.cpp
vendor/compiler-rt/dist/lib/dfsan/dfsan_interceptors.cpp
vendor/compiler-rt/dist/lib/gwp_asan/scripts/
vendor/compiler-rt/dist/lib/gwp_asan/scripts/symbolize.sh (contents, props changed)
vendor/compiler-rt/dist/lib/gwp_asan/stack_trace_compressor.cpp
vendor/compiler-rt/dist/lib/gwp_asan/stack_trace_compressor.h
vendor/compiler-rt/dist/lib/hwasan/hwasan_exceptions.cpp
vendor/compiler-rt/dist/lib/interception/interception_linux.cpp
vendor/compiler-rt/dist/lib/interception/interception_mac.cpp
vendor/compiler-rt/dist/lib/interception/interception_type_test.cpp
vendor/compiler-rt/dist/lib/interception/interception_win.cpp
vendor/compiler-rt/dist/lib/lsan/lsan.cpp
vendor/compiler-rt/dist/lib/lsan/lsan_allocator.cpp
vendor/compiler-rt/dist/lib/lsan/lsan_common.cpp
vendor/compiler-rt/dist/lib/lsan/lsan_common_linux.cpp
vendor/compiler-rt/dist/lib/lsan/lsan_common_mac.cpp
vendor/compiler-rt/dist/lib/lsan/lsan_interceptors.cpp
vendor/compiler-rt/dist/lib/lsan/lsan_linux.cpp
vendor/compiler-rt/dist/lib/lsan/lsan_mac.cpp
vendor/compiler-rt/dist/lib/lsan/lsan_malloc_mac.cpp
vendor/compiler-rt/dist/lib/lsan/lsan_preinit.cpp
vendor/compiler-rt/dist/lib/lsan/lsan_thread.cpp
vendor/compiler-rt/dist/lib/msan/msan.cpp
vendor/compiler-rt/dist/lib/msan/msan_allocator.cpp
vendor/compiler-rt/dist/lib/msan/msan_chained_origin_depot.cpp
vendor/compiler-rt/dist/lib/msan/msan_interceptors.cpp
vendor/compiler-rt/dist/lib/msan/msan_linux.cpp
vendor/compiler-rt/dist/lib/msan/msan_new_delete.cpp
vendor/compiler-rt/dist/lib/msan/msan_poisoning.cpp
vendor/compiler-rt/dist/lib/msan/msan_report.cpp
vendor/compiler-rt/dist/lib/msan/msan_thread.cpp
vendor/compiler-rt/dist/lib/profile/InstrProfilingRuntime.cpp
vendor/compiler-rt/dist/lib/safestack/safestack.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sancov_flags.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_allocator.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_allocator_checks.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_allocator_report.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_common.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_common_libcdep.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_common_nolibc.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_coverage_fuchsia.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_coverage_libcdep_new.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_coverage_win_dll_thunk.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_coverage_win_dynamic_runtime_thunk.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_coverage_win_sections.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_coverage_win_weak_interception.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_deadlock_detector1.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_deadlock_detector2.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_errno.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_file.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_flag_parser.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_flags.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_fuchsia.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_glibc_version.h
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_libc.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_libignore.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_linux.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_linux_libcdep.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_linux_s390.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_mac.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_mac_libcdep.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_netbsd.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_openbsd.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_persistent_allocator.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_platform_limits_freebsd.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_platform_limits_linux.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_platform_limits_netbsd.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_platform_limits_openbsd.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_platform_limits_solaris.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_posix.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_posix_libcdep.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_printf.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_procmaps_bsd.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_procmaps_common.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_procmaps_linux.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_procmaps_mac.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_procmaps_solaris.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_rtems.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_solaris.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_stackdepot.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_stacktrace.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_stacktrace_libcdep.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_stacktrace_printer.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_stacktrace_sparc.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_stoptheworld_mac.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_suppressions.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_symbolizer.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_symbolizer_libbacktrace.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_symbolizer_libcdep.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_symbolizer_mac.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_symbolizer_markup.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_symbolizer_report.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_symbolizer_win.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_termination.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_thread_registry.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_tls_get_addr.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_type_traits.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_unwind_linux_libcdep.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_unwind_win.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_win.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_win_dll_thunk.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_win_dynamic_runtime_thunk.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_win_weak_interception.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/symbolizer/sanitizer_symbolize.cpp
vendor/compiler-rt/dist/lib/sanitizer_common/symbolizer/sanitizer_wrappers.cpp
vendor/compiler-rt/dist/lib/scudo/standalone/checksum.cpp
vendor/compiler-rt/dist/lib/scudo/standalone/common.cpp
vendor/compiler-rt/dist/lib/scudo/standalone/crc32_hw.cpp
vendor/compiler-rt/dist/lib/scudo/standalone/flags.cpp
vendor/compiler-rt/dist/lib/scudo/standalone/flags_parser.cpp
vendor/compiler-rt/dist/lib/scudo/standalone/fuchsia.cpp
vendor/compiler-rt/dist/lib/scudo/standalone/linux.cpp
vendor/compiler-rt/dist/lib/scudo/standalone/report.cpp
vendor/compiler-rt/dist/lib/scudo/standalone/secondary.cpp
vendor/compiler-rt/dist/lib/scudo/standalone/string_utils.cpp
vendor/compiler-rt/dist/lib/scudo/standalone/wrappers_c.cpp
vendor/compiler-rt/dist/lib/scudo/standalone/wrappers_c_bionic.cpp
vendor/compiler-rt/dist/lib/scudo/standalone/wrappers_cpp.cpp
vendor/compiler-rt/dist/lib/stats/stats.cpp
vendor/compiler-rt/dist/lib/stats/stats_client.cpp
vendor/compiler-rt/dist/lib/tsan/benchmarks/func_entry_exit.cpp
vendor/compiler-rt/dist/lib/tsan/benchmarks/mini_bench_local.cpp
vendor/compiler-rt/dist/lib/tsan/benchmarks/mini_bench_shared.cpp
vendor/compiler-rt/dist/lib/tsan/benchmarks/mop.cpp
vendor/compiler-rt/dist/lib/tsan/benchmarks/start_many_threads.cpp
vendor/compiler-rt/dist/lib/tsan/benchmarks/vts_many_threads_bench.cpp
vendor/compiler-rt/dist/lib/tsan/dd/dd_interceptors.cpp
vendor/compiler-rt/dist/lib/tsan/dd/dd_rtl.cpp
vendor/compiler-rt/dist/lib/tsan/go/tsan_go.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_clock.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_debugging.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_external.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_fd.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_flags.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_ignoreset.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_interceptors_libdispatch.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_interceptors_mac.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_interceptors_mach_vm.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_interceptors_posix.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_interface.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_interface_ann.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_interface_atomic.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_interface_java.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_malloc_mac.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_md5.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_mman.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_mutex.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_mutexset.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_new_delete.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_platform_linux.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_platform_mac.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_platform_posix.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_platform_windows.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_preinit.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_report.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_rtl.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_rtl_mutex.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_rtl_proc.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_rtl_report.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_rtl_thread.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_stack_trace.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_stat.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_suppressions.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_symbolize.cpp
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_sync.cpp
vendor/compiler-rt/dist/lib/ubsan/ubsan_diag.cpp
vendor/compiler-rt/dist/lib/ubsan/ubsan_diag_standalone.cpp
vendor/compiler-rt/dist/lib/ubsan/ubsan_flags.cpp
vendor/compiler-rt/dist/lib/ubsan/ubsan_handlers.cpp
vendor/compiler-rt/dist/lib/ubsan/ubsan_handlers_cxx.cpp
vendor/compiler-rt/dist/lib/ubsan/ubsan_init.cpp
vendor/compiler-rt/dist/lib/ubsan/ubsan_init_standalone.cpp
vendor/compiler-rt/dist/lib/ubsan/ubsan_init_standalone_preinit.cpp
vendor/compiler-rt/dist/lib/ubsan/ubsan_monitor.cpp
vendor/compiler-rt/dist/lib/ubsan/ubsan_signals_standalone.cpp
vendor/compiler-rt/dist/lib/ubsan/ubsan_type_hash.cpp
vendor/compiler-rt/dist/lib/ubsan/ubsan_type_hash_itanium.cpp
vendor/compiler-rt/dist/lib/ubsan/ubsan_type_hash_win.cpp
vendor/compiler-rt/dist/lib/ubsan/ubsan_value.cpp
vendor/compiler-rt/dist/lib/ubsan/ubsan_win_dll_thunk.cpp
vendor/compiler-rt/dist/lib/ubsan/ubsan_win_dynamic_runtime_thunk.cpp
vendor/compiler-rt/dist/lib/ubsan/ubsan_win_weak_interception.cpp
vendor/compiler-rt/dist/lib/ubsan_minimal/ubsan_minimal_handlers.cpp
vendor/compiler-rt/dist/lib/xray/xray_AArch64.cpp
vendor/compiler-rt/dist/lib/xray/xray_arm.cpp
vendor/compiler-rt/dist/lib/xray/xray_basic_flags.cpp
vendor/compiler-rt/dist/lib/xray/xray_basic_logging.cpp
vendor/compiler-rt/dist/lib/xray/xray_buffer_queue.cpp
vendor/compiler-rt/dist/lib/xray/xray_fdr_flags.cpp
vendor/compiler-rt/dist/lib/xray/xray_fdr_logging.cpp
vendor/compiler-rt/dist/lib/xray/xray_flags.cpp
vendor/compiler-rt/dist/lib/xray/xray_init.cpp
vendor/compiler-rt/dist/lib/xray/xray_interface.cpp
vendor/compiler-rt/dist/lib/xray/xray_log_interface.cpp
vendor/compiler-rt/dist/lib/xray/xray_mips.cpp
vendor/compiler-rt/dist/lib/xray/xray_mips64.cpp
vendor/compiler-rt/dist/lib/xray/xray_powerpc64.cpp
vendor/compiler-rt/dist/lib/xray/xray_profile_collector.cpp
vendor/compiler-rt/dist/lib/xray/xray_profiling.cpp
vendor/compiler-rt/dist/lib/xray/xray_profiling_flags.cpp
vendor/compiler-rt/dist/lib/xray/xray_trampoline_powerpc64.cpp
vendor/compiler-rt/dist/lib/xray/xray_utils.cpp
vendor/compiler-rt/dist/lib/xray/xray_x86_64.cpp
vendor/compiler-rt/dist/tools/
vendor/compiler-rt/dist/tools/CMakeLists.txt
vendor/compiler-rt/dist/tools/gwp_asan/
vendor/compiler-rt/dist/tools/gwp_asan/CMakeLists.txt
vendor/compiler-rt/dist/tools/gwp_asan/stack_trace_compressor_fuzzer.cpp
Deleted:
vendor/compiler-rt/dist/lib/asan/asan_activation.cc
vendor/compiler-rt/dist/lib/asan/asan_allocator.cc
vendor/compiler-rt/dist/lib/asan/asan_debugging.cc
vendor/compiler-rt/dist/lib/asan/asan_descriptions.cc
vendor/compiler-rt/dist/lib/asan/asan_errors.cc
vendor/compiler-rt/dist/lib/asan/asan_fake_stack.cc
vendor/compiler-rt/dist/lib/asan/asan_flags.cc
vendor/compiler-rt/dist/lib/asan/asan_fuchsia.cc
vendor/compiler-rt/dist/lib/asan/asan_globals.cc
vendor/compiler-rt/dist/lib/asan/asan_globals_win.cc
vendor/compiler-rt/dist/lib/asan/asan_interceptors.cc
vendor/compiler-rt/dist/lib/asan/asan_interceptors_memintrinsics.cc
vendor/compiler-rt/dist/lib/asan/asan_linux.cc
vendor/compiler-rt/dist/lib/asan/asan_mac.cc
vendor/compiler-rt/dist/lib/asan/asan_malloc_linux.cc
vendor/compiler-rt/dist/lib/asan/asan_malloc_mac.cc
vendor/compiler-rt/dist/lib/asan/asan_malloc_win.cc
vendor/compiler-rt/dist/lib/asan/asan_memory_profile.cc
vendor/compiler-rt/dist/lib/asan/asan_new_delete.cc
vendor/compiler-rt/dist/lib/asan/asan_poisoning.cc
vendor/compiler-rt/dist/lib/asan/asan_posix.cc
vendor/compiler-rt/dist/lib/asan/asan_preinit.cc
vendor/compiler-rt/dist/lib/asan/asan_premap_shadow.cc
vendor/compiler-rt/dist/lib/asan/asan_report.cc
vendor/compiler-rt/dist/lib/asan/asan_rtems.cc
vendor/compiler-rt/dist/lib/asan/asan_rtl.cc
vendor/compiler-rt/dist/lib/asan/asan_shadow_setup.cc
vendor/compiler-rt/dist/lib/asan/asan_stack.cc
vendor/compiler-rt/dist/lib/asan/asan_stats.cc
vendor/compiler-rt/dist/lib/asan/asan_suppressions.cc
vendor/compiler-rt/dist/lib/asan/asan_thread.cc
vendor/compiler-rt/dist/lib/asan/asan_win.cc
vendor/compiler-rt/dist/lib/asan/asan_win_dll_thunk.cc
vendor/compiler-rt/dist/lib/asan/asan_win_dynamic_runtime_thunk.cc
vendor/compiler-rt/dist/lib/asan/asan_win_weak_interception.cc
vendor/compiler-rt/dist/lib/dfsan/dfsan.cc
vendor/compiler-rt/dist/lib/dfsan/dfsan_custom.cc
vendor/compiler-rt/dist/lib/dfsan/dfsan_interceptors.cc
vendor/compiler-rt/dist/lib/fuzzer/utils/
vendor/compiler-rt/dist/lib/interception/interception_linux.cc
vendor/compiler-rt/dist/lib/interception/interception_mac.cc
vendor/compiler-rt/dist/lib/interception/interception_type_test.cc
vendor/compiler-rt/dist/lib/interception/interception_win.cc
vendor/compiler-rt/dist/lib/lsan/lsan.cc
vendor/compiler-rt/dist/lib/lsan/lsan_allocator.cc
vendor/compiler-rt/dist/lib/lsan/lsan_common.cc
vendor/compiler-rt/dist/lib/lsan/lsan_common_linux.cc
vendor/compiler-rt/dist/lib/lsan/lsan_common_mac.cc
vendor/compiler-rt/dist/lib/lsan/lsan_interceptors.cc
vendor/compiler-rt/dist/lib/lsan/lsan_linux.cc
vendor/compiler-rt/dist/lib/lsan/lsan_mac.cc
vendor/compiler-rt/dist/lib/lsan/lsan_malloc_mac.cc
vendor/compiler-rt/dist/lib/lsan/lsan_preinit.cc
vendor/compiler-rt/dist/lib/lsan/lsan_thread.cc
vendor/compiler-rt/dist/lib/msan/msan.cc
vendor/compiler-rt/dist/lib/msan/msan_allocator.cc
vendor/compiler-rt/dist/lib/msan/msan_chained_origin_depot.cc
vendor/compiler-rt/dist/lib/msan/msan_interceptors.cc
vendor/compiler-rt/dist/lib/msan/msan_linux.cc
vendor/compiler-rt/dist/lib/msan/msan_new_delete.cc
vendor/compiler-rt/dist/lib/msan/msan_poisoning.cc
vendor/compiler-rt/dist/lib/msan/msan_report.cc
vendor/compiler-rt/dist/lib/msan/msan_thread.cc
vendor/compiler-rt/dist/lib/profile/InstrProfilingRuntime.cc
vendor/compiler-rt/dist/lib/safestack/safestack.cc
vendor/compiler-rt/dist/lib/sancov/
vendor/compiler-rt/dist/lib/sanitizer_common/sancov_flags.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_allocator.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_allocator_checks.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_allocator_report.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_common.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_common_libcdep.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_common_nolibc.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_coverage_fuchsia.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_coverage_libcdep_new.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_coverage_win_dll_thunk.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_coverage_win_dynamic_runtime_thunk.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_coverage_win_sections.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_coverage_win_weak_interception.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_deadlock_detector1.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_deadlock_detector2.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_errno.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_file.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_flag_parser.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_flags.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_fuchsia.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_libc.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_libignore.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_linux.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_linux_libcdep.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_linux_s390.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_mac.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_mac_libcdep.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_netbsd.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_openbsd.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_persistent_allocator.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_platform_limits_freebsd.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_platform_limits_linux.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_platform_limits_netbsd.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_platform_limits_openbsd.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_platform_limits_solaris.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_posix.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_posix_libcdep.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_printf.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_procmaps_bsd.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_procmaps_common.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_procmaps_linux.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_procmaps_mac.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_procmaps_solaris.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_rtems.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_solaris.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_stackdepot.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_stacktrace.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_stacktrace_libcdep.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_stacktrace_printer.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_stacktrace_sparc.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_stoptheworld_mac.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_suppressions.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_symbolizer.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_symbolizer_libbacktrace.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_symbolizer_libcdep.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_symbolizer_mac.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_symbolizer_markup.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_symbolizer_report.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_symbolizer_win.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_termination.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_thread_registry.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_tls_get_addr.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_type_traits.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_unwind_linux_libcdep.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_unwind_win.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_win.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_win_dll_thunk.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_win_dynamic_runtime_thunk.cc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_win_weak_interception.cc
vendor/compiler-rt/dist/lib/sanitizer_common/symbolizer/sanitizer_symbolize.cc
vendor/compiler-rt/dist/lib/sanitizer_common/symbolizer/sanitizer_wrappers.cc
vendor/compiler-rt/dist/lib/scudo/standalone/checksum.cc
vendor/compiler-rt/dist/lib/scudo/standalone/common.cc
vendor/compiler-rt/dist/lib/scudo/standalone/crc32_hw.cc
vendor/compiler-rt/dist/lib/scudo/standalone/flags.cc
vendor/compiler-rt/dist/lib/scudo/standalone/flags_parser.cc
vendor/compiler-rt/dist/lib/scudo/standalone/fuchsia.cc
vendor/compiler-rt/dist/lib/scudo/standalone/linux.cc
vendor/compiler-rt/dist/lib/scudo/standalone/report.cc
vendor/compiler-rt/dist/lib/scudo/standalone/secondary.cc
vendor/compiler-rt/dist/lib/scudo/standalone/string_utils.cc
vendor/compiler-rt/dist/lib/scudo/standalone/wrappers_c.cc
vendor/compiler-rt/dist/lib/scudo/standalone/wrappers_c_bionic.cc
vendor/compiler-rt/dist/lib/scudo/standalone/wrappers_cpp.cc
vendor/compiler-rt/dist/lib/stats/stats.cc
vendor/compiler-rt/dist/lib/stats/stats_client.cc
vendor/compiler-rt/dist/lib/tsan/benchmarks/func_entry_exit.cc
vendor/compiler-rt/dist/lib/tsan/benchmarks/mini_bench_local.cc
vendor/compiler-rt/dist/lib/tsan/benchmarks/mini_bench_shared.cc
vendor/compiler-rt/dist/lib/tsan/benchmarks/mop.cc
vendor/compiler-rt/dist/lib/tsan/benchmarks/start_many_threads.cc
vendor/compiler-rt/dist/lib/tsan/benchmarks/vts_many_threads_bench.cc
vendor/compiler-rt/dist/lib/tsan/dd/dd_interceptors.cc
vendor/compiler-rt/dist/lib/tsan/dd/dd_rtl.cc
vendor/compiler-rt/dist/lib/tsan/go/tsan_go.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_clock.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_debugging.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_external.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_fd.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_flags.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_ignoreset.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_interceptors.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_interceptors_mac.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_interface.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_interface_ann.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_interface_atomic.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_interface_java.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_libdispatch.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_malloc_mac.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_md5.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_mman.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_mutex.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_mutexset.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_new_delete.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_platform_linux.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_platform_mac.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_platform_posix.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_platform_windows.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_preinit.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_report.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_rtl.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_rtl_mutex.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_rtl_proc.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_rtl_report.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_rtl_thread.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_stack_trace.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_stat.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_suppressions.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_symbolize.cc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_sync.cc
vendor/compiler-rt/dist/lib/ubsan/ubsan_diag.cc
vendor/compiler-rt/dist/lib/ubsan/ubsan_diag_standalone.cc
vendor/compiler-rt/dist/lib/ubsan/ubsan_flags.cc
vendor/compiler-rt/dist/lib/ubsan/ubsan_handlers.cc
vendor/compiler-rt/dist/lib/ubsan/ubsan_handlers_cxx.cc
vendor/compiler-rt/dist/lib/ubsan/ubsan_init.cc
vendor/compiler-rt/dist/lib/ubsan/ubsan_init_standalone.cc
vendor/compiler-rt/dist/lib/ubsan/ubsan_init_standalone_preinit.cc
vendor/compiler-rt/dist/lib/ubsan/ubsan_monitor.cc
vendor/compiler-rt/dist/lib/ubsan/ubsan_signals_standalone.cc
vendor/compiler-rt/dist/lib/ubsan/ubsan_type_hash.cc
vendor/compiler-rt/dist/lib/ubsan/ubsan_type_hash_itanium.cc
vendor/compiler-rt/dist/lib/ubsan/ubsan_type_hash_win.cc
vendor/compiler-rt/dist/lib/ubsan/ubsan_value.cc
vendor/compiler-rt/dist/lib/ubsan/ubsan_win_dll_thunk.cc
vendor/compiler-rt/dist/lib/ubsan/ubsan_win_dynamic_runtime_thunk.cc
vendor/compiler-rt/dist/lib/ubsan/ubsan_win_weak_interception.cc
vendor/compiler-rt/dist/lib/ubsan_minimal/ubsan_minimal_handlers.cc
vendor/compiler-rt/dist/lib/xray/xray_AArch64.cc
vendor/compiler-rt/dist/lib/xray/xray_arm.cc
vendor/compiler-rt/dist/lib/xray/xray_basic_flags.cc
vendor/compiler-rt/dist/lib/xray/xray_basic_logging.cc
vendor/compiler-rt/dist/lib/xray/xray_buffer_queue.cc
vendor/compiler-rt/dist/lib/xray/xray_fdr_flags.cc
vendor/compiler-rt/dist/lib/xray/xray_fdr_logging.cc
vendor/compiler-rt/dist/lib/xray/xray_flags.cc
vendor/compiler-rt/dist/lib/xray/xray_init.cc
vendor/compiler-rt/dist/lib/xray/xray_interface.cc
vendor/compiler-rt/dist/lib/xray/xray_log_interface.cc
vendor/compiler-rt/dist/lib/xray/xray_mips.cc
vendor/compiler-rt/dist/lib/xray/xray_mips64.cc
vendor/compiler-rt/dist/lib/xray/xray_powerpc64.cc
vendor/compiler-rt/dist/lib/xray/xray_profile_collector.cc
vendor/compiler-rt/dist/lib/xray/xray_profiling.cc
vendor/compiler-rt/dist/lib/xray/xray_profiling_flags.cc
vendor/compiler-rt/dist/lib/xray/xray_trampoline_powerpc64.cc
vendor/compiler-rt/dist/lib/xray/xray_utils.cc
vendor/compiler-rt/dist/lib/xray/xray_x86_64.cc
Modified:
vendor/compiler-rt/dist/include/sanitizer/dfsan_interface.h
vendor/compiler-rt/dist/include/sanitizer/tsan_interface_atomic.h
vendor/compiler-rt/dist/lib/asan/asan_allocator.h
vendor/compiler-rt/dist/lib/asan/asan_descriptions.h
vendor/compiler-rt/dist/lib/asan/asan_errors.h
vendor/compiler-rt/dist/lib/asan/asan_fake_stack.h
vendor/compiler-rt/dist/lib/asan/asan_flags.inc
vendor/compiler-rt/dist/lib/asan/asan_interceptors.h
vendor/compiler-rt/dist/lib/asan/asan_interceptors_memintrinsics.h
vendor/compiler-rt/dist/lib/asan/asan_internal.h
vendor/compiler-rt/dist/lib/asan/asan_scariness_score.h
vendor/compiler-rt/dist/lib/asan/asan_stack.h
vendor/compiler-rt/dist/lib/asan/asan_suppressions.h
vendor/compiler-rt/dist/lib/asan/asan_thread.h
vendor/compiler-rt/dist/lib/builtins/adddf3.c
vendor/compiler-rt/dist/lib/builtins/addsf3.c
vendor/compiler-rt/dist/lib/builtins/addtf3.c
vendor/compiler-rt/dist/lib/builtins/atomic.c
vendor/compiler-rt/dist/lib/builtins/clear_cache.c
vendor/compiler-rt/dist/lib/builtins/cpu_model.c
vendor/compiler-rt/dist/lib/builtins/divtf3.c
vendor/compiler-rt/dist/lib/builtins/emutls.c
vendor/compiler-rt/dist/lib/builtins/extenddftf2.c
vendor/compiler-rt/dist/lib/builtins/extendsftf2.c
vendor/compiler-rt/dist/lib/builtins/fixunsxfdi.c
vendor/compiler-rt/dist/lib/builtins/fixunsxfsi.c
vendor/compiler-rt/dist/lib/builtins/fixxfdi.c
vendor/compiler-rt/dist/lib/builtins/fp_add_impl.inc
vendor/compiler-rt/dist/lib/builtins/fp_lib.h
vendor/compiler-rt/dist/lib/builtins/fp_trunc_impl.inc
vendor/compiler-rt/dist/lib/builtins/subdf3.c
vendor/compiler-rt/dist/lib/builtins/subsf3.c
vendor/compiler-rt/dist/lib/builtins/subtf3.c
vendor/compiler-rt/dist/lib/builtins/udivmoddi4.c
vendor/compiler-rt/dist/lib/fuzzer/FuzzerBuiltinsMsvc.h
vendor/compiler-rt/dist/lib/fuzzer/FuzzerDefs.h
vendor/compiler-rt/dist/lib/fuzzer/FuzzerDriver.cpp
vendor/compiler-rt/dist/lib/fuzzer/FuzzerExtFunctions.def
vendor/compiler-rt/dist/lib/fuzzer/FuzzerFlags.def
vendor/compiler-rt/dist/lib/fuzzer/FuzzerInternal.h
vendor/compiler-rt/dist/lib/fuzzer/FuzzerLoop.cpp
vendor/compiler-rt/dist/lib/fuzzer/FuzzerMerge.cpp
vendor/compiler-rt/dist/lib/fuzzer/FuzzerOptions.h
vendor/compiler-rt/dist/lib/fuzzer/FuzzerTracePC.cpp
vendor/compiler-rt/dist/lib/fuzzer/FuzzerTracePC.h
vendor/compiler-rt/dist/lib/fuzzer/FuzzerUtil.h
vendor/compiler-rt/dist/lib/fuzzer/FuzzerUtilFuchsia.cpp
vendor/compiler-rt/dist/lib/fuzzer/FuzzerUtilPosix.cpp
vendor/compiler-rt/dist/lib/fuzzer/FuzzerUtilWindows.cpp
vendor/compiler-rt/dist/lib/gwp_asan/guarded_pool_allocator.cpp
vendor/compiler-rt/dist/lib/gwp_asan/guarded_pool_allocator.h
vendor/compiler-rt/dist/lib/gwp_asan/optional/backtrace.h
vendor/compiler-rt/dist/lib/gwp_asan/optional/backtrace_linux_libc.cpp
vendor/compiler-rt/dist/lib/gwp_asan/optional/backtrace_sanitizer_common.cpp
vendor/compiler-rt/dist/lib/gwp_asan/options.h
vendor/compiler-rt/dist/lib/gwp_asan/options.inc
vendor/compiler-rt/dist/lib/hwasan/hwasan.cpp
vendor/compiler-rt/dist/lib/hwasan/hwasan.h
vendor/compiler-rt/dist/lib/hwasan/hwasan_allocator.cpp
vendor/compiler-rt/dist/lib/hwasan/hwasan_allocator.h
vendor/compiler-rt/dist/lib/hwasan/hwasan_flags.inc
vendor/compiler-rt/dist/lib/hwasan/hwasan_interceptors.cpp
vendor/compiler-rt/dist/lib/hwasan/hwasan_interface_internal.h
vendor/compiler-rt/dist/lib/hwasan/hwasan_linux.cpp
vendor/compiler-rt/dist/lib/hwasan/hwasan_new_delete.cpp
vendor/compiler-rt/dist/lib/hwasan/hwasan_report.cpp
vendor/compiler-rt/dist/lib/hwasan/hwasan_tag_mismatch_aarch64.S
vendor/compiler-rt/dist/lib/interception/interception.h
vendor/compiler-rt/dist/lib/lsan/lsan_common.h
vendor/compiler-rt/dist/lib/msan/msan.h
vendor/compiler-rt/dist/lib/profile/InstrProfiling.h
vendor/compiler-rt/dist/lib/profile/InstrProfilingFile.c
vendor/compiler-rt/dist/lib/profile/InstrProfilingPlatformFuchsia.c
vendor/compiler-rt/dist/lib/profile/InstrProfilingUtil.c
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_allocator_checks.h
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_asm.h
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_atomic_msvc.h
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_common.h
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_common_interceptors.inc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_common_interface.inc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_common_syscalls.inc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_flag_parser.h
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_getauxval.h
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_interceptors_ioctl_netbsd.inc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_internal_defs.h
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_malloc_mac.inc
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_platform_interceptors.h
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_platform_limits_freebsd.h
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_platform_limits_netbsd.h
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_platform_limits_posix.h
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_platform_limits_solaris.h
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_posix.h
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_procmaps.h
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_suppressions.h
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_symbolizer_internal.h
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_tls_get_addr.h
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_vector.h
vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_win_defs.h
vendor/compiler-rt/dist/lib/sanitizer_common/symbolizer/scripts/build_symbolizer.sh
vendor/compiler-rt/dist/lib/sanitizer_common/symbolizer/scripts/global_symbols.txt
vendor/compiler-rt/dist/lib/scudo/scudo_allocator_secondary.h
vendor/compiler-rt/dist/lib/scudo/scudo_errors.cpp
vendor/compiler-rt/dist/lib/scudo/standalone/allocator_config.h
vendor/compiler-rt/dist/lib/scudo/standalone/chunk.h
vendor/compiler-rt/dist/lib/scudo/standalone/combined.h
vendor/compiler-rt/dist/lib/scudo/standalone/internal_defs.h
vendor/compiler-rt/dist/lib/scudo/standalone/linux.h
vendor/compiler-rt/dist/lib/scudo/standalone/list.h
vendor/compiler-rt/dist/lib/scudo/standalone/local_cache.h
vendor/compiler-rt/dist/lib/scudo/standalone/mutex.h
vendor/compiler-rt/dist/lib/scudo/standalone/primary32.h
vendor/compiler-rt/dist/lib/scudo/standalone/primary64.h
vendor/compiler-rt/dist/lib/scudo/standalone/quarantine.h
vendor/compiler-rt/dist/lib/scudo/standalone/secondary.h
vendor/compiler-rt/dist/lib/scudo/standalone/size_class_map.h
vendor/compiler-rt/dist/lib/scudo/standalone/stats.h
vendor/compiler-rt/dist/lib/scudo/standalone/string_utils.h
vendor/compiler-rt/dist/lib/scudo/standalone/tsd_exclusive.h
vendor/compiler-rt/dist/lib/scudo/standalone/tsd_shared.h
vendor/compiler-rt/dist/lib/scudo/standalone/wrappers_c.inc
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_dispatch_defs.h
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_interface.h
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_interface_inl.h
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_interface_java.h
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_mman.h
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_platform.h
vendor/compiler-rt/dist/lib/tsan/rtl/tsan_rtl.h
vendor/compiler-rt/dist/lib/ubsan/ubsan_checks.inc
Added: vendor/compiler-rt/dist/include/fuzzer/FuzzedDataProvider.h
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ vendor/compiler-rt/dist/include/fuzzer/FuzzedDataProvider.h Wed Oct 23 17:52:22 2019 (r353944)
@@ -0,0 +1,299 @@
+//===- FuzzedDataProvider.h - Utility header for fuzz targets ---*- C++ -* ===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+// A single header library providing an utility class to break up an array of
+// bytes. Whenever run on the same input, provides the same output, as long as
+// its methods are called in the same order, with the same arguments.
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_FUZZER_FUZZED_DATA_PROVIDER_H_
+#define LLVM_FUZZER_FUZZED_DATA_PROVIDER_H_
+
+#include <algorithm>
+#include <climits>
+#include <cstddef>
+#include <cstdint>
+#include <cstring>
+#include <initializer_list>
+#include <string>
+#include <type_traits>
+#include <utility>
+#include <vector>
+
+// In addition to the comments below, the API is also briefly documented at
+// https://github.com/google/fuzzing/blob/master/docs/split-inputs.md#fuzzed-data-provider
+class FuzzedDataProvider {
+ public:
+ // |data| is an array of length |size| that the FuzzedDataProvider wraps to
+ // provide more granular access. |data| must outlive the FuzzedDataProvider.
+ FuzzedDataProvider(const uint8_t *data, size_t size)
+ : data_ptr_(data), remaining_bytes_(size) {}
+ ~FuzzedDataProvider() = default;
+
+ // Returns a std::vector containing |num_bytes| of input data. If fewer than
+ // |num_bytes| of data remain, returns a shorter std::vector containing all
+ // of the data that's left. Can be used with any byte sized type, such as
+ // char, unsigned char, uint8_t, etc.
+ template <typename T> std::vector<T> ConsumeBytes(size_t num_bytes) {
+ num_bytes = std::min(num_bytes, remaining_bytes_);
+ return ConsumeBytes<T>(num_bytes, num_bytes);
+ }
+
+ // Similar to |ConsumeBytes|, but also appends the terminator value at the end
+ // of the resulting vector. Useful, when a mutable null-terminated C-string is
+ // needed, for example. But that is a rare case. Better avoid it, if possible,
+ // and prefer using |ConsumeBytes| or |ConsumeBytesAsString| methods.
+ template <typename T>
+ std::vector<T> ConsumeBytesWithTerminator(size_t num_bytes,
+ T terminator = 0) {
+ num_bytes = std::min(num_bytes, remaining_bytes_);
+ std::vector<T> result = ConsumeBytes<T>(num_bytes + 1, num_bytes);
+ result.back() = terminator;
+ return result;
+ }
+
+ // Returns a std::string containing |num_bytes| of input data. Using this and
+ // |.c_str()| on the resulting string is the best way to get an immutable
+ // null-terminated C string. If fewer than |num_bytes| of data remain, returns
+ // a shorter std::string containing all of the data that's left.
+ std::string ConsumeBytesAsString(size_t num_bytes) {
+ static_assert(sizeof(std::string::value_type) == sizeof(uint8_t),
+ "ConsumeBytesAsString cannot convert the data to a string.");
+
+ num_bytes = std::min(num_bytes, remaining_bytes_);
+ std::string result(
+ reinterpret_cast<const std::string::value_type *>(data_ptr_),
+ num_bytes);
+ Advance(num_bytes);
+ return result;
+ }
+
+ // Returns a number in the range [min, max] by consuming bytes from the
+ // input data. The value might not be uniformly distributed in the given
+ // range. If there's no input data left, always returns |min|. |min| must
+ // be less than or equal to |max|.
+ template <typename T> T ConsumeIntegralInRange(T min, T max) {
+ static_assert(std::is_integral<T>::value, "An integral type is required.");
+ static_assert(sizeof(T) <= sizeof(uint64_t), "Unsupported integral type.");
+
+ if (min > max)
+ abort();
+
+ // Use the biggest type possible to hold the range and the result.
+ uint64_t range = static_cast<uint64_t>(max) - min;
+ uint64_t result = 0;
+ size_t offset = 0;
+
+ while (offset < sizeof(T) * CHAR_BIT && (range >> offset) > 0 &&
+ remaining_bytes_ != 0) {
+ // Pull bytes off the end of the seed data. Experimentally, this seems to
+ // allow the fuzzer to more easily explore the input space. This makes
+ // sense, since it works by modifying inputs that caused new code to run,
+ // and this data is often used to encode length of data read by
+ // |ConsumeBytes|. Separating out read lengths makes it easier modify the
+ // contents of the data that is actually read.
+ --remaining_bytes_;
+ result = (result << CHAR_BIT) | data_ptr_[remaining_bytes_];
+ offset += CHAR_BIT;
+ }
+
+ // Avoid division by 0, in case |range + 1| results in overflow.
+ if (range != std::numeric_limits<decltype(range)>::max())
+ result = result % (range + 1);
+
+ return static_cast<T>(min + result);
+ }
+
+ // Returns a std::string of length from 0 to |max_length|. When it runs out of
+ // input data, returns what remains of the input. Designed to be more stable
+ // with respect to a fuzzer inserting characters than just picking a random
+ // length and then consuming that many bytes with |ConsumeBytes|.
+ std::string ConsumeRandomLengthString(size_t max_length) {
+ // Reads bytes from the start of |data_ptr_|. Maps "\\" to "\", and maps "\"
+ // followed by anything else to the end of the string. As a result of this
+ // logic, a fuzzer can insert characters into the string, and the string
+ // will be lengthened to include those new characters, resulting in a more
+ // stable fuzzer than picking the length of a string independently from
+ // picking its contents.
+ std::string result;
+
+ // Reserve the anticipated capaticity to prevent several reallocations.
+ result.reserve(std::min(max_length, remaining_bytes_));
+ for (size_t i = 0; i < max_length && remaining_bytes_ != 0; ++i) {
+ char next = ConvertUnsignedToSigned<char>(data_ptr_[0]);
+ Advance(1);
+ if (next == '\\' && remaining_bytes_ != 0) {
+ next = ConvertUnsignedToSigned<char>(data_ptr_[0]);
+ Advance(1);
+ if (next != '\\')
+ break;
+ }
+ result += next;
+ }
+
+ result.shrink_to_fit();
+ return result;
+ }
+
+ // Returns a std::vector containing all remaining bytes of the input data.
+ template <typename T> std::vector<T> ConsumeRemainingBytes() {
+ return ConsumeBytes<T>(remaining_bytes_);
+ }
+
+ // Returns a std::string containing all remaining bytes of the input data.
+ // Prefer using |ConsumeRemainingBytes| unless you actually need a std::string
+ // object.
+ std::string ConsumeRemainingBytesAsString() {
+ return ConsumeBytesAsString(remaining_bytes_);
+ }
+
+ // Returns a number in the range [Type's min, Type's max]. The value might
+ // not be uniformly distributed in the given range. If there's no input data
+ // left, always returns |min|.
+ template <typename T> T ConsumeIntegral() {
+ return ConsumeIntegralInRange(std::numeric_limits<T>::min(),
+ std::numeric_limits<T>::max());
+ }
+
+ // Reads one byte and returns a bool, or false when no data remains.
+ bool ConsumeBool() { return 1 & ConsumeIntegral<uint8_t>(); }
+
+ // Returns a copy of the value selected from the given fixed-size |array|.
+ template <typename T, size_t size>
+ T PickValueInArray(const T (&array)[size]) {
+ static_assert(size > 0, "The array must be non empty.");
+ return array[ConsumeIntegralInRange<size_t>(0, size - 1)];
+ }
+
+ template <typename T>
+ T PickValueInArray(std::initializer_list<const T> list) {
+ // TODO(Dor1s): switch to static_assert once C++14 is allowed.
+ if (!list.size())
+ abort();
+
+ return *(list.begin() + ConsumeIntegralInRange<size_t>(0, list.size() - 1));
+ }
+
+ // Returns an enum value. The enum must start at 0 and be contiguous. It must
+ // also contain |kMaxValue| aliased to its largest (inclusive) value. Such as:
+ // enum class Foo { SomeValue, OtherValue, kMaxValue = OtherValue };
+ template <typename T> T ConsumeEnum() {
+ static_assert(std::is_enum<T>::value, "|T| must be an enum type.");
+ return static_cast<T>(ConsumeIntegralInRange<uint32_t>(
+ 0, static_cast<uint32_t>(T::kMaxValue)));
+ }
+
+ // Returns a floating point number in the range [0.0, 1.0]. If there's no
+ // input data left, always returns 0.
+ template <typename T> T ConsumeProbability() {
+ static_assert(std::is_floating_point<T>::value,
+ "A floating point type is required.");
+
+ // Use different integral types for different floating point types in order
+ // to provide better density of the resulting values.
+ using IntegralType =
+ typename std::conditional<(sizeof(T) <= sizeof(uint32_t)), uint32_t,
+ uint64_t>::type;
+
+ T result = static_cast<T>(ConsumeIntegral<IntegralType>());
+ result /= static_cast<T>(std::numeric_limits<IntegralType>::max());
+ return result;
+ }
+
+ // Returns a floating point value in the range [Type's lowest, Type's max] by
+ // consuming bytes from the input data. If there's no input data left, always
+ // returns approximately 0.
+ template <typename T> T ConsumeFloatingPoint() {
+ return ConsumeFloatingPointInRange<T>(std::numeric_limits<T>::lowest(),
+ std::numeric_limits<T>::max());
+ }
+
+ // Returns a floating point value in the given range by consuming bytes from
+ // the input data. If there's no input data left, returns |min|. Note that
+ // |min| must be less than or equal to |max|.
+ template <typename T> T ConsumeFloatingPointInRange(T min, T max) {
+ if (min > max)
+ abort();
+
+ T range = .0;
+ T result = min;
+ constexpr T zero(.0);
+ if (max > zero && min < zero && max > min + std::numeric_limits<T>::max()) {
+ // The diff |max - min| would overflow the given floating point type. Use
+ // the half of the diff as the range and consume a bool to decide whether
+ // the result is in the first of the second part of the diff.
+ range = (max / 2.0) - (min / 2.0);
+ if (ConsumeBool()) {
+ result += range;
+ }
+ } else {
+ range = max - min;
+ }
+
+ return result + range * ConsumeProbability<T>();
+ }
+
+ // Reports the remaining bytes available for fuzzed input.
+ size_t remaining_bytes() { return remaining_bytes_; }
+
+ private:
+ FuzzedDataProvider(const FuzzedDataProvider &) = delete;
+ FuzzedDataProvider &operator=(const FuzzedDataProvider &) = delete;
+
+ void Advance(size_t num_bytes) {
+ if (num_bytes > remaining_bytes_)
+ abort();
+
+ data_ptr_ += num_bytes;
+ remaining_bytes_ -= num_bytes;
+ }
+
+ template <typename T>
+ std::vector<T> ConsumeBytes(size_t size, size_t num_bytes_to_consume) {
+ static_assert(sizeof(T) == sizeof(uint8_t), "Incompatible data type.");
+
+ // The point of using the size-based constructor below is to increase the
+ // odds of having a vector object with capacity being equal to the length.
+ // That part is always implementation specific, but at least both libc++ and
+ // libstdc++ allocate the requested number of bytes in that constructor,
+ // which seems to be a natural choice for other implementations as well.
+ // To increase the odds even more, we also call |shrink_to_fit| below.
+ std::vector<T> result(size);
+ std::memcpy(result.data(), data_ptr_, num_bytes_to_consume);
+ Advance(num_bytes_to_consume);
+
+ // Even though |shrink_to_fit| is also implementation specific, we expect it
+ // to provide an additional assurance in case vector's constructor allocated
+ // a buffer which is larger than the actual amount of data we put inside it.
+ result.shrink_to_fit();
+ return result;
+ }
+
+ template <typename TS, typename TU> TS ConvertUnsignedToSigned(TU value) {
+ static_assert(sizeof(TS) == sizeof(TU), "Incompatible data types.");
+ static_assert(!std::numeric_limits<TU>::is_signed,
+ "Source type must be unsigned.");
+
+ // TODO(Dor1s): change to `if constexpr` once C++17 becomes mainstream.
+ if (std::numeric_limits<TS>::is_modulo)
+ return static_cast<TS>(value);
+
+ // Avoid using implementation-defined unsigned to signer conversions.
+ // To learn more, see https://stackoverflow.com/questions/13150449.
+ if (value <= std::numeric_limits<TS>::max()) {
+ return static_cast<TS>(value);
+ } else {
+ constexpr auto TS_min = std::numeric_limits<TS>::min();
+ return TS_min + static_cast<char>(value - TS_min);
+ }
+ }
+
+ const uint8_t *data_ptr_;
+ size_t remaining_bytes_;
+};
+
+#endif // LLVM_FUZZER_FUZZED_DATA_PROVIDER_H_
Modified: vendor/compiler-rt/dist/include/sanitizer/dfsan_interface.h
==============================================================================
--- vendor/compiler-rt/dist/include/sanitizer/dfsan_interface.h Wed Oct 23 17:52:16 2019 (r353943)
+++ vendor/compiler-rt/dist/include/sanitizer/dfsan_interface.h Wed Oct 23 17:52:22 2019 (r353944)
@@ -112,7 +112,7 @@ void dfsan_weak_hook_strncmp(void *caller_pc, const ch
} // extern "C"
template <typename T>
-void dfsan_set_label(dfsan_label label, T &data) { // NOLINT
+void dfsan_set_label(dfsan_label label, T &data) { // NOLINT
dfsan_set_label(label, (void *)&data, sizeof(T));
}
Modified: vendor/compiler-rt/dist/include/sanitizer/tsan_interface_atomic.h
==============================================================================
--- vendor/compiler-rt/dist/include/sanitizer/tsan_interface_atomic.h Wed Oct 23 17:52:16 2019 (r353943)
+++ vendor/compiler-rt/dist/include/sanitizer/tsan_interface_atomic.h Wed Oct 23 17:52:22 2019 (r353944)
@@ -17,10 +17,10 @@
extern "C" {
#endif
-typedef char __tsan_atomic8;
-typedef short __tsan_atomic16; // NOLINT
-typedef int __tsan_atomic32;
-typedef long __tsan_atomic64; // NOLINT
+typedef char __tsan_atomic8;
+typedef short __tsan_atomic16;
+typedef int __tsan_atomic32;
+typedef long __tsan_atomic64;
#if defined(__SIZEOF_INT128__) \
|| (__clang_major__ * 100 + __clang_minor__ >= 302)
__extension__ typedef __int128 __tsan_atomic128;
Added: vendor/compiler-rt/dist/include/sanitizer/ubsan_interface.h
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ vendor/compiler-rt/dist/include/sanitizer/ubsan_interface.h Wed Oct 23 17:52:22 2019 (r353944)
@@ -0,0 +1,32 @@
+//===-- sanitizer/ubsan_interface.h -----------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file is a part of UBSanitizer (UBSan).
+//
+// Public interface header.
+//===----------------------------------------------------------------------===//
+#ifndef SANITIZER_UBSAN_INTERFACE_H
+#define SANITIZER_UBSAN_INTERFACE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/// User-provided default option settings.
+///
+/// You can provide your own implementation of this function to return a string
+/// containing UBSan runtime options (for example,
+/// <c>verbosity=1:halt_on_error=0</c>).
+///
+/// \returns Default options string.
+const char* __ubsan_default_options(void);
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+#endif // SANITIZER_UBSAN_INTERFACE_H
Added: vendor/compiler-rt/dist/lib/asan/asan_activation.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ vendor/compiler-rt/dist/lib/asan/asan_activation.cpp Wed Oct 23 17:52:22 2019 (r353944)
@@ -0,0 +1,143 @@
+//===-- asan_activation.cpp -------------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file is a part of AddressSanitizer, an address sanity checker.
+//
+// ASan activation/deactivation logic.
+//===----------------------------------------------------------------------===//
+
+#include "asan_activation.h"
+#include "asan_allocator.h"
+#include "asan_flags.h"
+#include "asan_internal.h"
+#include "asan_mapping.h"
+#include "asan_poisoning.h"
+#include "asan_stack.h"
+#include "sanitizer_common/sanitizer_common.h"
+#include "sanitizer_common/sanitizer_flags.h"
+
+namespace __asan {
+
+static struct AsanDeactivatedFlags {
+ AllocatorOptions allocator_options;
+ int malloc_context_size;
+ bool poison_heap;
+ bool coverage;
+ const char *coverage_dir;
+
+ void RegisterActivationFlags(FlagParser *parser, Flags *f, CommonFlags *cf) {
+#define ASAN_ACTIVATION_FLAG(Type, Name) \
+ RegisterFlag(parser, #Name, "", &f->Name);
+#define COMMON_ACTIVATION_FLAG(Type, Name) \
+ RegisterFlag(parser, #Name, "", &cf->Name);
+#include "asan_activation_flags.inc"
+#undef ASAN_ACTIVATION_FLAG
+#undef COMMON_ACTIVATION_FLAG
+
+ RegisterIncludeFlags(parser, cf);
+ }
+
+ void OverrideFromActivationFlags() {
+ Flags f;
+ CommonFlags cf;
+ FlagParser parser;
+ RegisterActivationFlags(&parser, &f, &cf);
+
+ cf.SetDefaults();
+ // Copy the current activation flags.
+ allocator_options.CopyTo(&f, &cf);
+ cf.malloc_context_size = malloc_context_size;
+ f.poison_heap = poison_heap;
+ cf.coverage = coverage;
+ cf.coverage_dir = coverage_dir;
+ cf.verbosity = Verbosity();
+ cf.help = false; // this is activation-specific help
+
+ // Check if activation flags need to be overriden.
+ if (const char *env = GetEnv("ASAN_ACTIVATION_OPTIONS")) {
+ parser.ParseString(env);
+ }
+
+ InitializeCommonFlags(&cf);
+
+ if (Verbosity()) ReportUnrecognizedFlags();
+
+ if (cf.help) parser.PrintFlagDescriptions();
+
+ allocator_options.SetFrom(&f, &cf);
+ malloc_context_size = cf.malloc_context_size;
+ poison_heap = f.poison_heap;
+ coverage = cf.coverage;
+ coverage_dir = cf.coverage_dir;
+ }
+
+ void Print() {
+ Report(
+ "quarantine_size_mb %d, thread_local_quarantine_size_kb %d, "
+ "max_redzone %d, poison_heap %d, malloc_context_size %d, "
+ "alloc_dealloc_mismatch %d, allocator_may_return_null %d, coverage %d, "
+ "coverage_dir %s, allocator_release_to_os_interval_ms %d\n",
+ allocator_options.quarantine_size_mb,
+ allocator_options.thread_local_quarantine_size_kb,
+ allocator_options.max_redzone, poison_heap, malloc_context_size,
+ allocator_options.alloc_dealloc_mismatch,
+ allocator_options.may_return_null, coverage, coverage_dir,
+ allocator_options.release_to_os_interval_ms);
+ }
+} asan_deactivated_flags;
+
+static bool asan_is_deactivated;
+
+void AsanDeactivate() {
+ CHECK(!asan_is_deactivated);
+ VReport(1, "Deactivating ASan\n");
+
+ // Stash runtime state.
+ GetAllocatorOptions(&asan_deactivated_flags.allocator_options);
+ asan_deactivated_flags.malloc_context_size = GetMallocContextSize();
+ asan_deactivated_flags.poison_heap = CanPoisonMemory();
+ asan_deactivated_flags.coverage = common_flags()->coverage;
+ asan_deactivated_flags.coverage_dir = common_flags()->coverage_dir;
+
+ // Deactivate the runtime.
+ SetCanPoisonMemory(false);
+ SetMallocContextSize(1);
+
+ AllocatorOptions disabled = asan_deactivated_flags.allocator_options;
+ disabled.quarantine_size_mb = 0;
+ disabled.thread_local_quarantine_size_kb = 0;
+ // Redzone must be at least Max(16, granularity) bytes long.
+ disabled.min_redzone = Max(16, (int)SHADOW_GRANULARITY);
+ disabled.max_redzone = disabled.min_redzone;
+ disabled.alloc_dealloc_mismatch = false;
+ disabled.may_return_null = true;
+ ReInitializeAllocator(disabled);
+
+ asan_is_deactivated = true;
+}
+
+void AsanActivate() {
+ if (!asan_is_deactivated) return;
+ VReport(1, "Activating ASan\n");
+
+ UpdateProcessName();
+
+ asan_deactivated_flags.OverrideFromActivationFlags();
+
+ SetCanPoisonMemory(asan_deactivated_flags.poison_heap);
+ SetMallocContextSize(asan_deactivated_flags.malloc_context_size);
+ ReInitializeAllocator(asan_deactivated_flags.allocator_options);
+
+ asan_is_deactivated = false;
+ if (Verbosity()) {
+ Report("Activated with flags:\n");
+ asan_deactivated_flags.Print();
+ }
+}
+
+} // namespace __asan
Added: vendor/compiler-rt/dist/lib/asan/asan_allocator.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ vendor/compiler-rt/dist/lib/asan/asan_allocator.cpp Wed Oct 23 17:52:22 2019 (r353944)
@@ -0,0 +1,1119 @@
+//===-- asan_allocator.cpp ------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file is a part of AddressSanitizer, an address sanity checker.
+//
+// Implementation of ASan's memory allocator, 2-nd version.
+// This variant uses the allocator from sanitizer_common, i.e. the one shared
+// with ThreadSanitizer and MemorySanitizer.
+//
+//===----------------------------------------------------------------------===//
+
+#include "asan_allocator.h"
+#include "asan_mapping.h"
+#include "asan_poisoning.h"
+#include "asan_report.h"
+#include "asan_stack.h"
+#include "asan_thread.h"
+#include "sanitizer_common/sanitizer_allocator_checks.h"
+#include "sanitizer_common/sanitizer_allocator_interface.h"
+#include "sanitizer_common/sanitizer_errno.h"
+#include "sanitizer_common/sanitizer_flags.h"
+#include "sanitizer_common/sanitizer_internal_defs.h"
+#include "sanitizer_common/sanitizer_list.h"
+#include "sanitizer_common/sanitizer_stackdepot.h"
+#include "sanitizer_common/sanitizer_quarantine.h"
+#include "lsan/lsan_common.h"
+
+namespace __asan {
+
+// Valid redzone sizes are 16, 32, 64, ... 2048, so we encode them in 3 bits.
+// We use adaptive redzones: for larger allocation larger redzones are used.
+static u32 RZLog2Size(u32 rz_log) {
+ CHECK_LT(rz_log, 8);
+ return 16 << rz_log;
+}
+
+static u32 RZSize2Log(u32 rz_size) {
+ CHECK_GE(rz_size, 16);
+ CHECK_LE(rz_size, 2048);
+ CHECK(IsPowerOfTwo(rz_size));
+ u32 res = Log2(rz_size) - 4;
+ CHECK_EQ(rz_size, RZLog2Size(res));
+ return res;
+}
+
+static AsanAllocator &get_allocator();
+
+// The memory chunk allocated from the underlying allocator looks like this:
+// L L L L L L H H U U U U U U R R
+// L -- left redzone words (0 or more bytes)
+// H -- ChunkHeader (16 bytes), which is also a part of the left redzone.
+// U -- user memory.
+// R -- right redzone (0 or more bytes)
+// ChunkBase consists of ChunkHeader and other bytes that overlap with user
+// memory.
+
+// If the left redzone is greater than the ChunkHeader size we store a magic
+// value in the first uptr word of the memory block and store the address of
+// ChunkBase in the next uptr.
+// M B L L L L L L L L L H H U U U U U U
+// | ^
+// ---------------------|
+// M -- magic value kAllocBegMagic
+// B -- address of ChunkHeader pointing to the first 'H'
+static const uptr kAllocBegMagic = 0xCC6E96B9;
+
+struct ChunkHeader {
+ // 1-st 8 bytes.
+ u32 chunk_state : 8; // Must be first.
+ u32 alloc_tid : 24;
+
+ u32 free_tid : 24;
+ u32 from_memalign : 1;
+ u32 alloc_type : 2;
+ u32 rz_log : 3;
+ u32 lsan_tag : 2;
+ // 2-nd 8 bytes
+ // This field is used for small sizes. For large sizes it is equal to
+ // SizeClassMap::kMaxSize and the actual size is stored in the
+ // SecondaryAllocator's metadata.
+ u32 user_requested_size : 29;
+ // align < 8 -> 0
+ // else -> log2(min(align, 512)) - 2
+ u32 user_requested_alignment_log : 3;
+ u32 alloc_context_id;
+};
+
+struct ChunkBase : ChunkHeader {
+ // Header2, intersects with user memory.
+ u32 free_context_id;
+};
+
+static const uptr kChunkHeaderSize = sizeof(ChunkHeader);
+static const uptr kChunkHeader2Size = sizeof(ChunkBase) - kChunkHeaderSize;
+COMPILER_CHECK(kChunkHeaderSize == 16);
+COMPILER_CHECK(kChunkHeader2Size <= 16);
+
+// Every chunk of memory allocated by this allocator can be in one of 3 states:
+// CHUNK_AVAILABLE: the chunk is in the free list and ready to be allocated.
+// CHUNK_ALLOCATED: the chunk is allocated and not yet freed.
+// CHUNK_QUARANTINE: the chunk was freed and put into quarantine zone.
+enum {
+ CHUNK_AVAILABLE = 0, // 0 is the default value even if we didn't set it.
+ CHUNK_ALLOCATED = 2,
+ CHUNK_QUARANTINE = 3
+};
+
+struct AsanChunk: ChunkBase {
+ uptr Beg() { return reinterpret_cast<uptr>(this) + kChunkHeaderSize; }
+ uptr UsedSize(bool locked_version = false) {
+ if (user_requested_size != SizeClassMap::kMaxSize)
+ return user_requested_size;
+ return *reinterpret_cast<uptr *>(
+ get_allocator().GetMetaData(AllocBeg(locked_version)));
+ }
+ void *AllocBeg(bool locked_version = false) {
+ if (from_memalign) {
+ if (locked_version)
+ return get_allocator().GetBlockBeginFastLocked(
+ reinterpret_cast<void *>(this));
+ return get_allocator().GetBlockBegin(reinterpret_cast<void *>(this));
+ }
+ return reinterpret_cast<void*>(Beg() - RZLog2Size(rz_log));
+ }
+ bool AddrIsInside(uptr addr, bool locked_version = false) {
+ return (addr >= Beg()) && (addr < Beg() + UsedSize(locked_version));
+ }
+};
+
+struct QuarantineCallback {
+ QuarantineCallback(AllocatorCache *cache, BufferedStackTrace *stack)
+ : cache_(cache),
+ stack_(stack) {
+ }
+
+ void Recycle(AsanChunk *m) {
+ CHECK_EQ(m->chunk_state, CHUNK_QUARANTINE);
+ atomic_store((atomic_uint8_t*)m, CHUNK_AVAILABLE, memory_order_relaxed);
+ CHECK_NE(m->alloc_tid, kInvalidTid);
+ CHECK_NE(m->free_tid, kInvalidTid);
+ PoisonShadow(m->Beg(),
+ RoundUpTo(m->UsedSize(), SHADOW_GRANULARITY),
+ kAsanHeapLeftRedzoneMagic);
+ void *p = reinterpret_cast<void *>(m->AllocBeg());
+ if (p != m) {
+ uptr *alloc_magic = reinterpret_cast<uptr *>(p);
+ CHECK_EQ(alloc_magic[0], kAllocBegMagic);
+ // Clear the magic value, as allocator internals may overwrite the
+ // contents of deallocated chunk, confusing GetAsanChunk lookup.
+ alloc_magic[0] = 0;
+ CHECK_EQ(alloc_magic[1], reinterpret_cast<uptr>(m));
+ }
+
+ // Statistics.
+ AsanStats &thread_stats = GetCurrentThreadStats();
+ thread_stats.real_frees++;
+ thread_stats.really_freed += m->UsedSize();
+
+ get_allocator().Deallocate(cache_, p);
+ }
+
+ void *Allocate(uptr size) {
+ void *res = get_allocator().Allocate(cache_, size, 1);
+ // TODO(alekseys): Consider making quarantine OOM-friendly.
+ if (UNLIKELY(!res))
+ ReportOutOfMemory(size, stack_);
+ return res;
+ }
+
+ void Deallocate(void *p) {
+ get_allocator().Deallocate(cache_, p);
+ }
+
+ private:
+ AllocatorCache* const cache_;
+ BufferedStackTrace* const stack_;
+};
+
+typedef Quarantine<QuarantineCallback, AsanChunk> AsanQuarantine;
+typedef AsanQuarantine::Cache QuarantineCache;
+
+void AsanMapUnmapCallback::OnMap(uptr p, uptr size) const {
+ PoisonShadow(p, size, kAsanHeapLeftRedzoneMagic);
+ // Statistics.
+ AsanStats &thread_stats = GetCurrentThreadStats();
+ thread_stats.mmaps++;
+ thread_stats.mmaped += size;
+}
+void AsanMapUnmapCallback::OnUnmap(uptr p, uptr size) const {
+ PoisonShadow(p, size, 0);
+ // We are about to unmap a chunk of user memory.
+ // Mark the corresponding shadow memory as not needed.
+ FlushUnneededASanShadowMemory(p, size);
+ // Statistics.
+ AsanStats &thread_stats = GetCurrentThreadStats();
+ thread_stats.munmaps++;
+ thread_stats.munmaped += size;
+}
+
+// We can not use THREADLOCAL because it is not supported on some of the
+// platforms we care about (OSX 10.6, Android).
+// static THREADLOCAL AllocatorCache cache;
+AllocatorCache *GetAllocatorCache(AsanThreadLocalMallocStorage *ms) {
+ CHECK(ms);
+ return &ms->allocator_cache;
+}
+
+QuarantineCache *GetQuarantineCache(AsanThreadLocalMallocStorage *ms) {
+ CHECK(ms);
+ CHECK_LE(sizeof(QuarantineCache), sizeof(ms->quarantine_cache));
+ return reinterpret_cast<QuarantineCache *>(ms->quarantine_cache);
+}
+
+void AllocatorOptions::SetFrom(const Flags *f, const CommonFlags *cf) {
+ quarantine_size_mb = f->quarantine_size_mb;
+ thread_local_quarantine_size_kb = f->thread_local_quarantine_size_kb;
+ min_redzone = f->redzone;
+ max_redzone = f->max_redzone;
+ may_return_null = cf->allocator_may_return_null;
+ alloc_dealloc_mismatch = f->alloc_dealloc_mismatch;
+ release_to_os_interval_ms = cf->allocator_release_to_os_interval_ms;
+}
+
+void AllocatorOptions::CopyTo(Flags *f, CommonFlags *cf) {
+ f->quarantine_size_mb = quarantine_size_mb;
+ f->thread_local_quarantine_size_kb = thread_local_quarantine_size_kb;
+ f->redzone = min_redzone;
+ f->max_redzone = max_redzone;
+ cf->allocator_may_return_null = may_return_null;
+ f->alloc_dealloc_mismatch = alloc_dealloc_mismatch;
+ cf->allocator_release_to_os_interval_ms = release_to_os_interval_ms;
+}
+
+struct Allocator {
+ static const uptr kMaxAllowedMallocSize =
+ FIRST_32_SECOND_64(3UL << 30, 1ULL << 40);
+
+ AsanAllocator allocator;
+ AsanQuarantine quarantine;
+ StaticSpinMutex fallback_mutex;
+ AllocatorCache fallback_allocator_cache;
+ QuarantineCache fallback_quarantine_cache;
+
+ atomic_uint8_t rss_limit_exceeded;
+
+ // ------------------- Options --------------------------
+ atomic_uint16_t min_redzone;
+ atomic_uint16_t max_redzone;
+ atomic_uint8_t alloc_dealloc_mismatch;
+
+ // ------------------- Initialization ------------------------
+ explicit Allocator(LinkerInitialized)
+ : quarantine(LINKER_INITIALIZED),
+ fallback_quarantine_cache(LINKER_INITIALIZED) {}
+
+ void CheckOptions(const AllocatorOptions &options) const {
+ CHECK_GE(options.min_redzone, 16);
+ CHECK_GE(options.max_redzone, options.min_redzone);
+ CHECK_LE(options.max_redzone, 2048);
+ CHECK(IsPowerOfTwo(options.min_redzone));
+ CHECK(IsPowerOfTwo(options.max_redzone));
+ }
+
+ void SharedInitCode(const AllocatorOptions &options) {
+ CheckOptions(options);
+ quarantine.Init((uptr)options.quarantine_size_mb << 20,
+ (uptr)options.thread_local_quarantine_size_kb << 10);
+ atomic_store(&alloc_dealloc_mismatch, options.alloc_dealloc_mismatch,
+ memory_order_release);
+ atomic_store(&min_redzone, options.min_redzone, memory_order_release);
+ atomic_store(&max_redzone, options.max_redzone, memory_order_release);
+ }
+
+ void InitLinkerInitialized(const AllocatorOptions &options) {
+ SetAllocatorMayReturnNull(options.may_return_null);
+ allocator.InitLinkerInitialized(options.release_to_os_interval_ms);
+ SharedInitCode(options);
+ }
+
+ bool RssLimitExceeded() {
+ return atomic_load(&rss_limit_exceeded, memory_order_relaxed);
+ }
+
+ void SetRssLimitExceeded(bool limit_exceeded) {
+ atomic_store(&rss_limit_exceeded, limit_exceeded, memory_order_relaxed);
+ }
+
+ void RePoisonChunk(uptr chunk) {
+ // This could be a user-facing chunk (with redzones), or some internal
+ // housekeeping chunk, like TransferBatch. Start by assuming the former.
+ AsanChunk *ac = GetAsanChunk((void *)chunk);
+ uptr allocated_size = allocator.GetActuallyAllocatedSize((void *)ac);
+ uptr beg = ac->Beg();
+ uptr end = ac->Beg() + ac->UsedSize(true);
+ uptr chunk_end = chunk + allocated_size;
+ if (chunk < beg && beg < end && end <= chunk_end &&
+ ac->chunk_state == CHUNK_ALLOCATED) {
+ // Looks like a valid AsanChunk in use, poison redzones only.
+ PoisonShadow(chunk, beg - chunk, kAsanHeapLeftRedzoneMagic);
+ uptr end_aligned_down = RoundDownTo(end, SHADOW_GRANULARITY);
+ FastPoisonShadowPartialRightRedzone(
+ end_aligned_down, end - end_aligned_down,
+ chunk_end - end_aligned_down, kAsanHeapLeftRedzoneMagic);
+ } else {
+ // This is either not an AsanChunk or freed or quarantined AsanChunk.
+ // In either case, poison everything.
+ PoisonShadow(chunk, allocated_size, kAsanHeapLeftRedzoneMagic);
+ }
+ }
+
+ void ReInitialize(const AllocatorOptions &options) {
+ SetAllocatorMayReturnNull(options.may_return_null);
+ allocator.SetReleaseToOSIntervalMs(options.release_to_os_interval_ms);
+ SharedInitCode(options);
+
+ // Poison all existing allocation's redzones.
+ if (CanPoisonMemory()) {
+ allocator.ForceLock();
+ allocator.ForEachChunk(
+ [](uptr chunk, void *alloc) {
+ ((Allocator *)alloc)->RePoisonChunk(chunk);
+ },
+ this);
+ allocator.ForceUnlock();
+ }
+ }
+
+ void GetOptions(AllocatorOptions *options) const {
+ options->quarantine_size_mb = quarantine.GetSize() >> 20;
+ options->thread_local_quarantine_size_kb = quarantine.GetCacheSize() >> 10;
+ options->min_redzone = atomic_load(&min_redzone, memory_order_acquire);
+ options->max_redzone = atomic_load(&max_redzone, memory_order_acquire);
+ options->may_return_null = AllocatorMayReturnNull();
+ options->alloc_dealloc_mismatch =
+ atomic_load(&alloc_dealloc_mismatch, memory_order_acquire);
+ options->release_to_os_interval_ms = allocator.ReleaseToOSIntervalMs();
+ }
+
+ // -------------------- Helper methods. -------------------------
+ uptr ComputeRZLog(uptr user_requested_size) {
+ u32 rz_log =
+ user_requested_size <= 64 - 16 ? 0 :
+ user_requested_size <= 128 - 32 ? 1 :
+ user_requested_size <= 512 - 64 ? 2 :
+ user_requested_size <= 4096 - 128 ? 3 :
+ user_requested_size <= (1 << 14) - 256 ? 4 :
+ user_requested_size <= (1 << 15) - 512 ? 5 :
+ user_requested_size <= (1 << 16) - 1024 ? 6 : 7;
+ u32 min_rz = atomic_load(&min_redzone, memory_order_acquire);
+ u32 max_rz = atomic_load(&max_redzone, memory_order_acquire);
+ return Min(Max(rz_log, RZSize2Log(min_rz)), RZSize2Log(max_rz));
+ }
+
+ static uptr ComputeUserRequestedAlignmentLog(uptr user_requested_alignment) {
+ if (user_requested_alignment < 8)
+ return 0;
+ if (user_requested_alignment > 512)
+ user_requested_alignment = 512;
+ return Log2(user_requested_alignment) - 2;
+ }
+
+ static uptr ComputeUserAlignment(uptr user_requested_alignment_log) {
+ if (user_requested_alignment_log == 0)
+ return 0;
+ return 1LL << (user_requested_alignment_log + 2);
+ }
+
+ // We have an address between two chunks, and we want to report just one.
+ AsanChunk *ChooseChunk(uptr addr, AsanChunk *left_chunk,
+ AsanChunk *right_chunk) {
+ // Prefer an allocated chunk over freed chunk and freed chunk
+ // over available chunk.
+ if (left_chunk->chunk_state != right_chunk->chunk_state) {
+ if (left_chunk->chunk_state == CHUNK_ALLOCATED)
+ return left_chunk;
+ if (right_chunk->chunk_state == CHUNK_ALLOCATED)
+ return right_chunk;
+ if (left_chunk->chunk_state == CHUNK_QUARANTINE)
+ return left_chunk;
+ if (right_chunk->chunk_state == CHUNK_QUARANTINE)
+ return right_chunk;
+ }
+ // Same chunk_state: choose based on offset.
+ sptr l_offset = 0, r_offset = 0;
+ CHECK(AsanChunkView(left_chunk).AddrIsAtRight(addr, 1, &l_offset));
+ CHECK(AsanChunkView(right_chunk).AddrIsAtLeft(addr, 1, &r_offset));
+ if (l_offset < r_offset)
+ return left_chunk;
+ return right_chunk;
+ }
+
+ // -------------------- Allocation/Deallocation routines ---------------
+ void *Allocate(uptr size, uptr alignment, BufferedStackTrace *stack,
+ AllocType alloc_type, bool can_fill) {
+ if (UNLIKELY(!asan_inited))
+ AsanInitFromRtl();
+ if (RssLimitExceeded()) {
+ if (AllocatorMayReturnNull())
+ return nullptr;
+ ReportRssLimitExceeded(stack);
+ }
+ Flags &fl = *flags();
+ CHECK(stack);
+ const uptr min_alignment = SHADOW_GRANULARITY;
+ const uptr user_requested_alignment_log =
+ ComputeUserRequestedAlignmentLog(alignment);
+ if (alignment < min_alignment)
+ alignment = min_alignment;
+ if (size == 0) {
+ // We'd be happy to avoid allocating memory for zero-size requests, but
+ // some programs/tests depend on this behavior and assume that malloc
+ // would not return NULL even for zero-size allocations. Moreover, it
+ // looks like operator new should never return NULL, and results of
+ // consecutive "new" calls must be different even if the allocated size
+ // is zero.
+ size = 1;
+ }
+ CHECK(IsPowerOfTwo(alignment));
+ uptr rz_log = ComputeRZLog(size);
+ uptr rz_size = RZLog2Size(rz_log);
+ uptr rounded_size = RoundUpTo(Max(size, kChunkHeader2Size), alignment);
+ uptr needed_size = rounded_size + rz_size;
+ if (alignment > min_alignment)
+ needed_size += alignment;
+ bool using_primary_allocator = true;
+ // If we are allocating from the secondary allocator, there will be no
+ // automatic right redzone, so add the right redzone manually.
+ if (!PrimaryAllocator::CanAllocate(needed_size, alignment)) {
+ needed_size += rz_size;
+ using_primary_allocator = false;
+ }
+ CHECK(IsAligned(needed_size, min_alignment));
+ if (size > kMaxAllowedMallocSize || needed_size > kMaxAllowedMallocSize) {
+ if (AllocatorMayReturnNull()) {
+ Report("WARNING: AddressSanitizer failed to allocate 0x%zx bytes\n",
+ (void*)size);
+ return nullptr;
+ }
+ ReportAllocationSizeTooBig(size, needed_size, kMaxAllowedMallocSize,
+ stack);
+ }
+
+ AsanThread *t = GetCurrentThread();
+ void *allocated;
+ if (t) {
+ AllocatorCache *cache = GetAllocatorCache(&t->malloc_storage());
+ allocated = allocator.Allocate(cache, needed_size, 8);
+ } else {
+ SpinMutexLock l(&fallback_mutex);
+ AllocatorCache *cache = &fallback_allocator_cache;
+ allocated = allocator.Allocate(cache, needed_size, 8);
+ }
+ if (UNLIKELY(!allocated)) {
+ SetAllocatorOutOfMemory();
+ if (AllocatorMayReturnNull())
+ return nullptr;
+ ReportOutOfMemory(size, stack);
+ }
+
+ if (*(u8 *)MEM_TO_SHADOW((uptr)allocated) == 0 && CanPoisonMemory()) {
+ // Heap poisoning is enabled, but the allocator provides an unpoisoned
+ // chunk. This is possible if CanPoisonMemory() was false for some
+ // time, for example, due to flags()->start_disabled.
+ // Anyway, poison the block before using it for anything else.
+ uptr allocated_size = allocator.GetActuallyAllocatedSize(allocated);
+ PoisonShadow((uptr)allocated, allocated_size, kAsanHeapLeftRedzoneMagic);
+ }
+
+ uptr alloc_beg = reinterpret_cast<uptr>(allocated);
+ uptr alloc_end = alloc_beg + needed_size;
+ uptr beg_plus_redzone = alloc_beg + rz_size;
+ uptr user_beg = beg_plus_redzone;
+ if (!IsAligned(user_beg, alignment))
+ user_beg = RoundUpTo(user_beg, alignment);
+ uptr user_end = user_beg + size;
+ CHECK_LE(user_end, alloc_end);
+ uptr chunk_beg = user_beg - kChunkHeaderSize;
+ AsanChunk *m = reinterpret_cast<AsanChunk *>(chunk_beg);
+ m->alloc_type = alloc_type;
+ m->rz_log = rz_log;
+ u32 alloc_tid = t ? t->tid() : 0;
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-vendor
mailing list