llvm-project/compiler-rt/lib/asan
Alexey Samsonov ed3d347e25 [sanitizer] Add strlen to the common interceptors
Summary:
Adds strlen to the common interceptors, under a new common flag
intercept_strlen.  This provides better sharing of interception code among
sanitizers and cleans up the inconsistent type declarations of the
previously duplicated interceptors.

Removes the now-duplicate strlen interceptor from asan, msan, and tsan.
The entry check semantics are normalized now for msan and asan, whose
private strlen interceptors contained multiple layers of checks that
included impossible-to-reach code.  The new semantics are identical to the
old: bypass interception if in the middle of init or if both on Mac and not
initialized; else, call the init routine and proceed.

Patch by Derek Bruening!

Reviewers: samsonov, vitalybuka

Subscribers: llvm-commits, kcc, zhaoqin

Differential Revision: http://reviews.llvm.org/D18020

llvm-svn: 263177
2016-03-11 00:45:49 +00:00
..
scripts For the asan_symbolize.py script, use addr2line as the default system 2015-12-29 21:36:34 +00:00
tests [tests] Portability fixup for r261713. 2016-02-24 01:28:51 +00:00
.clang-format Tell clang-format that (most) sanitizers are written using Google style guide. 2015-11-19 22:11:10 +00:00
CMakeLists.txt [cmake] Address Samsonov's post-commit review of r262723 2016-03-05 10:01:04 +00:00
README.txt [ASan] Fix the links to bugs and wikipages. 2015-12-04 17:37:40 +00:00
asan.syms.extra [ASan] ASan can be combined with LSan and UBSan, so export symbol from them as well. 2013-10-23 15:36:22 +00:00
asan_activation.cc [asan] Remove the use of system properties on Android. 2015-12-04 22:28:27 +00:00
asan_activation.h [ASan] Change activation strategy. 2014-12-19 20:35:53 +00:00
asan_activation_flags.inc [asan] Allow changing verbosity in activation flags. 2015-01-20 13:21:20 +00:00
asan_allocator.cc [asan] Fix internal CHECK failure on double free in recovery mode. 2016-02-02 07:32:24 +00:00
asan_allocator.h [asan] Enable ASan for AArch64/42-bit VMA 2015-08-20 18:49:40 +00:00
asan_blacklist.txt Ignore stack-buffer-overflow in std::_Find_elem<*> / std::num_get<...>::_Getifld 2014-05-07 14:40:23 +00:00
asan_debugging.cc [compiler-rt] Apply modernize-use-nullptr fixes in sanitizers 2015-10-01 00:22:21 +00:00
asan_fake_stack.cc [compiler-rt] Fix build (again) by wrapping lines to 80 chars (NFC) 2015-10-01 02:15:40 +00:00
asan_fake_stack.h Revert "Apply modernize-use-default to compiler-rt." 2015-10-30 18:52:31 +00:00
asan_flags.cc [sanitizer] Add strlen to the common interceptors 2016-03-11 00:45:49 +00:00
asan_flags.h [Sanitizer] Change InitializeFlags() signatures. NFC. 2015-02-12 00:36:42 +00:00
asan_flags.inc Fix typo in asan_flags. 2016-02-08 21:10:00 +00:00
asan_globals.cc [asan] Introduce new approach for ODR violation detection based on odr indicator symbols. 2016-02-08 08:39:59 +00:00
asan_init_version.h [asan] Introduce new approach for ODR violation detection based on odr indicator symbols. 2016-02-08 08:39:59 +00:00
asan_interceptors.cc [sanitizer] Add strlen to the common interceptors 2016-03-11 00:45:49 +00:00
asan_interceptors.h [asan] Versioned interceptor for pthread_create. 2015-09-22 21:34:44 +00:00
asan_interface_internal.h [asan] Introduce new approach for ODR violation detection based on odr indicator symbols. 2016-02-08 08:39:59 +00:00
asan_internal.h [asan] Add iOS support. 2016-02-02 02:01:17 +00:00
asan_linux.cc [tsan] Use re-exec method to enable interceptors on older versions of OS X 2015-12-03 10:39:43 +00:00
asan_lock.h asan/tsan: move blocking mutex from asan to sanitizer_common 2013-01-14 07:51:39 +00:00
asan_mac.cc [asan] Add iOS support. 2016-02-02 02:01:17 +00:00
asan_malloc_linux.cc [Sanitizer] Pass proper values to DTLS_on_libc_memalign. 2016-01-14 00:04:37 +00:00
asan_malloc_mac.cc [ASan] Retire mac_ignore_invalid_free, remove some dead code. 2015-12-04 16:17:55 +00:00
asan_malloc_win.cc [msan] Remove MSanDR and supporting code. 2014-11-18 10:33:15 +00:00
asan_mapping.h [asan] Remove redundant elif 2016-02-02 22:05:47 +00:00
asan_new_delete.cc [ASan] Fix the links to bugs and wikipages. 2015-12-04 17:37:40 +00:00
asan_poisoning.cc [ASan] Fix the links to bugs and wikipages. 2015-12-04 17:37:40 +00:00
asan_poisoning.h Add descriptive names to sanitizer entries in /proc/self/maps. Helps debugging. 2015-05-29 22:31:28 +00:00
asan_posix.cc [asan] add option: handle_sigill 2015-12-15 00:33:45 +00:00
asan_preinit.cc [asan] Revert r221882. 2014-11-14 13:02:28 +00:00
asan_report.cc sanitizer: Fix endianness checks for gcc 2016-03-09 23:39:40 +00:00
asan_report.h [ASan] Retire mac_ignore_invalid_free, remove some dead code. 2015-12-04 16:17:55 +00:00
asan_rtl.cc [WinASan] Fix page size and mmap granularity confusion 2016-02-18 17:58:22 +00:00
asan_scariness_score.h [asan] fix the Windows build (MSVC says: cannot specify explicit initializer for arrays) 2016-02-08 19:33:36 +00:00
asan_stack.cc [ASan] Allow to atomically modify malloc_context_size at runtime. 2014-12-16 01:23:03 +00:00
asan_stack.h [compiler-rt] Apply modernize-use-nullptr fixes in sanitizers 2015-10-01 00:22:21 +00:00
asan_stats.cc [ASan] Clean up obsolete stats. 2015-06-26 19:18:02 +00:00
asan_stats.h [ASan] Clean up obsolete stats. 2015-06-26 19:18:02 +00:00
asan_suppressions.cc [sanitizer] use simpler symbolizer interface (GetModuleNameForPc) where applicable 2015-03-05 01:30:36 +00:00
asan_suppressions.h [asan] add suppressions for odr violations 2015-02-25 00:49:12 +00:00
asan_thread.cc [LSan] Use __tls_get_addr interceptor to keep track of dynamic TLS. 2016-01-14 18:50:09 +00:00
asan_thread.h [LSan] Use __tls_get_addr interceptor to keep track of dynamic TLS. 2016-01-14 18:50:09 +00:00
asan_win.cc [tsan] Use re-exec method to enable interceptors on older versions of OS X 2015-12-03 10:39:43 +00:00
asan_win_dll_thunk.cc [sancov] adding internal function 2016-01-05 02:09:54 +00:00
asan_win_dynamic_runtime_thunk.cc asan_win_dynamic_runtime_thunk.cc: declare atexit 2015-12-09 21:43:03 +00:00

README.txt

AddressSanitizer RT
================================
This directory contains sources of the AddressSanitizer (ASan) runtime library.

Directory structure:
README.txt       : This file.
Makefile.mk      : File for make-based build.
CMakeLists.txt   : File for cmake-based build.
asan_*.{cc,h}    : Sources of the asan runtime library.
scripts/*        : Helper scripts.
tests/*          : ASan unit tests.

Also ASan runtime needs the following libraries:
lib/interception/      : Machinery used to intercept function calls.
lib/sanitizer_common/  : Code shared between various sanitizers.

ASan runtime currently also embeds part of LeakSanitizer runtime for
leak detection (lib/lsan/lsan_common.{cc,h}).

ASan runtime can only be built by CMake. You can run ASan tests
from the root of your CMake build tree:

make check-asan

For more instructions see:
https://github.com/google/sanitizers/wiki/AddressSanitizerHowToBuild