llvm-project/compiler-rt/lib/asan
Reid Kleckner 39950b0f92 [asan] Create a .ASAN$G(A-Z) section for global registration
Summary:
The expectation is that new instrumented code will add global variable
metadata to the .ASAN$GL section, and we will use this new code to
iterate over it.

This technique seems to break when using incremental linking, which
seems to align every global to a 256 byte boundary. Presumably this is
so that it can incrementally cope with global changing size. Clang
already passes -incremental:no as a linker flag when you invoke it to do
the link step.

The two tests added for this feature will fail until the LLVM
instrumentation change in D26770 lands, so they are marked XFAIL for
now.

Reviewers: pcc, kcc, mehdi_amini, kubabrecka

Subscribers: llvm-commits, mgorny

Differential Revision: https://reviews.llvm.org/D26771

llvm-svn: 287246
2016-11-17 19:02:53 +00:00
..
scripts [asan] Fix asan-rt bitness issues in asan_device_setup on Android. 2016-11-08 00:59:58 +00:00
tests [asan] Create a .ASAN$G(A-Z) section for global registration 2016-11-17 19:02:53 +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 [asan] Create a .ASAN$G(A-Z) section for global registration 2016-11-17 19:02:53 +00:00
README.txt [ASan] Fix the links to bugs and wikipages. 2015-12-04 17:37:40 +00:00
asan.syms.extra
asan_activation.cc [sanitizier] initializing common flags. 2016-03-21 20:53:20 +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 Don't use internal symbolizer if we are in process of reporting Out-of-Memory. 2016-09-29 23:00:54 +00:00
asan_allocator.h [compiler-rt] Set asan win 64-bits to use dynamic address for memory allocator 2016-09-14 19:23:21 +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 [asan] Add a new AddressDescription structure, which can describe any type of address. 2016-09-09 20:43:20 +00:00
asan_descriptions.cc [asan] Fix GlobalAddressDescription::Print() 2016-09-20 20:33:18 +00:00
asan_descriptions.h [asan] Reify ErrorGeneric 2016-09-21 20:18:18 +00:00
asan_errors.cc [asan] Reify ErrorGeneric 2016-09-21 20:18:18 +00:00
asan_errors.h [asan] Reify ErrorGeneric 2016-09-21 20:18:18 +00:00
asan_fake_stack.cc fix random typos [NFC] 2016-08-05 18:49:08 +00:00
asan_fake_stack.h fix random typos [NFC] 2016-08-05 18:49:08 +00:00
asan_flags.cc [sanitizer] Add strchr* to the common interceptors 2016-03-21 21:36:17 +00:00
asan_flags.h [Sanitizer] Change InitializeFlags() signatures. NFC. 2015-02-12 00:36:42 +00:00
asan_flags.inc [asan] alloc_dealloc_mismatch=0 by default on Android. 2016-09-13 22:25:44 +00:00
asan_globals.cc [asan] Create a .ASAN$G(A-Z) section for global registration 2016-11-17 19:02:53 +00:00
asan_globals_win.cc [asan] Create a .ASAN$G(A-Z) section for global registration 2016-11-17 19:02:53 +00:00
asan_globals_win.h [asan] Create a .ASAN$G(A-Z) section for global registration 2016-11-17 19:02:53 +00:00
asan_init_version.h [asan] Add runtime support for __asan_(un)register_image_globals 2016-03-28 20:28:17 +00:00
asan_interceptors.cc [compiler-rt] Fix CHECK coding style [NFC] 2016-08-03 15:47:40 +00:00
asan_interceptors.h [asan] Add __strdup interceptor. 2016-04-20 22:45:23 +00:00
asan_interface_internal.h [compiler-rt] Add support for the dynamic shadow allocation 2016-09-30 17:47:34 +00:00
asan_internal.h [asan] Reify ErrorDeadlySignal 2016-09-08 12:58:15 +00:00
asan_linux.cc [asan] Add exception handler to map memory on demand on Win64. 2016-07-11 21:40:59 +00:00
asan_lock.h
asan_mac.cc [asan] Add exception handler to map memory on demand on Win64. 2016-07-11 21:40:59 +00:00
asan_malloc_linux.cc [asan, msan] Fix reallocation logic when IsInDlsymAllocPool(ptr) is true. 2016-09-26 08:11:21 +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 Fix _recalloc redefinition link error in ASan RTL 2016-10-11 23:13:13 +00:00
asan_mapping.h [asan] Reapply: Switch to using dynamic shadow offset on iOS 2016-10-05 20:33:59 +00:00
asan_memory_profile.cc [asan] minor fix in the asan memory profile 2016-08-23 18:13:51 +00:00
asan_new_delete.cc [asan] Add C++17 aligned new/delete entrypoints. Patch by Jakub Jelinek, see https://reviews.llvm.org/D24771 2016-09-20 21:27:10 +00:00
asan_poisoning.cc [asan] Remove runtime flag detect_stack_use_after_scope 2016-08-29 17:16:59 +00:00
asan_poisoning.h [asan] first attempt at releasing free-d memory back to the system using madvise. Requires quite some tuning. 2016-08-26 23:58:42 +00:00
asan_posix.cc [asan] Handle SIGBART signal description. (found by buildbot) 2016-09-08 13:28:26 +00:00
asan_preinit.cc [asan] Revert r221882. 2014-11-14 13:02:28 +00:00
asan_report.cc [asan] Reify ErrorGeneric 2016-09-21 20:18:18 +00:00
asan_report.h [asan] Add a new AddressDescription structure, which can describe any type of address. 2016-09-09 20:43:20 +00:00
asan_rtl.cc Make __asan_handle_no_return a no-op during initialization 2016-10-12 22:33:57 +00:00
asan_scariness_score.h Split ScarinessScore between its "storage" (POD), and an initializing object. 2016-08-30 17:08:47 +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 [LSAN] Fix test swapcontext.cc on MIPS 2016-05-18 06:09:26 +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 [scan-build] fix logic error warning emitted on compiler-rt code base 2016-05-02 19:07:20 +00:00
asan_suppressions.h [asan] add suppressions for odr violations 2015-02-25 00:49:12 +00:00
asan_thread.cc [ASAN] Pass previous stack information through __sanitizer_finish_switch_fiber 2016-09-28 12:28:16 +00:00
asan_thread.h [ASAN] Pass previous stack information through __sanitizer_finish_switch_fiber 2016-09-28 12:28:16 +00:00
asan_win.cc [asan] Create a .ASAN$G(A-Z) section for global registration 2016-11-17 19:02:53 +00:00
asan_win_dll_thunk.cc [asan] Create a .ASAN$G(A-Z) section for global registration 2016-11-17 19:02:53 +00:00
asan_win_dynamic_runtime_thunk.cc [asan] Create a .ASAN$G(A-Z) section for global registration 2016-11-17 19:02:53 +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