llvm-project/compiler-rt/lib/asan
Chandler Carruth 28c1b294b8 Fix a bug in the readdir_r interceptor: when we reach the end of the
directory stream, the entry is not written to, instead *result is set to
NULL and the entry is not written to at all.

I'm still somewhat suspicious of the correct instrumention here --
I feel like it should be marking the written range as the pointer in
*result and the length (*result)->d_reclen in case the implementation
decides not to use the passed-in entry (if that's even allowed).
Finally, the definition of 'struct dirent' analog used in the
interceptor is wrong in 32-bit mode with _FILE_OFFSET_BITS=64 as it hard
codes the use of a pointer-sized offset.

I've added a somewhat goofy test for the bug I fixed via ASan --
suggestions on how to better test the interceptor logic itself welcome.

llvm-svn: 185998
2013-07-10 09:50:29 +00:00
..
lit_tests Fix a bug in the readdir_r interceptor: when we reach the end of the 2013-07-10 09:50:29 +00:00
scripts [ASan] Close stderr before launching atos in asan_symbolize.py 2013-07-04 14:21:49 +00:00
tests [asan] fix the bug with memalign and malloc_usable_size (http://code.google.com/p/address-sanitizer/issues/detail?id=193); also fix lint 2013-06-10 10:46:27 +00:00
CMakeLists.txt Add cmake rules for building LSan common on Mac OS 2013-06-22 16:33:52 +00:00
Makefile.mk [ASan] Delete asan/dynamic dir and temporarily move the interposers declarations to asan_intercepted_functions.h 2013-02-20 15:46:02 +00:00
README.txt [ASan] Nuke output_tests/ in favor of lit_tests/. Stop using Makefile.old. 2012-09-06 06:39:02 +00:00
asan.syms Add sanitizer syscall hooks to the tool's export lists. 2013-05-14 13:55:21 +00:00
asan_allocator.h [asan] move fake stack into a separate .h file; actually disable a failing test 2013-04-11 11:39:19 +00:00
asan_allocator2.cc Revert to C-style callbacks for iteration over allocator chunks. 2013-06-24 08:34:50 +00:00
asan_blacklist.txt [asan] Update blacklists to use categories. 2013-07-09 22:04:28 +00:00
asan_fake_stack.cc [asan] initialize fake_stack lazily and increase its maximal size. This makes -fsanitize=address,use-after-return more robust: all SPEC tests pass now. In the default mode thread stacks become a bit smaller. 2013-06-26 12:16:05 +00:00
asan_fake_stack.h [asan] initialize fake_stack lazily and increase its maximal size. This makes -fsanitize=address,use-after-return more robust: all SPEC tests pass now. In the default mode thread stacks become a bit smaller. 2013-06-26 12:16:05 +00:00
asan_flags.h [sanitizer] Move log_path to common flag and use it in MSan. 2013-06-25 13:50:44 +00:00
asan_globals.cc [Sanitizer] Rename InternalVector to InternalMmapVector 2013-06-14 09:59:40 +00:00
asan_intercepted_functions.h Disable init-order checking before destructors are run. 2013-05-24 11:46:56 +00:00
asan_interceptors.cc [sanitizer] Support GLOB_ALTDIRFUNC in glob interceptor. 2013-07-09 12:07:59 +00:00
asan_interceptors.h [ASan] Delete the code related to static runtime on OS X. 2013-02-05 15:57:12 +00:00
asan_interface_internal.h [ASan] Change the ABI of __asan_before_dynamic_init function: now it takes pointer to private string with module name. This string serves as a unique module ID in ASan runtime. compiler-rt part 2013-03-26 13:06:12 +00:00
asan_internal.h Disable init-order checking before destructors are run. 2013-05-24 11:46:56 +00:00
asan_linux.cc [asan] ASan Linux MIPS32 support (compiler-rt part), patch by Jyun-Yan Y 2013-06-03 14:49:25 +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 [sanitizer] Move GetStackTrace from ASan to sanitizer_common. 2013-05-08 12:45:55 +00:00
asan_mac.h Fix broken header guard. 2013-06-12 22:37:22 +00:00
asan_malloc_linux.cc [ASan] Kill the remainders of platform defines in favor of SANITIZER_ defines 2013-04-03 07:29:53 +00:00
asan_malloc_mac.cc [ASan] Do not protect the malloc zone created by malloc_zone_create() on Snow Leopard and earlier systems. 2013-07-04 10:16:12 +00:00
asan_malloc_win.cc [sanitizer] More renamed macros. 2013-03-19 14:54:17 +00:00
asan_mapping.h [asan] ASan Linux MIPS32 support (compiler-rt part), patch by Jyun-Yan Y 2013-06-03 14:49:25 +00:00
asan_new_delete.cc [ASan] Kill the remainders of platform defines in favor of SANITIZER_ defines 2013-04-03 07:29:53 +00:00
asan_poisoning.cc [sanitizer] Fix __sanitizer_unaligned_* to work with unaligned data types. 2013-06-04 13:49:10 +00:00
asan_poisoning.h [sanitizer] introduce LargeMmapAllocator::GetBlockBeginFastSingleThreaded, required for LeakSanitizer to work faster. Also fix lint. 2013-05-30 08:43:30 +00:00
asan_posix.cc [sanitizer] found a bug by code inspection: CHECK(a=b) instead of CHECK(a==b). Was puzzled why lint did not catch it. Turns out this check was disabled for asan source. fix all cases and enable the check 2013-04-05 14:40:25 +00:00
asan_preinit.cc [ASan] Rename __asan_preinit to __local_asan_preinit to avoid warnings from the linker which is trying to export all the __asan_* symbols 2013-05-23 09:15:20 +00:00
asan_report.cc [asan] initialize fake_stack lazily and increase its maximal size. This makes -fsanitize=address,use-after-return more robust: all SPEC tests pass now. In the default mode thread stacks become a bit smaller. 2013-06-26 12:16:05 +00:00
asan_report.h [ASan] Switch ASan to generic ThreadRegistry from sanitizer_common. Delete ASan-specific AsanThreadRegistry. 2013-03-21 11:23:41 +00:00
asan_rtl.cc [sanitizer] Move log_path to common flag and use it in MSan. 2013-06-25 13:50:44 +00:00
asan_stack.cc [asan] Common flags in ASan. 2013-05-06 11:27:58 +00:00
asan_stack.h [sanitizer] Move GetStackTrace from ASan to sanitizer_common. 2013-05-08 12:45:55 +00:00
asan_stats.cc [sanitizer] found a bug by code inspection: CHECK(a=b) instead of CHECK(a==b). Was puzzled why lint did not catch it. Turns out this check was disabled for asan source. fix all cases and enable the check 2013-04-05 14:40:25 +00:00
asan_stats.h [ASan] Switch ASan to generic ThreadRegistry from sanitizer_common. Delete ASan-specific AsanThreadRegistry. 2013-03-21 11:23:41 +00:00
asan_thread.cc [lsan] Handle fork() correctly. 2013-07-08 12:57:24 +00:00
asan_thread.h [lsan] Handle fork() correctly. 2013-07-08 12:57:24 +00:00
asan_win.cc [sanitizer] Move GetStackTrace from ASan to sanitizer_common. 2013-05-08 12:45:55 +00:00

README.txt

AddressSanitizer RT
================================
This directory contains sources of the AddressSanitizer (asan) run-time library.
We are in the process of integrating AddressSanitizer with LLVM, stay tuned.

Directory structre:
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 run-time lirbary.
scripts/*        : Helper scripts.
tests/*          : ASan unit tests.
lit_tests/*      : ASan output tests.

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

Currently ASan runtime can be built by both make and cmake build systems.
(see compiler-rt/make and files Makefile.mk for make-based build and
files CMakeLists.txt for cmake-based build).

ASan unit and output tests work only with cmake. You may run this
command from the root of your cmake build tree:

make check-asan

For more instructions see:
http://code.google.com/p/address-sanitizer/wiki/HowToBuild