svn commit: r295349 - in projects/clang380-import: contrib/compiler-rt/include/sanitizer contrib/compiler-rt/lib/asan contrib/compiler-rt/lib/asan/scripts contrib/compiler-rt/lib/asan/tests contrib...
Dimitry Andric
dim at FreeBSD.org
Sat Feb 6 13:39:24 UTC 2016
Author: dim
Date: Sat Feb 6 13:39:20 2016
New Revision: 295349
URL: https://svnweb.freebsd.org/changeset/base/295349
Log:
Merge compiler-rt release_38 branch r258968.
Note that there is still a problem on amd64, causing SIGBUS in the early
startup of Address Sanitizer. This is being investigated.
Added:
projects/clang380-import/contrib/compiler-rt/lib/builtins/arm/aeabi_cdcmp.S
- copied unchanged from r295050, vendor/compiler-rt/dist/lib/builtins/arm/aeabi_cdcmp.S
projects/clang380-import/contrib/compiler-rt/lib/builtins/arm/aeabi_cdcmpeq_check_nan.c
- copied unchanged from r295050, vendor/compiler-rt/dist/lib/builtins/arm/aeabi_cdcmpeq_check_nan.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/arm/aeabi_cfcmp.S
- copied unchanged from r295050, vendor/compiler-rt/dist/lib/builtins/arm/aeabi_cfcmp.S
projects/clang380-import/contrib/compiler-rt/lib/builtins/arm/aeabi_cfcmpeq_check_nan.c
- copied unchanged from r295050, vendor/compiler-rt/dist/lib/builtins/arm/aeabi_cfcmpeq_check_nan.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/arm/aeabi_drsub.c
- copied unchanged from r295050, vendor/compiler-rt/dist/lib/builtins/arm/aeabi_drsub.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/arm/aeabi_frsub.c
- copied unchanged from r295050, vendor/compiler-rt/dist/lib/builtins/arm/aeabi_frsub.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/divtc3.c
- copied unchanged from r295050, vendor/compiler-rt/dist/lib/builtins/divtc3.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/emutls.c
- copied unchanged from r295050, vendor/compiler-rt/dist/lib/builtins/emutls.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/i386/chkstk2.S
- copied unchanged from r295050, vendor/compiler-rt/dist/lib/builtins/i386/chkstk2.S
projects/clang380-import/contrib/compiler-rt/lib/builtins/x86_64/chkstk2.S
- copied unchanged from r295050, vendor/compiler-rt/dist/lib/builtins/x86_64/chkstk2.S
projects/clang380-import/contrib/compiler-rt/lib/cfi/
- copied from r295050, vendor/compiler-rt/dist/lib/cfi/
projects/clang380-import/contrib/compiler-rt/lib/dfsan/dfsan_platform.h
- copied unchanged from r295050, vendor/compiler-rt/dist/lib/dfsan/dfsan_platform.h
projects/clang380-import/contrib/compiler-rt/lib/profile/InstrProfData.inc
- copied unchanged from r295050, vendor/compiler-rt/dist/lib/profile/InstrProfData.inc
projects/clang380-import/contrib/compiler-rt/lib/profile/InstrProfilingPlatformLinux.c
- copied unchanged from r295050, vendor/compiler-rt/dist/lib/profile/InstrProfilingPlatformLinux.c
projects/clang380-import/contrib/compiler-rt/lib/profile/InstrProfilingPort.h
- copied unchanged from r295050, vendor/compiler-rt/dist/lib/profile/InstrProfilingPort.h
projects/clang380-import/contrib/compiler-rt/lib/profile/InstrProfilingValue.c
- copied unchanged from r295050, vendor/compiler-rt/dist/lib/profile/InstrProfilingValue.c
projects/clang380-import/contrib/compiler-rt/lib/profile/InstrProfilingWriter.c
- copied unchanged from r295050, vendor/compiler-rt/dist/lib/profile/InstrProfilingWriter.c
projects/clang380-import/contrib/compiler-rt/lib/profile/WindowsMMap.c
- copied unchanged from r295050, vendor/compiler-rt/dist/lib/profile/WindowsMMap.c
projects/clang380-import/contrib/compiler-rt/lib/profile/WindowsMMap.h
- copied unchanged from r295050, vendor/compiler-rt/dist/lib/profile/WindowsMMap.h
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common_nolibc.cc
- copied unchanged from r295050, vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_common_nolibc.cc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_malloc_mac.inc
- copied unchanged from r295050, vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_malloc_mac.inc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_syscall_linux_aarch64.inc
- copied unchanged from r295050, vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_syscall_linux_aarch64.inc
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc
- copied unchanged from r295050, vendor/compiler-rt/dist/lib/tsan/rtl/tsan_interceptors_mac.cc
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_libdispatch_mac.cc
- copied unchanged from r295050, vendor/compiler-rt/dist/lib/tsan/rtl/tsan_libdispatch_mac.cc
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_malloc_mac.cc
- copied unchanged from r295050, vendor/compiler-rt/dist/lib/tsan/rtl/tsan_malloc_mac.cc
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_platform_posix.cc
- copied unchanged from r295050, vendor/compiler-rt/dist/lib/tsan/rtl/tsan_platform_posix.cc
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_ppc_regs.h
- copied unchanged from r295050, vendor/compiler-rt/dist/lib/tsan/rtl/tsan_ppc_regs.h
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl_aarch64.S
- copied unchanged from r295050, vendor/compiler-rt/dist/lib/tsan/rtl/tsan_rtl_aarch64.S
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl_ppc64.S
- copied unchanged from r295050, vendor/compiler-rt/dist/lib/tsan/rtl/tsan_rtl_ppc64.S
projects/clang380-import/contrib/compiler-rt/lib/ubsan/ubsan_checks.inc
- copied unchanged from r295050, vendor/compiler-rt/dist/lib/ubsan/ubsan_checks.inc
projects/clang380-import/lib/libclang_rt/asan_dynamic/
projects/clang380-import/lib/libclang_rt/asan_dynamic/Makefile (contents, props changed)
Deleted:
projects/clang380-import/contrib/compiler-rt/lib/asan/scripts/
projects/clang380-import/contrib/compiler-rt/lib/asan/tests/
projects/clang380-import/contrib/compiler-rt/lib/cfi/CMakeLists.txt
projects/clang380-import/contrib/compiler-rt/lib/dfsan/scripts/
projects/clang380-import/contrib/compiler-rt/lib/msan/tests/
projects/clang380-import/contrib/compiler-rt/lib/safestack/CMakeLists.txt
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_process_libcdep.cc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_win.h
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/scripts/
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/tests/
projects/clang380-import/contrib/compiler-rt/lib/tsan/analyze_libtsan.sh
projects/clang380-import/contrib/compiler-rt/lib/tsan/check_analyze.sh
projects/clang380-import/contrib/compiler-rt/lib/tsan/check_cmake.sh
projects/clang380-import/contrib/compiler-rt/lib/tsan/check_memcpy.sh
projects/clang380-import/contrib/compiler-rt/lib/tsan/go/build.bat
projects/clang380-import/contrib/compiler-rt/lib/tsan/go/buildgo.sh
projects/clang380-import/contrib/compiler-rt/lib/tsan/tests/
Modified:
projects/clang380-import/contrib/compiler-rt/include/sanitizer/asan_interface.h
projects/clang380-import/contrib/compiler-rt/include/sanitizer/common_interface_defs.h
projects/clang380-import/contrib/compiler-rt/include/sanitizer/coverage_interface.h
projects/clang380-import/contrib/compiler-rt/include/sanitizer/dfsan_interface.h
projects/clang380-import/contrib/compiler-rt/include/sanitizer/lsan_interface.h
projects/clang380-import/contrib/compiler-rt/include/sanitizer/msan_interface.h
projects/clang380-import/contrib/compiler-rt/lib/asan/README.txt
projects/clang380-import/contrib/compiler-rt/lib/asan/asan_activation.cc
projects/clang380-import/contrib/compiler-rt/lib/asan/asan_allocator.cc
projects/clang380-import/contrib/compiler-rt/lib/asan/asan_allocator.h
projects/clang380-import/contrib/compiler-rt/lib/asan/asan_debugging.cc
projects/clang380-import/contrib/compiler-rt/lib/asan/asan_fake_stack.cc
projects/clang380-import/contrib/compiler-rt/lib/asan/asan_flags.cc
projects/clang380-import/contrib/compiler-rt/lib/asan/asan_flags.inc
projects/clang380-import/contrib/compiler-rt/lib/asan/asan_globals.cc
projects/clang380-import/contrib/compiler-rt/lib/asan/asan_init_version.h
projects/clang380-import/contrib/compiler-rt/lib/asan/asan_interceptors.cc
projects/clang380-import/contrib/compiler-rt/lib/asan/asan_interceptors.h
projects/clang380-import/contrib/compiler-rt/lib/asan/asan_interface_internal.h
projects/clang380-import/contrib/compiler-rt/lib/asan/asan_internal.h
projects/clang380-import/contrib/compiler-rt/lib/asan/asan_linux.cc
projects/clang380-import/contrib/compiler-rt/lib/asan/asan_mac.cc
projects/clang380-import/contrib/compiler-rt/lib/asan/asan_malloc_linux.cc
projects/clang380-import/contrib/compiler-rt/lib/asan/asan_malloc_mac.cc
projects/clang380-import/contrib/compiler-rt/lib/asan/asan_mapping.h
projects/clang380-import/contrib/compiler-rt/lib/asan/asan_new_delete.cc
projects/clang380-import/contrib/compiler-rt/lib/asan/asan_poisoning.cc
projects/clang380-import/contrib/compiler-rt/lib/asan/asan_posix.cc
projects/clang380-import/contrib/compiler-rt/lib/asan/asan_report.cc
projects/clang380-import/contrib/compiler-rt/lib/asan/asan_report.h
projects/clang380-import/contrib/compiler-rt/lib/asan/asan_rtl.cc
projects/clang380-import/contrib/compiler-rt/lib/asan/asan_stack.h
projects/clang380-import/contrib/compiler-rt/lib/asan/asan_thread.cc
projects/clang380-import/contrib/compiler-rt/lib/asan/asan_thread.h
projects/clang380-import/contrib/compiler-rt/lib/asan/asan_win.cc
projects/clang380-import/contrib/compiler-rt/lib/asan/asan_win_dll_thunk.cc
projects/clang380-import/contrib/compiler-rt/lib/asan/asan_win_dynamic_runtime_thunk.cc
projects/clang380-import/contrib/compiler-rt/lib/builtins/README.txt
projects/clang380-import/contrib/compiler-rt/lib/builtins/assembly.h
projects/clang380-import/contrib/compiler-rt/lib/builtins/atomic.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/atomic_flag_clear.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/atomic_flag_clear_explicit.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/atomic_flag_test_and_set.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/atomic_flag_test_and_set_explicit.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/atomic_signal_fence.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/atomic_thread_fence.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/comparedf2.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/comparesf2.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/comparetf2.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/divdc3.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/divsc3.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/divxc3.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/enable_execute_stack.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/extendhfsf2.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/fixunsdfdi.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/fixunssfdi.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/floatdidf.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/floatditf.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/floatsitf.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/floatundidf.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/fp_add_impl.inc
projects/clang380-import/contrib/compiler-rt/lib/builtins/fp_extend.h
projects/clang380-import/contrib/compiler-rt/lib/builtins/fp_extend_impl.inc
projects/clang380-import/contrib/compiler-rt/lib/builtins/fp_fixint_impl.inc
projects/clang380-import/contrib/compiler-rt/lib/builtins/fp_fixuint_impl.inc
projects/clang380-import/contrib/compiler-rt/lib/builtins/fp_lib.h
projects/clang380-import/contrib/compiler-rt/lib/builtins/fp_mul_impl.inc
projects/clang380-import/contrib/compiler-rt/lib/builtins/fp_trunc.h
projects/clang380-import/contrib/compiler-rt/lib/builtins/fp_trunc_impl.inc
projects/clang380-import/contrib/compiler-rt/lib/builtins/gcc_personality_v0.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/i386/chkstk.S
projects/clang380-import/contrib/compiler-rt/lib/builtins/int_lib.h
projects/clang380-import/contrib/compiler-rt/lib/builtins/int_math.h
projects/clang380-import/contrib/compiler-rt/lib/builtins/int_types.h
projects/clang380-import/contrib/compiler-rt/lib/builtins/int_util.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/int_util.h
projects/clang380-import/contrib/compiler-rt/lib/builtins/muldc3.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/mulsc3.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/mulxc3.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/ppc/DD.h
projects/clang380-import/contrib/compiler-rt/lib/builtins/ppc/divtc3.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/ppc/multc3.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/subdf3.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/subsf3.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/truncdfhf2.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/truncsfhf2.c
projects/clang380-import/contrib/compiler-rt/lib/builtins/x86_64/chkstk.S
projects/clang380-import/contrib/compiler-rt/lib/dfsan/dfsan.cc
projects/clang380-import/contrib/compiler-rt/lib/dfsan/dfsan.h
projects/clang380-import/contrib/compiler-rt/lib/dfsan/dfsan_custom.cc
projects/clang380-import/contrib/compiler-rt/lib/dfsan/done_abilist.txt
projects/clang380-import/contrib/compiler-rt/lib/interception/interception_linux.h
projects/clang380-import/contrib/compiler-rt/lib/interception/interception_win.cc
projects/clang380-import/contrib/compiler-rt/lib/interception/interception_win.h
projects/clang380-import/contrib/compiler-rt/lib/lsan/lsan.cc
projects/clang380-import/contrib/compiler-rt/lib/lsan/lsan_allocator.cc
projects/clang380-import/contrib/compiler-rt/lib/lsan/lsan_common.cc
projects/clang380-import/contrib/compiler-rt/lib/lsan/lsan_common.h
projects/clang380-import/contrib/compiler-rt/lib/lsan/lsan_common_linux.cc
projects/clang380-import/contrib/compiler-rt/lib/lsan/lsan_flags.inc
projects/clang380-import/contrib/compiler-rt/lib/lsan/lsan_interceptors.cc
projects/clang380-import/contrib/compiler-rt/lib/lsan/lsan_thread.cc
projects/clang380-import/contrib/compiler-rt/lib/msan/msan.cc
projects/clang380-import/contrib/compiler-rt/lib/msan/msan.h
projects/clang380-import/contrib/compiler-rt/lib/msan/msan_allocator.cc
projects/clang380-import/contrib/compiler-rt/lib/msan/msan_chained_origin_depot.cc
projects/clang380-import/contrib/compiler-rt/lib/msan/msan_flags.inc
projects/clang380-import/contrib/compiler-rt/lib/msan/msan_interceptors.cc
projects/clang380-import/contrib/compiler-rt/lib/msan/msan_interface_internal.h
projects/clang380-import/contrib/compiler-rt/lib/msan/msan_linux.cc
projects/clang380-import/contrib/compiler-rt/lib/msan/msan_new_delete.cc
projects/clang380-import/contrib/compiler-rt/lib/msan/msan_thread.h
projects/clang380-import/contrib/compiler-rt/lib/profile/GCDAProfiling.c
projects/clang380-import/contrib/compiler-rt/lib/profile/InstrProfiling.c
projects/clang380-import/contrib/compiler-rt/lib/profile/InstrProfiling.h
projects/clang380-import/contrib/compiler-rt/lib/profile/InstrProfilingBuffer.c
projects/clang380-import/contrib/compiler-rt/lib/profile/InstrProfilingFile.c
projects/clang380-import/contrib/compiler-rt/lib/profile/InstrProfilingInternal.h
projects/clang380-import/contrib/compiler-rt/lib/profile/InstrProfilingPlatformDarwin.c
projects/clang380-import/contrib/compiler-rt/lib/profile/InstrProfilingPlatformOther.c
projects/clang380-import/contrib/compiler-rt/lib/profile/InstrProfilingRuntime.cc
projects/clang380-import/contrib/compiler-rt/lib/profile/InstrProfilingUtil.c
projects/clang380-import/contrib/compiler-rt/lib/safestack/safestack.cc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_addrhashmap.h
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator.cc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator.h
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_internal.h
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_asm.h
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_atomic.h
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common.cc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common.h
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors_format.inc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common_libcdep.cc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common_syscalls.inc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_coverage_libcdep.cc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_coverage_mapping_libcdep.cc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_deadlock_detector1.cc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_deadlock_detector_interface.h
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_flag_parser.cc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_flag_parser.h
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_flags.cc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_flags.h
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_flags.inc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_interface_internal.h
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_lfstack.h
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_libc.cc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_libc.h
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_libignore.cc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux.h
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_list.h
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_mac.cc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_mac.h
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_persistent_allocator.h
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform.h
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_posix.cc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_posix.h
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_posix_libcdep.cc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_printf.cc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_common.cc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_linux.cc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_mac.cc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_quarantine.h
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_stackdepot.cc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_stackdepot.h
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_stackdepotbase.h
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_stacktrace.cc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_stacktrace.h
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_stacktrace_printer.cc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_suppressions.cc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_suppressions.h
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_internal.h
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_libbacktrace.h
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_libcdep.cc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_mac.cc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_win.cc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_thread_registry.h
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_tls_get_addr.cc
projects/clang380-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_win.cc
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_clock.cc
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_defs.h
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_dense_alloc.h
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_flags.cc
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_flags.inc
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_interceptors.h
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_interface_ann.cc
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_mman.cc
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_mman.h
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_mutex.cc
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_mutex.h
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_new_delete.cc
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_platform.h
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_platform_mac.cc
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_platform_windows.cc
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_report.cc
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl.cc
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl.h
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl_amd64.S
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cc
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl_report.cc
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl_thread.cc
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_stat.cc
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_stat.h
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_suppressions.cc
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_symbolize.cc
projects/clang380-import/contrib/compiler-rt/lib/tsan/rtl/tsan_sync.h
projects/clang380-import/contrib/compiler-rt/lib/ubsan/ubsan_diag.cc
projects/clang380-import/contrib/compiler-rt/lib/ubsan/ubsan_diag.h
projects/clang380-import/contrib/compiler-rt/lib/ubsan/ubsan_flags.cc
projects/clang380-import/contrib/compiler-rt/lib/ubsan/ubsan_flags.inc
projects/clang380-import/contrib/compiler-rt/lib/ubsan/ubsan_handlers.cc
projects/clang380-import/contrib/compiler-rt/lib/ubsan/ubsan_handlers.h
projects/clang380-import/contrib/compiler-rt/lib/ubsan/ubsan_handlers_cxx.cc
projects/clang380-import/lib/libclang_rt/Makefile
projects/clang380-import/lib/libclang_rt/asan/Makefile
projects/clang380-import/lib/libclang_rt/profile/Makefile
projects/clang380-import/lib/libclang_rt/safestack/Makefile
projects/clang380-import/lib/libclang_rt/ubsan_standalone/Makefile
projects/clang380-import/lib/libcompiler_rt/Makefile
Directory Properties:
projects/clang380-import/contrib/compiler-rt/ (props changed)
Modified: projects/clang380-import/contrib/compiler-rt/include/sanitizer/asan_interface.h
==============================================================================
--- projects/clang380-import/contrib/compiler-rt/include/sanitizer/asan_interface.h Sat Feb 6 11:16:15 2016 (r295348)
+++ projects/clang380-import/contrib/compiler-rt/include/sanitizer/asan_interface.h Sat Feb 6 13:39:20 2016 (r295349)
@@ -110,10 +110,6 @@ extern "C" {
void __asan_report_error(void *pc, void *bp, void *sp,
void *addr, int is_write, size_t access_size);
- // Sets the exit code to use when reporting an error.
- // Returns the old value.
- int __asan_set_error_exit_code(int exit_code);
-
// Deprecated. Call __sanitizer_set_death_callback instead.
void __asan_set_death_callback(void (*callback)(void));
Modified: projects/clang380-import/contrib/compiler-rt/include/sanitizer/common_interface_defs.h
==============================================================================
--- projects/clang380-import/contrib/compiler-rt/include/sanitizer/common_interface_defs.h Sat Feb 6 11:16:15 2016 (r295348)
+++ projects/clang380-import/contrib/compiler-rt/include/sanitizer/common_interface_defs.h Sat Feb 6 13:39:20 2016 (r295349)
@@ -105,12 +105,31 @@ extern "C" {
int __sanitizer_verify_contiguous_container(const void *beg, const void *mid,
const void *end);
+ // Similar to __sanitizer_verify_contiguous_container but returns the address
+ // of the first improperly poisoned byte otherwise. Returns null if the area
+ // is poisoned properly.
+ const void *__sanitizer_contiguous_container_find_bad_address(
+ const void *beg, const void *mid, const void *end);
+
// Print the stack trace leading to this call. Useful for debugging user code.
void __sanitizer_print_stack_trace();
// Sets the callback to be called right before death on error.
// Passing 0 will unset the callback.
void __sanitizer_set_death_callback(void (*callback)(void));
+
+ // Interceptor hooks.
+ // Whenever a libc function interceptor is called it checks if the
+ // corresponding weak hook is defined, and it so -- calls it.
+ // The primary use case is data-flow-guided fuzzing, where the fuzzer needs
+ // to know what is being passed to libc functions, e.g. memcmp.
+ // FIXME: implement more hooks.
+ void __sanitizer_weak_hook_memcmp(void *called_pc, const void *s1,
+ const void *s2, size_t n, int result);
+ void __sanitizer_weak_hook_strncmp(void *called_pc, const char *s1,
+ const char *s2, size_t n, int result);
+ void __sanitizer_weak_hook_strcmp(void *called_pc, const char *s1,
+ const char *s2, int result);
#ifdef __cplusplus
} // extern "C"
#endif
Modified: projects/clang380-import/contrib/compiler-rt/include/sanitizer/coverage_interface.h
==============================================================================
--- projects/clang380-import/contrib/compiler-rt/include/sanitizer/coverage_interface.h Sat Feb 6 11:16:15 2016 (r295348)
+++ projects/clang380-import/contrib/compiler-rt/include/sanitizer/coverage_interface.h Sat Feb 6 13:39:20 2016 (r295349)
@@ -27,9 +27,11 @@ extern "C" {
// descriptor. Returns -1 on failure, or if coverage dumping is disabled.
// This is intended for use by sandboxing code.
intptr_t __sanitizer_maybe_open_cov_file(const char *name);
- // Get the number of total unique covered entities (blocks, edges, calls).
+ // Get the number of unique covered blocks (or edges).
// This can be useful for coverage-directed in-process fuzzers.
uintptr_t __sanitizer_get_total_unique_coverage();
+ // Get the number of unique indirect caller-callee pairs.
+ uintptr_t __sanitizer_get_total_unique_caller_callee_pairs();
// Reset the basic-block (edge) coverage to the initial state.
// Useful for in-process fuzzing to start collecting coverage from scratch.
@@ -39,6 +41,13 @@ extern "C" {
// Some of the entries in *data will be zero.
uintptr_t __sanitizer_get_coverage_guards(uintptr_t **data);
+ // Set *data to the growing buffer with covered PCs and return the size
+ // of the buffer. The entries are never zero.
+ // When only unique pcs are collected, the size is equal to
+ // __sanitizer_get_total_unique_coverage.
+ // WARNING: EXPERIMENTAL API.
+ uintptr_t __sanitizer_get_coverage_pc_buffer(uintptr_t **data);
+
// The coverage instrumentation may optionally provide imprecise counters.
// Rather than exposing the counter values to the user we instead map
// the counters to a bitset.
Modified: projects/clang380-import/contrib/compiler-rt/include/sanitizer/dfsan_interface.h
==============================================================================
--- projects/clang380-import/contrib/compiler-rt/include/sanitizer/dfsan_interface.h Sat Feb 6 11:16:15 2016 (r295348)
+++ projects/clang380-import/contrib/compiler-rt/include/sanitizer/dfsan_interface.h Sat Feb 6 13:39:20 2016 (r295349)
@@ -91,16 +91,18 @@ void dfsan_set_write_callback(dfsan_writ
/// <label> <parent label 1> <parent label 2> <label description if any>
void dfsan_dump_labels(int fd);
+/// Interceptor hooks.
/// Whenever a dfsan's custom function is called the corresponding
/// hook is called it non-zero. The hooks should be defined by the user.
/// The primary use case is taint-guided fuzzing, where the fuzzer
/// needs to see the parameters of the function and the labels.
/// FIXME: implement more hooks.
-
-/// memcmp hook.
void dfsan_weak_hook_memcmp(void *caller_pc, const void *s1, const void *s2,
size_t n, dfsan_label s1_label,
dfsan_label s2_label, dfsan_label n_label);
+void dfsan_weak_hook_strncmp(void *caller_pc, const char *s1, const char *s2,
+ size_t n, dfsan_label s1_label,
+ dfsan_label s2_label, dfsan_label n_label);
#ifdef __cplusplus
} // extern "C"
Modified: projects/clang380-import/contrib/compiler-rt/include/sanitizer/lsan_interface.h
==============================================================================
--- projects/clang380-import/contrib/compiler-rt/include/sanitizer/lsan_interface.h Sat Feb 6 11:16:15 2016 (r295348)
+++ projects/clang380-import/contrib/compiler-rt/include/sanitizer/lsan_interface.h Sat Feb 6 13:39:20 2016 (r295349)
@@ -43,7 +43,7 @@ extern "C" {
// Check for leaks now. This function behaves identically to the default
// end-of-process leak check. In particular, it will terminate the process if
- // leaks are found and the exit_code flag is non-zero.
+ // leaks are found and the exitcode runtime flag is non-zero.
// Subsequent calls to this function will have no effect and end-of-process
// leak check will not run. Effectively, end-of-process leak check is moved to
// the time of first invocation of this function.
Modified: projects/clang380-import/contrib/compiler-rt/include/sanitizer/msan_interface.h
==============================================================================
--- projects/clang380-import/contrib/compiler-rt/include/sanitizer/msan_interface.h Sat Feb 6 11:16:15 2016 (r295348)
+++ projects/clang380-import/contrib/compiler-rt/include/sanitizer/msan_interface.h Sat Feb 6 13:39:20 2016 (r295349)
@@ -61,10 +61,6 @@ extern "C" {
* is not. */
void __msan_check_mem_is_initialized(const volatile void *x, size_t size);
- /* Set exit code when error(s) were detected.
- Value of 0 means don't change the program exit code. */
- void __msan_set_exit_code(int exit_code);
-
/* For testing:
__msan_set_expect_umr(1);
... some buggy code ...
@@ -92,14 +88,22 @@ extern "C" {
Memory will be marked uninitialized, with origin at the call site. */
void __msan_allocated_memory(const volatile void* data, size_t size);
+ /* Tell MSan about newly destroyed memory. Mark memory as uninitialized. */
+ void __sanitizer_dtor_callback(const volatile void* data, size_t size);
+
/* This function may be optionally provided by user and should return
a string containing Msan runtime options. See msan_flags.h for details. */
const char* __msan_default_options();
- /* Sets the callback to be called right before death on error.
- Passing 0 will unset the callback. */
+ /* Deprecated. Call __sanitizer_set_death_callback instead. */
void __msan_set_death_callback(void (*callback)(void));
+ /* Update shadow for the application copy of size bytes from src to dst.
+ Src and dst are application addresses. This function does not copy the
+ actual application memory, it only updates shadow and origin for such
+ copy. Source and destination regions can overlap. */
+ void __msan_copy_shadow(const volatile void *dst, const volatile void *src,
+ size_t size);
#ifdef __cplusplus
} // extern "C"
#endif
Modified: projects/clang380-import/contrib/compiler-rt/lib/asan/README.txt
==============================================================================
--- projects/clang380-import/contrib/compiler-rt/lib/asan/README.txt Sat Feb 6 11:16:15 2016 (r295348)
+++ projects/clang380-import/contrib/compiler-rt/lib/asan/README.txt Sat Feb 6 13:39:20 2016 (r295349)
@@ -23,4 +23,4 @@ from the root of your CMake build tree:
make check-asan
For more instructions see:
-http://code.google.com/p/address-sanitizer/wiki/HowToBuild
+https://github.com/google/sanitizers/wiki/AddressSanitizerHowToBuild
Modified: projects/clang380-import/contrib/compiler-rt/lib/asan/asan_activation.cc
==============================================================================
--- projects/clang380-import/contrib/compiler-rt/lib/asan/asan_activation.cc Sat Feb 6 11:16:15 2016 (r295348)
+++ projects/clang380-import/contrib/compiler-rt/lib/asan/asan_activation.cc Sat Feb 6 13:39:20 2016 (r295349)
@@ -38,7 +38,7 @@ static struct AsanDeactivatedFlags {
#undef ASAN_ACTIVATION_FLAG
#undef COMMON_ACTIVATION_FLAG
- RegisterIncludeFlag(parser, cf);
+ RegisterIncludeFlags(parser, cf);
}
void OverrideFromActivationFlags() {
@@ -61,11 +61,6 @@ static struct AsanDeactivatedFlags {
parser.ParseString(env);
}
- // Override from getprop asan.options.
- char buf[100];
- GetExtraActivationFlags(buf, sizeof(buf));
- parser.ParseString(buf);
-
SetVerbosity(cf.verbosity);
if (Verbosity()) ReportUnrecognizedFlags();
@@ -124,6 +119,8 @@ void AsanActivate() {
if (!asan_is_deactivated) return;
VReport(1, "Activating ASan\n");
+ UpdateProcessName();
+
asan_deactivated_flags.OverrideFromActivationFlags();
SetCanPoisonMemory(asan_deactivated_flags.poison_heap);
Modified: projects/clang380-import/contrib/compiler-rt/lib/asan/asan_allocator.cc
==============================================================================
--- projects/clang380-import/contrib/compiler-rt/lib/asan/asan_allocator.cc Sat Feb 6 11:16:15 2016 (r295348)
+++ projects/clang380-import/contrib/compiler-rt/lib/asan/asan_allocator.cc Sat Feb 6 13:39:20 2016 (r295349)
@@ -14,8 +14,8 @@
// with ThreadSanitizer and MemorySanitizer.
//
//===----------------------------------------------------------------------===//
-#include "asan_allocator.h"
+#include "asan_allocator.h"
#include "asan_mapping.h"
#include "asan_poisoning.h"
#include "asan_report.h"
@@ -541,7 +541,7 @@ struct Allocator {
u8 chunk_state = m->chunk_state;
if (chunk_state != CHUNK_ALLOCATED)
ReportInvalidFree(old_ptr, chunk_state, stack);
- CHECK_NE(REAL(memcpy), (void*)0);
+ CHECK_NE(REAL(memcpy), nullptr);
uptr memcpy_size = Min(new_size, m->UsedSize());
// If realloc() races with free(), we may start copying freed memory.
// However, we will report racy double-free later anyway.
@@ -579,7 +579,7 @@ struct Allocator {
// Assumes alloc_beg == allocator.GetBlockBegin(alloc_beg).
AsanChunk *GetAsanChunk(void *alloc_beg) {
- if (!alloc_beg) return 0;
+ if (!alloc_beg) return nullptr;
if (!allocator.FromPrimary(alloc_beg)) {
uptr *meta = reinterpret_cast<uptr *>(allocator.GetMetaData(alloc_beg));
AsanChunk *m = reinterpret_cast<AsanChunk *>(meta[1]);
@@ -619,7 +619,7 @@ struct Allocator {
// The address is in the chunk's left redzone, so maybe it is actually
// a right buffer overflow from the other chunk to the left.
// Search a bit to the left to see if there is another chunk.
- AsanChunk *m2 = 0;
+ AsanChunk *m2 = nullptr;
for (uptr l = 1; l < GetPageSizeCached(); l++) {
m2 = GetAsanChunkByAddr(addr - l);
if (m2 == m1) continue; // Still the same chunk.
@@ -653,7 +653,7 @@ static AsanAllocator &get_allocator() {
}
bool AsanChunkView::IsValid() {
- return chunk_ != 0 && chunk_->chunk_state != CHUNK_AVAILABLE;
+ return chunk_ && chunk_->chunk_state != CHUNK_AVAILABLE;
}
uptr AsanChunkView::Beg() { return chunk_->Beg(); }
uptr AsanChunkView::End() { return Beg() + UsedSize(); }
@@ -723,11 +723,11 @@ void *asan_calloc(uptr nmemb, uptr size,
}
void *asan_realloc(void *p, uptr size, BufferedStackTrace *stack) {
- if (p == 0)
+ if (!p)
return instance.Allocate(size, 8, stack, FROM_MALLOC, true);
if (size == 0) {
instance.Deallocate(p, 0, stack, FROM_MALLOC);
- return 0;
+ return nullptr;
}
return instance.Reallocate(p, size, stack);
}
@@ -755,7 +755,7 @@ int asan_posix_memalign(void **memptr, u
}
uptr asan_malloc_usable_size(void *ptr, uptr pc, uptr bp) {
- if (ptr == 0) return 0;
+ if (!ptr) return 0;
uptr usable_size = instance.AllocationSize(reinterpret_cast<uptr>(ptr));
if (flags()->check_malloc_usable_size && (usable_size == 0)) {
GET_STACK_TRACE_FATAL(pc, bp);
@@ -780,7 +780,7 @@ void AsanSoftRssLimitExceededCallback(bo
instance.allocator.SetRssLimitIsExceeded(exceeded);
}
-} // namespace __asan
+} // namespace __asan
// --- Implementation of LSan-specific functions --- {{{1
namespace __lsan {
@@ -881,7 +881,7 @@ int __sanitizer_get_ownership(const void
}
uptr __sanitizer_get_allocated_size(const void *p) {
- if (p == 0) return 0;
+ if (!p) return 0;
uptr ptr = reinterpret_cast<uptr>(p);
uptr allocated_size = instance.AllocationSize(ptr);
// Die if p is not malloced or if it is already freed.
@@ -904,5 +904,5 @@ SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_
void __sanitizer_free_hook(void *ptr) {
(void)ptr;
}
-} // extern "C"
+} // extern "C"
#endif
Modified: projects/clang380-import/contrib/compiler-rt/lib/asan/asan_allocator.h
==============================================================================
--- projects/clang380-import/contrib/compiler-rt/lib/asan/asan_allocator.h Sat Feb 6 11:16:15 2016 (r295348)
+++ projects/clang380-import/contrib/compiler-rt/lib/asan/asan_allocator.h Sat Feb 6 13:39:20 2016 (r295349)
@@ -114,6 +114,11 @@ struct AsanMapUnmapCallback {
# if defined(__powerpc64__)
const uptr kAllocatorSpace = 0xa0000000000ULL;
const uptr kAllocatorSize = 0x20000000000ULL; // 2T.
+# elif defined(__aarch64__)
+// AArch64/SANITIZIER_CAN_USER_ALLOCATOR64 is only for 42-bit VMA
+// so no need to different values for different VMA.
+const uptr kAllocatorSpace = 0x10000000000ULL;
+const uptr kAllocatorSize = 0x10000000000ULL; // 3T.
# else
const uptr kAllocatorSpace = 0x600000000000ULL;
const uptr kAllocatorSize = 0x40000000000ULL; // 4T.
Modified: projects/clang380-import/contrib/compiler-rt/lib/asan/asan_debugging.cc
==============================================================================
--- projects/clang380-import/contrib/compiler-rt/lib/asan/asan_debugging.cc Sat Feb 6 11:16:15 2016 (r295348)
+++ projects/clang380-import/contrib/compiler-rt/lib/asan/asan_debugging.cc Sat Feb 6 13:39:20 2016 (r295349)
@@ -108,14 +108,14 @@ static uptr AsanGetStack(uptr addr, uptr
return 0;
}
-} // namespace __asan
+} // namespace __asan
using namespace __asan;
SANITIZER_INTERFACE_ATTRIBUTE
const char *__asan_locate_address(uptr addr, char *name, uptr name_size,
uptr *region_address, uptr *region_size) {
- AddressDescription descr = { name, name_size, 0, 0, 0 };
+ AddressDescription descr = { name, name_size, 0, 0, nullptr };
AsanLocateAddress(addr, &descr);
if (region_address) *region_address = descr.region_address;
if (region_size) *region_size = descr.region_size;
Modified: projects/clang380-import/contrib/compiler-rt/lib/asan/asan_fake_stack.cc
==============================================================================
--- projects/clang380-import/contrib/compiler-rt/lib/asan/asan_fake_stack.cc Sat Feb 6 11:16:15 2016 (r295348)
+++ projects/clang380-import/contrib/compiler-rt/lib/asan/asan_fake_stack.cc Sat Feb 6 13:39:20 2016 (r295349)
@@ -11,6 +11,7 @@
//
// FakeStack is used to detect use-after-return bugs.
//===----------------------------------------------------------------------===//
+
#include "asan_allocator.h"
#include "asan_poisoning.h"
#include "asan_thread.h"
@@ -32,7 +33,8 @@ ALWAYS_INLINE void SetShadow(uptr ptr, u
if (class_id <= 6) {
for (uptr i = 0; i < (1U << class_id); i++) {
shadow[i] = magic;
- SanitizerBreakOptimization(0); // Make sure this does not become memset.
+ // Make sure this does not become memset.
+ SanitizerBreakOptimization(nullptr);
}
} else {
// The size class is too big, it's cheaper to poison only size bytes.
@@ -80,7 +82,9 @@ void FakeStack::PoisonAll(u8 magic) {
magic);
}
+#if !defined(_MSC_VER) || defined(__clang__)
ALWAYS_INLINE USED
+#endif
FakeFrame *FakeStack::Allocate(uptr stack_size_log, uptr class_id,
uptr real_stack) {
CHECK_LT(class_id, kNumberOfSizeClasses);
@@ -106,7 +110,7 @@ FakeFrame *FakeStack::Allocate(uptr stac
*SavedFlagPtr(reinterpret_cast<uptr>(res), class_id) = &flags[pos];
return res;
}
- return 0; // We are out of fake stack.
+ return nullptr; // We are out of fake stack.
}
uptr FakeStack::AddrIsInFakeStack(uptr ptr, uptr *frame_beg, uptr *frame_end) {
@@ -183,7 +187,7 @@ void SetTLSFakeStack(FakeStack *fs) { }
static FakeStack *GetFakeStack() {
AsanThread *t = GetCurrentThread();
- if (!t) return 0;
+ if (!t) return nullptr;
return t->fake_stack();
}
@@ -191,7 +195,7 @@ static FakeStack *GetFakeStackFast() {
if (FakeStack *fs = GetTLSFakeStack())
return fs;
if (!__asan_option_detect_stack_use_after_return)
- return 0;
+ return nullptr;
return GetFakeStack();
}
@@ -212,7 +216,7 @@ ALWAYS_INLINE void OnFree(uptr ptr, uptr
SetShadow(ptr, size, class_id, kMagic8);
}
-} // namespace __asan
+} // namespace __asan
// ---------------------- Interface ---------------- {{{1
using namespace __asan;
@@ -245,13 +249,13 @@ SANITIZER_INTERFACE_ATTRIBUTE
void *__asan_addr_is_in_fake_stack(void *fake_stack, void *addr, void **beg,
void **end) {
FakeStack *fs = reinterpret_cast<FakeStack*>(fake_stack);
- if (!fs) return 0;
+ if (!fs) return nullptr;
uptr frame_beg, frame_end;
FakeFrame *frame = reinterpret_cast<FakeFrame *>(fs->AddrIsInFakeStack(
reinterpret_cast<uptr>(addr), &frame_beg, &frame_end));
- if (!frame) return 0;
+ if (!frame) return nullptr;
if (frame->magic != kCurrentStackFrameMagic)
- return 0;
+ return nullptr;
if (beg) *beg = reinterpret_cast<void*>(frame_beg);
if (end) *end = reinterpret_cast<void*>(frame_end);
return reinterpret_cast<void*>(frame->real_stack);
@@ -276,4 +280,4 @@ void __asan_allocas_unpoison(uptr top, u
REAL(memset)(reinterpret_cast<void*>(MemToShadow(top)), 0,
(bottom - top) / SHADOW_GRANULARITY);
}
-} // extern "C"
+} // extern "C"
Modified: projects/clang380-import/contrib/compiler-rt/lib/asan/asan_flags.cc
==============================================================================
--- projects/clang380-import/contrib/compiler-rt/lib/asan/asan_flags.cc Sat Feb 6 11:16:15 2016 (r295348)
+++ projects/clang380-import/contrib/compiler-rt/lib/asan/asan_flags.cc Sat Feb 6 13:39:20 2016 (r295349)
@@ -65,6 +65,7 @@ void InitializeFlags() {
cf.external_symbolizer_path = GetEnv("ASAN_SYMBOLIZER_PATH");
cf.malloc_context_size = kDefaultMallocContextSize;
cf.intercept_tls_get_addr = true;
+ cf.exitcode = 1;
OverrideCommonFlags(cf);
}
Flags *f = flags();
@@ -115,14 +116,6 @@ void InitializeFlags() {
ubsan_parser.ParseString(GetEnv("UBSAN_OPTIONS"));
#endif
- // Let activation flags override current settings. On Android they come
- // from a system property. On other platforms this is no-op.
- if (!flags()->start_deactivated) {
- char buf[100];
- GetExtraActivationFlags(buf, sizeof(buf));
- asan_parser.ParseString(buf);
- }
-
SetVerbosity(common_flags()->verbosity);
// TODO(eugenis): dump all flags at verbosity>=2?
Modified: projects/clang380-import/contrib/compiler-rt/lib/asan/asan_flags.inc
==============================================================================
--- projects/clang380-import/contrib/compiler-rt/lib/asan/asan_flags.inc Sat Feb 6 11:16:15 2016 (r295348)
+++ projects/clang380-import/contrib/compiler-rt/lib/asan/asan_flags.inc Sat Feb 6 13:39:20 2016 (r295349)
@@ -44,9 +44,6 @@ ASAN_FLAG(
"to find more errors.")
ASAN_FLAG(bool, replace_intrin, true,
"If set, uses custom wrappers for memset/memcpy/memmove intinsics.")
-ASAN_FLAG(bool, mac_ignore_invalid_free, false,
- "Ignore invalid free() calls to work around some bugs. Used on OS X "
- "only.")
ASAN_FLAG(bool, detect_stack_use_after_return, false,
"Enables stack-use-after-return checking at run-time.")
ASAN_FLAG(int, min_uar_stack_size_log, 16, // We can't do smaller anyway.
@@ -62,8 +59,6 @@ ASAN_FLAG(
"bytes that will be filled with malloc_fill_byte on malloc.")
ASAN_FLAG(int, malloc_fill_byte, 0xbe,
"Value used to fill the newly allocated memory.")
-ASAN_FLAG(int, exitcode, ASAN_DEFAULT_FAILURE_EXITCODE,
- "Override the program exit status if the tool found an error.")
ASAN_FLAG(bool, allow_user_poisoning, true,
"If set, user may manually mark memory regions as poisoned or "
"unpoisoned.")
@@ -77,10 +72,7 @@ ASAN_FLAG(bool, check_malloc_usable_size
"295.*.")
ASAN_FLAG(bool, unmap_shadow_on_exit, false,
"If set, explicitly unmaps the (huge) shadow at exit.")
-ASAN_FLAG(
- bool, abort_on_error, false,
- "If set, the tool calls abort() instead of _exit() after printing the "
- "error report.")
+ASAN_FLAG(bool, protect_shadow_gap, true, "If set, mprotect the shadow gap")
ASAN_FLAG(bool, print_stats, false,
"Print various statistics after printing an error message or if "
"atexit=1.")
@@ -104,8 +96,8 @@ ASAN_FLAG(bool, poison_array_cookie, tru
"Poison (or not) the array cookie after operator new[].")
// Turn off alloc/dealloc mismatch checker on Mac and Windows for now.
-// https://code.google.com/p/address-sanitizer/issues/detail?id=131
-// https://code.google.com/p/address-sanitizer/issues/detail?id=309
+// https://github.com/google/sanitizers/issues/131
+// https://github.com/google/sanitizers/issues/309
// TODO(glider,timurrrr): Fix known issues and enable this back.
ASAN_FLAG(bool, alloc_dealloc_mismatch,
(SANITIZER_MAC == 0) && (SANITIZER_WINDOWS == 0),
@@ -113,9 +105,6 @@ ASAN_FLAG(bool, alloc_dealloc_mismatch,
ASAN_FLAG(bool, new_delete_type_mismatch, true,
"Report errors on mismatch betwen size of new and delete.")
-ASAN_FLAG(bool, strict_memcmp, true,
- "If true, assume that memcmp(p1, p2, n) always reads n bytes before "
- "comparing p1 and p2.")
ASAN_FLAG(
bool, strict_init_order, false,
"If true, assume that dynamic initializers can never access globals from "
@@ -134,8 +123,8 @@ ASAN_FLAG(
"The bigger the value the harder we try.")
ASAN_FLAG(
bool, detect_container_overflow, true,
- "If true, honor the container overflow annotations. "
- "See https://code.google.com/p/address-sanitizer/wiki/ContainerOverflow")
+ "If true, honor the container overflow annotations. See "
+ "https://github.com/google/sanitizers/wiki/AddressSanitizerContainerOverflow")
ASAN_FLAG(int, detect_odr_violation, 2,
"If >=2, detect violation of One-Definition-Rule (ODR); "
"If ==1, detect ODR-violation only if the two variables "
@@ -143,3 +132,6 @@ ASAN_FLAG(int, detect_odr_violation, 2,
ASAN_FLAG(bool, dump_instruction_bytes, false,
"If true, dump 16 bytes starting at the instruction that caused SEGV")
ASAN_FLAG(const char *, suppressions, "", "Suppressions file name.")
+ASAN_FLAG(bool, halt_on_error, true,
+ "Crash the program after printing the first error report "
+ "(WARNING: USE AT YOUR OWN RISK!)")
Modified: projects/clang380-import/contrib/compiler-rt/lib/asan/asan_globals.cc
==============================================================================
--- projects/clang380-import/contrib/compiler-rt/lib/asan/asan_globals.cc Sat Feb 6 11:16:15 2016 (r295348)
+++ projects/clang380-import/contrib/compiler-rt/lib/asan/asan_globals.cc Sat Feb 6 13:39:20 2016 (r295349)
@@ -11,6 +11,7 @@
//
// Handle globals.
//===----------------------------------------------------------------------===//
+
#include "asan_interceptors.h"
#include "asan_internal.h"
#include "asan_mapping.h"
@@ -167,7 +168,7 @@ static void RegisterGlobal(const Global
l->next = list_of_all_globals;
list_of_all_globals = l;
if (g->has_dynamic_init) {
- if (dynamic_init_globals == 0) {
+ if (!dynamic_init_globals) {
dynamic_init_globals = new(allocator_for_globals)
VectorOfGlobals(kDynamicInitGlobalsInitialCapacity);
}
@@ -206,7 +207,7 @@ void StopInitOrderChecking() {
}
}
-} // namespace __asan
+} // namespace __asan
// ---------------------- Interface ---------------- {{{1
using namespace __asan; // NOLINT
Modified: projects/clang380-import/contrib/compiler-rt/lib/asan/asan_init_version.h
==============================================================================
--- projects/clang380-import/contrib/compiler-rt/lib/asan/asan_init_version.h Sat Feb 6 11:16:15 2016 (r295348)
+++ projects/clang380-import/contrib/compiler-rt/lib/asan/asan_init_version.h Sat Feb 6 13:39:20 2016 (r295349)
@@ -27,8 +27,8 @@ extern "C" {
// v3=>v4: added '__asan_global_source_location' to __asan_global.
// v4=>v5: changed the semantics and format of __asan_stack_malloc_ and
// __asan_stack_free_ functions.
- #define __asan_init __asan_init_v5
- #define __asan_init_name "__asan_init_v5"
+ // v5=>v6: changed the name of the version check symbol
+ #define __asan_version_mismatch_check __asan_version_mismatch_check_v6
}
#endif // ASAN_INIT_VERSION_H
Modified: projects/clang380-import/contrib/compiler-rt/lib/asan/asan_interceptors.cc
==============================================================================
--- projects/clang380-import/contrib/compiler-rt/lib/asan/asan_interceptors.cc Sat Feb 6 11:16:15 2016 (r295348)
+++ projects/clang380-import/contrib/compiler-rt/lib/asan/asan_interceptors.cc Sat Feb 6 13:39:20 2016 (r295349)
@@ -11,8 +11,8 @@
//
// Intercept various libc functions.
//===----------------------------------------------------------------------===//
-#include "asan_interceptors.h"
+#include "asan_interceptors.h"
#include "asan_allocator.h"
#include "asan_internal.h"
#include "asan_mapping.h"
@@ -27,6 +27,12 @@
#include "sanitizer_common/sanitizer_posix.h"
#endif
+#if defined(__i386) && SANITIZER_LINUX
+#define ASAN_PTHREAD_CREATE_VERSION "GLIBC_2.1"
+#elif defined(__mips__) && SANITIZER_LINUX
+#define ASAN_PTHREAD_CREATE_VERSION "GLIBC_2.2"
+#endif
+
namespace __asan {
// Return true if we can quickly decide that the region is unpoisoned.
@@ -69,7 +75,7 @@ struct AsanInterceptorContext {
} \
if (!suppressed) { \
GET_CURRENT_PC_BP_SP; \
- __asan_report_error(pc, bp, sp, __bad, isWrite, __size, 0); \
+ ReportGenericError(pc, bp, sp, __bad, isWrite, __size, 0, false);\
} \
} \
} while (0)
@@ -105,7 +111,7 @@ static inline bool RangesOverlap(const c
static inline uptr MaybeRealStrnlen(const char *s, uptr maxlen) {
#if ASAN_INTERCEPT_STRNLEN
- if (REAL(strnlen) != 0) {
+ if (REAL(strnlen)) {
return REAL(strnlen)(s, maxlen);
}
#endif
@@ -123,7 +129,7 @@ int OnExit() {
return 0;
}
-} // namespace __asan
+} // namespace __asan
// ---------------------- Wrappers ---------------- {{{1
using namespace __asan; // NOLINT
@@ -172,7 +178,7 @@ DECLARE_REAL_AND_INTERCEPTOR(void, free,
} while (false)
#define COMMON_INTERCEPTOR_BLOCK_REAL(name) REAL(name)
// Strict init-order checking is dlopen-hostile:
-// https://code.google.com/p/address-sanitizer/issues/detail?id=178
+// https://github.com/google/sanitizers/issues/178
#define COMMON_INTERCEPTOR_ON_DLOPEN(filename, flag) \
if (flags()->strict_init_order) { \
StopInitOrderChecking(); \
@@ -216,7 +222,7 @@ static thread_return_t THREAD_CALLING_CO
ThreadStartParam *param = reinterpret_cast<ThreadStartParam *>(arg);
AsanThread *t = nullptr;
while ((t = reinterpret_cast<AsanThread *>(
- atomic_load(¶m->t, memory_order_acquire))) == 0)
+ atomic_load(¶m->t, memory_order_acquire))) == nullptr)
internal_sched_yield();
SetCurrentThread(t);
return t->ThreadStart(GetTid(), ¶m->is_registered);
@@ -231,7 +237,7 @@ INTERCEPTOR(int, pthread_create, void *t
StopInitOrderChecking();
GET_STACK_TRACE_THREAD;
int detached = 0;
- if (attr != 0)
+ if (attr)
REAL(pthread_attr_getdetachstate)(attr, &detached);
ThreadStartParam param;
atomic_store(¶m.t, 0, memory_order_relaxed);
@@ -270,14 +276,14 @@ INTERCEPTOR(void*, bsd_signal, int signu
}
return 0;
}
-#else
+#endif
+
INTERCEPTOR(void*, signal, int signum, void *handler) {
if (!IsDeadlySignal(signum) || common_flags()->allow_user_segv_handler) {
return REAL(signal)(signum, handler);
}
- return 0;
+ return nullptr;
}
-#endif
INTERCEPTOR(int, sigaction, int signum, const struct sigaction *act,
struct sigaction *oldact) {
@@ -292,7 +298,7 @@ int real_sigaction(int signum, const voi
return REAL(sigaction)(signum, (const struct sigaction *)act,
(struct sigaction *)oldact);
}
-} // namespace __sanitizer
+} // namespace __sanitizer
#elif SANITIZER_POSIX
// We need to have defined REAL(sigaction) on posix systems.
@@ -363,40 +369,6 @@ INTERCEPTOR(void, __cxa_throw, void *a,
}
#endif
-static inline int CharCmp(unsigned char c1, unsigned char c2) {
- return (c1 == c2) ? 0 : (c1 < c2) ? -1 : 1;
-}
-
-INTERCEPTOR(int, memcmp, const void *a1, const void *a2, uptr size) {
- void *ctx;
- ASAN_INTERCEPTOR_ENTER(ctx, memcmp);
- if (UNLIKELY(!asan_inited)) return internal_memcmp(a1, a2, size);
- ENSURE_ASAN_INITED();
- if (flags()->replace_intrin) {
- if (flags()->strict_memcmp) {
- // Check the entire regions even if the first bytes of the buffers are
- // different.
- ASAN_READ_RANGE(ctx, a1, size);
- ASAN_READ_RANGE(ctx, a2, size);
- // Fallthrough to REAL(memcmp) below.
- } else {
- unsigned char c1 = 0, c2 = 0;
- const unsigned char *s1 = (const unsigned char*)a1;
- const unsigned char *s2 = (const unsigned char*)a2;
- uptr i;
- for (i = 0; i < size; i++) {
- c1 = s1[i];
- c2 = s2[i];
- if (c1 != c2) break;
- }
- ASAN_READ_RANGE(ctx, s1, Min(i + 1, size));
- ASAN_READ_RANGE(ctx, s2, Min(i + 1, size));
- return CharCmp(c1, c2);
- }
- }
- return REAL(memcmp(a1, a2, size));
-}
-
// memcpy is called during __asan_init() from the internals of printf(...).
// We do not treat memcpy with to==from as a bug.
// See http://llvm.org/bugs/show_bug.cgi?id=11763.
@@ -743,7 +715,7 @@ INTERCEPTOR(int, __cxa_atexit, void (*fu
#endif
ENSURE_ASAN_INITED();
int res = REAL(__cxa_atexit)(func, arg, dso_handle);
- REAL(__cxa_atexit)(AtCxaAtexit, 0, 0);
+ REAL(__cxa_atexit)(AtCxaAtexit, nullptr, nullptr);
return res;
}
#endif // ASAN_INTERCEPT___CXA_ATEXIT
@@ -767,7 +739,6 @@ void InitializeAsanInterceptors() {
InitializeCommonInterceptors();
// Intercept mem* functions.
- ASAN_INTERCEPT_FUNC(memcmp);
ASAN_INTERCEPT_FUNC(memmove);
ASAN_INTERCEPT_FUNC(memset);
if (PLATFORM_HAS_DIFFERENT_MEMCPY_AND_MEMMOVE) {
@@ -806,9 +777,8 @@ void InitializeAsanInterceptors() {
ASAN_INTERCEPT_FUNC(sigaction);
#if SANITIZER_ANDROID
ASAN_INTERCEPT_FUNC(bsd_signal);
-#else
- ASAN_INTERCEPT_FUNC(signal);
#endif
+ ASAN_INTERCEPT_FUNC(signal);
#endif
#if ASAN_INTERCEPT_SWAPCONTEXT
ASAN_INTERCEPT_FUNC(swapcontext);
@@ -827,7 +797,11 @@ void InitializeAsanInterceptors() {
// Intercept threading-related functions
#if ASAN_INTERCEPT_PTHREAD_CREATE
+#if defined(ASAN_PTHREAD_CREATE_VERSION)
+ ASAN_INTERCEPT_FUNC_VER(pthread_create, ASAN_PTHREAD_CREATE_VERSION);
+#else
ASAN_INTERCEPT_FUNC(pthread_create);
+#endif
ASAN_INTERCEPT_FUNC(pthread_join);
#endif
@@ -845,4 +819,4 @@ void InitializeAsanInterceptors() {
VReport(1, "AddressSanitizer: libc interceptors initialized\n");
}
-} // namespace __asan
+} // namespace __asan
Modified: projects/clang380-import/contrib/compiler-rt/lib/asan/asan_interceptors.h
==============================================================================
--- projects/clang380-import/contrib/compiler-rt/lib/asan/asan_interceptors.h Sat Feb 6 11:16:15 2016 (r295348)
+++ projects/clang380-import/contrib/compiler-rt/lib/asan/asan_interceptors.h Sat Feb 6 13:39:20 2016 (r295349)
@@ -98,6 +98,12 @@ DECLARE_REAL(int, sigaction, int signum,
if ((!INTERCEPT_FUNCTION(name) || !REAL(name))) \
VReport(1, "AddressSanitizer: failed to intercept '" #name "'\n"); \
} while (0)
+#define ASAN_INTERCEPT_FUNC_VER(name, ver) \
+ do { \
+ if ((!INTERCEPT_FUNCTION_VER(name, ver) || !REAL(name))) \
+ VReport( \
+ 1, "AddressSanitizer: failed to intercept '" #name "@@" #ver "'\n"); \
+ } while (0)
#else
// OS X interceptors don't need to be initialized with INTERCEPT_FUNCTION.
#define ASAN_INTERCEPT_FUNC(name)
Modified: projects/clang380-import/contrib/compiler-rt/lib/asan/asan_interface_internal.h
==============================================================================
--- projects/clang380-import/contrib/compiler-rt/lib/asan/asan_interface_internal.h Sat Feb 6 11:16:15 2016 (r295348)
+++ projects/clang380-import/contrib/compiler-rt/lib/asan/asan_interface_internal.h Sat Feb 6 13:39:20 2016 (r295349)
@@ -27,10 +27,14 @@ using __sanitizer::uptr;
extern "C" {
// This function should be called at the very beginning of the process,
// before any instrumented code is executed and before any call to malloc.
- // Please note that __asan_init is a macro that is replaced with
- // __asan_init_vXXX at compile-time.
SANITIZER_INTERFACE_ATTRIBUTE void __asan_init();
+ // This function exists purely to get a linker/loader error when using
+ // incompatible versions of instrumentation and runtime library. Please note
+ // that __asan_version_mismatch_check is a macro that is replaced with
+ // __asan_version_mismatch_check_vXXX at compile-time.
+ SANITIZER_INTERFACE_ATTRIBUTE void __asan_version_mismatch_check();
+
// This structure is used to describe the source location of a place where
// global was defined.
struct __asan_global_source_location {
@@ -131,8 +135,6 @@ extern "C" {
uptr addr, int is_write, uptr access_size, u32 exp);
SANITIZER_INTERFACE_ATTRIBUTE
- int __asan_set_error_exit_code(int exit_code);
- SANITIZER_INTERFACE_ATTRIBUTE
void __asan_set_death_callback(void (*callback)(void));
SANITIZER_INTERFACE_ATTRIBUTE
void __asan_set_error_report_callback(void (*callback)(const char*));
@@ -165,6 +167,19 @@ extern "C" {
SANITIZER_INTERFACE_ATTRIBUTE void __asan_loadN(uptr p, uptr size);
SANITIZER_INTERFACE_ATTRIBUTE void __asan_storeN(uptr p, uptr size);
+ SANITIZER_INTERFACE_ATTRIBUTE void __asan_load1_noabort(uptr p);
+ SANITIZER_INTERFACE_ATTRIBUTE void __asan_load2_noabort(uptr p);
+ SANITIZER_INTERFACE_ATTRIBUTE void __asan_load4_noabort(uptr p);
+ SANITIZER_INTERFACE_ATTRIBUTE void __asan_load8_noabort(uptr p);
+ SANITIZER_INTERFACE_ATTRIBUTE void __asan_load16_noabort(uptr p);
+ SANITIZER_INTERFACE_ATTRIBUTE void __asan_store1_noabort(uptr p);
+ SANITIZER_INTERFACE_ATTRIBUTE void __asan_store2_noabort(uptr p);
+ SANITIZER_INTERFACE_ATTRIBUTE void __asan_store4_noabort(uptr p);
+ SANITIZER_INTERFACE_ATTRIBUTE void __asan_store8_noabort(uptr p);
+ SANITIZER_INTERFACE_ATTRIBUTE void __asan_store16_noabort(uptr p);
+ SANITIZER_INTERFACE_ATTRIBUTE void __asan_loadN_noabort(uptr p, uptr size);
+ SANITIZER_INTERFACE_ATTRIBUTE void __asan_storeN_noabort(uptr p, uptr size);
+
SANITIZER_INTERFACE_ATTRIBUTE void __asan_exp_load1(uptr p, u32 exp);
SANITIZER_INTERFACE_ATTRIBUTE void __asan_exp_load2(uptr p, u32 exp);
SANITIZER_INTERFACE_ATTRIBUTE void __asan_exp_load4(uptr p, u32 exp);
Modified: projects/clang380-import/contrib/compiler-rt/lib/asan/asan_internal.h
==============================================================================
--- projects/clang380-import/contrib/compiler-rt/lib/asan/asan_internal.h Sat Feb 6 11:16:15 2016 (r295348)
+++ projects/clang380-import/contrib/compiler-rt/lib/asan/asan_internal.h Sat Feb 6 13:39:20 2016 (r295349)
@@ -21,8 +21,6 @@
#include "sanitizer_common/sanitizer_stacktrace.h"
#include "sanitizer_common/sanitizer_libc.h"
-#define ASAN_DEFAULT_FAILURE_EXITCODE 1
-
#if __has_feature(address_sanitizer) || defined(__SANITIZE_ADDRESS__)
# error "The AddressSanitizer run-time should not be"
" instrumented by AddressSanitizer"
@@ -75,12 +73,9 @@ void *AsanDoesNotSupportStaticLinkage();
void AsanCheckDynamicRTPrereqs();
void AsanCheckIncompatibleRT();
-void AsanOnSIGSEGV(int, void *siginfo, void *context);
+void AsanOnDeadlySignal(int, void *siginfo, void *context);
-void DisableReexec();
-void MaybeReexec();
void ReadContextStack(void *context, uptr *stack, uptr *ssize);
-void AsanPlatformThreadInit();
void StopInitOrderChecking();
// Wrapper for TLS/TSD.
Modified: projects/clang380-import/contrib/compiler-rt/lib/asan/asan_linux.cc
==============================================================================
--- projects/clang380-import/contrib/compiler-rt/lib/asan/asan_linux.cc Sat Feb 6 11:16:15 2016 (r295348)
+++ projects/clang380-import/contrib/compiler-rt/lib/asan/asan_linux.cc Sat Feb 6 13:39:20 2016 (r295349)
@@ -70,14 +70,6 @@ namespace __asan {
void InitializePlatformInterceptors() {}
-void DisableReexec() {
- // No need to re-exec on Linux.
-}
-
-void MaybeReexec() {
- // No need to re-exec on Linux.
-}
-
void *AsanDoesNotSupportStaticLinkage() {
// This will fail to link with -static.
return &_DYNAMIC; // defined in link.h
@@ -117,7 +109,7 @@ void AsanCheckDynamicRTPrereqs() {
return;
// Ensure that dynamic RT is the first DSO in the list
- const char *first_dso_name = 0;
+ const char *first_dso_name = nullptr;
dl_iterate_phdr(FindFirstDSOCallback, &first_dso_name);
if (first_dso_name && !IsDynamicRTName(first_dso_name)) {
Report("ASan runtime does not come first in initial library list; "
@@ -142,7 +134,8 @@ void AsanCheckIncompatibleRT() {
// system libraries, causing crashes later in ASan initialization.
MemoryMappingLayout proc_maps(/*cache_enabled*/true);
char filename[128];
- while (proc_maps.Next(0, 0, 0, filename, sizeof(filename), 0)) {
+ while (proc_maps.Next(nullptr, nullptr, nullptr, filename,
+ sizeof(filename), nullptr)) {
if (IsDynamicRTName(filename)) {
Report("Your application is linked against "
"incompatible ASan runtimes.\n");
@@ -155,11 +148,7 @@ void AsanCheckIncompatibleRT() {
}
}
}
-#endif // SANITIZER_ANDROID
-
-void AsanPlatformThreadInit() {
- // Nothing here for now.
-}
+#endif // SANITIZER_ANDROID
#if !SANITIZER_ANDROID
void ReadContextStack(void *context, uptr *stack, uptr *ssize) {
@@ -177,6 +166,6 @@ void *AsanDlSymNext(const char *sym) {
return dlsym(RTLD_NEXT, sym);
}
-} // namespace __asan
+} // namespace __asan
-#endif // SANITIZER_FREEBSD || SANITIZER_LINUX
+#endif // SANITIZER_FREEBSD || SANITIZER_LINUX
Modified: projects/clang380-import/contrib/compiler-rt/lib/asan/asan_mac.cc
==============================================================================
--- projects/clang380-import/contrib/compiler-rt/lib/asan/asan_mac.cc Sat Feb 6 11:16:15 2016 (r295348)
+++ projects/clang380-import/contrib/compiler-rt/lib/asan/asan_mac.cc Sat Feb 6 13:39:20 2016 (r295349)
@@ -24,26 +24,17 @@
#include "sanitizer_common/sanitizer_libc.h"
#include "sanitizer_common/sanitizer_mac.h"
-#if !SANITIZER_IOS
-#include <crt_externs.h> // for _NSGetArgv and _NSGetEnviron
-#else
-extern "C" {
- extern char ***_NSGetArgv(void);
-}
-#endif
-
-#include <dlfcn.h> // for dladdr()
+#include <fcntl.h>
+#include <libkern/OSAtomic.h>
#include <mach-o/dyld.h>
#include <mach-o/loader.h>
+#include <pthread.h>
+#include <stdlib.h> // for free()
#include <sys/mman.h>
#include <sys/resource.h>
#include <sys/sysctl.h>
#include <sys/ucontext.h>
-#include <fcntl.h>
-#include <pthread.h>
-#include <stdlib.h> // for free()
#include <unistd.h>
-#include <libkern/OSAtomic.h>
namespace __asan {
@@ -52,187 +43,12 @@ void InitializePlatformInterceptors() {}
bool PlatformHasDifferentMemcpyAndMemmove() {
// On OS X 10.7 memcpy() and memmove() are both resolved
// into memmove$VARIANT$sse42.
- // See also http://code.google.com/p/address-sanitizer/issues/detail?id=34.
+ // See also https://github.com/google/sanitizers/issues/34.
// TODO(glider): need to check dynamically that memcpy() and memmove() are
// actually the same function.
return GetMacosVersion() == MACOS_VERSION_SNOW_LEOPARD;
}
-extern "C"
-void __asan_init();
-
-static const char kDyldInsertLibraries[] = "DYLD_INSERT_LIBRARIES";
-LowLevelAllocator allocator_for_env;
-
-// Change the value of the env var |name|, leaking the original value.
-// If |name_value| is NULL, the variable is deleted from the environment,
-// otherwise the corresponding "NAME=value" string is replaced with
-// |name_value|.
-void LeakyResetEnv(const char *name, const char *name_value) {
- char **env = GetEnviron();
- uptr name_len = internal_strlen(name);
- while (*env != 0) {
- uptr len = internal_strlen(*env);
- if (len > name_len) {
- const char *p = *env;
- if (!internal_memcmp(p, name, name_len) && p[name_len] == '=') {
- // Match.
- if (name_value) {
- // Replace the old value with the new one.
- *env = const_cast<char*>(name_value);
- } else {
- // Shift the subsequent pointers back.
- char **del = env;
- do {
- del[0] = del[1];
- } while (*del++);
- }
- }
- }
- env++;
- }
-}
-
-static bool reexec_disabled = false;
-
-void DisableReexec() {
- reexec_disabled = true;
-}
-
-bool DyldNeedsEnvVariable() {
-// If running on OS X 10.11+ or iOS 9.0+, dyld will interpose even if
-// DYLD_INSERT_LIBRARIES is not set.
-
-#if SANITIZER_IOSSIM
- // GetMacosVersion will not work for the simulator, whose kernel version
- // is tied to the host. Use a weak linking hack for the simulator.
- // This API was introduced in the same version of the OS as the dyld
- // optimization.
-
- // Check for presence of a symbol that is available on OS X 10.11+, iOS 9.0+.
- return (dlsym(RTLD_NEXT, "mach_memory_info") == nullptr);
-#else
- return (GetMacosVersion() <= MACOS_VERSION_YOSEMITE);
-#endif
-}
-
-void MaybeReexec() {
- if (reexec_disabled) return;
-
- // Make sure the dynamic ASan runtime library is preloaded so that the
- // wrappers work. If it is not, set DYLD_INSERT_LIBRARIES and re-exec
- // ourselves.
- Dl_info info;
- CHECK(dladdr((void*)((uptr)__asan_init), &info));
- char *dyld_insert_libraries =
- const_cast<char*>(GetEnv(kDyldInsertLibraries));
- uptr old_env_len = dyld_insert_libraries ?
- internal_strlen(dyld_insert_libraries) : 0;
- uptr fname_len = internal_strlen(info.dli_fname);
- const char *dylib_name = StripModuleName(info.dli_fname);
- uptr dylib_name_len = internal_strlen(dylib_name);
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-projects
mailing list