llvm-project/compiler-rt/lib/asan
Etienne Bergeron 7a1bafd6ae This patch attempts to primitive support for Win64 asan
Some known issues are:

When "head" include instructions that involve branching, the "cut and paste" approach may break down in a way that function interception still work but calling back the original function does not work.
The jmp [rip -8] saves some bytes in the "head" but finding the safe zone of 0xCC is not implemented yet. So it may stomp on preceding codes.
The shadow offset is not working yet on Win64. More complexity maybe involved since there are some differences regarding virtual address space between Window 8 and Windows 8.1/10.

Patch by: Wang Wei

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

llvm-svn: 271915
2016-06-06 18:09:54 +00:00
..
scripts [asan] Workaround LD_PRELOAD bug in the Android linker. 2016-05-24 21:25:00 +00:00
tests [compiler-rt] Fix multi-configuration output paths 2016-05-16 14:58:07 +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] add an interface function __sanitizer_print_memory_profile (a basic memory profiler; asan/Linux-only for now) 2016-06-02 01:21:52 +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 [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 [asan] add an interface function __sanitizer_print_memory_profile (a basic memory profiler; asan/Linux-only for now) 2016-06-02 01:21:52 +00:00
asan_allocator.h [asan] add an interface function __sanitizer_print_memory_profile (a basic memory profiler; asan/Linux-only for now) 2016-06-02 01:21:52 +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 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 [sanitizer] Add memset, memmove, and memcpy to the common interceptors 2016-03-25 19:33:45 +00:00
asan_globals.cc [asan] Add runtime support for __asan_(un)register_image_globals 2016-03-28 20:28:17 +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 Revert "[sanitizer] Move *fstat to the common interceptors" 2016-05-19 16:03:10 +00:00
asan_interceptors.h [asan] Add __strdup interceptor. 2016-04-20 22:45:23 +00:00
asan_interface_internal.h [asan] Add runtime support for __asan_(un)register_image_globals 2016-03-28 20:28:17 +00:00
asan_internal.h This patch attempts to primitive support for Win64 asan 2016-06-06 18:09:54 +00:00
asan_linux.cc [asan] Add runtime support for __asan_(un)register_image_globals 2016-03-28 20:28:17 +00:00
asan_lock.h
asan_mac.cc [asan] Add runtime support for __asan_(un)register_image_globals 2016-03-28 20:28:17 +00:00
asan_malloc_linux.cc [asan] Fix asan initialization failure with newer (2.23+) glibc in use. 2016-05-16 07:20:53 +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 [asan] Intercept all Heap* related imports from ucrtbase.dll 2016-03-24 20:19:48 +00:00
asan_mapping.h [ASan] Add shadow offset for SystemZ. 2016-04-30 10:02:12 +00:00
asan_memory_profile.cc [asan] fix arm build 2016-06-02 04:01:58 +00:00
asan_new_delete.cc [asan] Export new and delete operators on Windows 2016-03-23 20:45:52 +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 [sanitizers] introduce __sanitizer_set_report_fd so that we can re-route the sanitizer logging to another fd from inside the process 2016-05-27 21:23:05 +00:00
asan_preinit.cc [asan] Revert r221882. 2014-11-14 13:02:28 +00:00
asan_report.cc [asan] Fix a deadlock halt_on_error-signals.c when `reporting_thread_tid_` is 0 2016-05-31 08:47:18 +00:00
asan_report.h [asan] Prefer alloc-dealloc-mismatch to new-delete-type-mismatch. 2016-04-13 21:04:27 +00:00
asan_rtl.cc This patch attempts to primitive support for Win64 asan 2016-06-06 18:09:54 +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 [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 [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 This patch is activating the build of Asan on Windows 64-bits. 2016-05-27 21:29:31 +00:00
asan_win_dll_thunk.cc Update asan_win_dll_thunk.cc to fix the windows buildbot. 2016-05-30 10:00:54 +00:00
asan_win_dynamic_runtime_thunk.cc Wrap 81 character line to satisfy linter 2016-03-22 00:53:04 +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