Alexey Samsonov
56a784d2f6
[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
...
llvm-svn: 178014
2013-03-26 13:06:12 +00:00
Alexander Potapenko
29310ba077
[libsanitizer] Fix the Win build.
...
llvm-svn: 178012
2013-03-26 13:02:11 +00:00
Kostya Serebryany
79a6e189b0
[tsan] make memcpy_race.cc test immune to memcpy inlining
...
llvm-svn: 178011
2013-03-26 12:42:18 +00:00
Dmitry Vyukov
6f4b34bcf4
asan/tsan: move strcasecmp() interceptor to sanitizer_common
...
llvm-svn: 178010
2013-03-26 12:40:23 +00:00
Dmitry Vyukov
f3bc56bb6b
asan/tsan: change SANITIZER_GO to more general SANITIZER_SUPPORTS_WEAK_HOOKS
...
llvm-svn: 178009
2013-03-26 12:07:04 +00:00
Alexander Potapenko
f8109dd0f8
[libsanitizer] Unmapping the old cache partially invalidates the memory layout, so add
...
a flag to skip cache update for cases when that's unacceptable (e.g. lsan).
Patch by Sergey Matveev (earthdok@google.com )
llvm-svn: 178000
2013-03-26 10:34:37 +00:00
Alexey Samsonov
7ef76c1cd8
[Sanitizer] Disable atomic_test on Android, where it crashes Clang.
...
llvm-svn: 177998
2013-03-26 08:55:38 +00:00
Kostya Serebryany
4d7efba66e
[tsan] add a test for aligned-vs-unaligned race (tsan's false negative)
...
llvm-svn: 177996
2013-03-26 08:31:02 +00:00
Kostya Serebryany
88b2b45ec8
[asan] print thread number while reporting invalid-free and double-free; add tests; also add a test for use-after-poison
...
llvm-svn: 177993
2013-03-26 08:01:37 +00:00
Timur Iskhodzhanov
2dee3dd61c
Add a GetTid() implementation for Windows
...
llvm-svn: 177927
2013-03-25 22:04:29 +00:00
Alexey Samsonov
6210e1f9ff
Add basic support for building profile compiler-rt library in CMake build on Darwin
...
llvm-svn: 177870
2013-03-25 14:20:11 +00:00
Alexey Samsonov
961b636cf1
[ASan] Use dynamic symbol table when checking exported ASan runtime symbols
...
llvm-svn: 177868
2013-03-25 13:47:53 +00:00
Dmitry Vyukov
7886253fee
asan/tsan: add Printf/Report hook
...
The hook can be overriden in frontend to print to e.g. a file.
llvm-svn: 177864
2013-03-25 12:58:09 +00:00
Alexey Samsonov
9328ba400a
[ASan] mark local function as static
...
llvm-svn: 177862
2013-03-25 11:38:42 +00:00
Alexey Samsonov
acfb82e611
[Sanitizer] Compile sanitizer runtimes with -Wno-non-virtual-dtor. Virtual dtors may be a problem for us, as sanitizer runtime should not generally assume libstdc++ presence.
...
llvm-svn: 177860
2013-03-25 10:31:49 +00:00
Alexey Samsonov
31a2c483ed
[TSan] Build TSan unit tests with the same compile flags as TSan runtime
...
llvm-svn: 177859
2013-03-25 10:23:20 +00:00
Dmitry Vyukov
4adf49d253
tsan: intercept setjmp/longjmp
...
llvm-svn: 177858
2013-03-25 10:10:44 +00:00
Dmitry Vyukov
510ad11800
tsan: add SetEnv() function that can be used in frontends
...
llvm-svn: 177857
2013-03-25 09:56:45 +00:00
Alexey Samsonov
a208c397bf
[Sanitizer] First effort to implement atomic_compare_exchange for 1-byte vars on Windows
...
llvm-svn: 177854
2013-03-25 09:23:30 +00:00
Alexey Samsonov
c6fd019c77
[Sanitizer] Add basic test for atomic_compare_exchange implementation
...
llvm-svn: 177851
2013-03-25 08:48:16 +00:00
Richard Smith
c91e327cba
Build and install .syms files alongside sanitizer runtimes. These are used to
...
specify which symbols are exported to DSOs when the sanitizer is statically
linked into a binary.
llvm-svn: 177784
2013-03-23 00:31:07 +00:00
Timur Iskhodzhanov
fb74020cea
Revert 177745 as it was incorrect
...
llvm-svn: 177746
2013-03-22 18:16:57 +00:00
Timur Iskhodzhanov
e117eef77f
Band-aid fix for the Windows build caused by r177710. Long-term, atomic_compare_exchange_strong should be a template on Windows too...
...
llvm-svn: 177745
2013-03-22 18:05:28 +00:00
Dmitry Vyukov
9af68719ed
tsan: return 0 on malloc() failure instead of crashing
...
llvm-svn: 177741
2013-03-22 17:06:22 +00:00
Evgeniy Stepanov
ecbf64648f
[msan] Handle dlopen() failure in dlopen interceptor.
...
llvm-svn: 177728
2013-03-22 11:59:49 +00:00
Dmitry Vyukov
3bd5ffb62b
tsan: test that tsan explicitly says "race on vptr".
...
Requires llvm r177717.
llvm-svn: 177726
2013-03-22 10:54:39 +00:00
Kostya Serebryany
667a34a120
[asan] Change the way we report the alloca frame on stack-buff-overflow.
...
Before: the function name was stored by the compiler as a constant string
and the run-time was printing it.
Now: the PC is stored instead and the run-time prints the full symbolized frame.
This adds a couple of instructions into every function with non-empty stack frame,
but also reduces the binary size because we store less strings (I saw 2% size reduction).
This change bumps the asan ABI version to v3.
compiler-rt part, llvm part will follow.
Example of report (now):
==31711==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7fffa77cf1c5 at pc 0x41feb0 bp 0x7fffa77cefb0 sp 0x7fffa77cefa8
READ of size 1 at 0x7fffa77cf1c5 thread T0
#0 0x41feaf in Frame0(int, char*, char*, char*) stack-oob-frames.cc:20
#1 0x41f7ff in Frame1(int, char*, char*) stack-oob-frames.cc:24
#2 0x41f477 in Frame2(int, char*) stack-oob-frames.cc:28
#3 0x41f194 in Frame3(int) stack-oob-frames.cc:32
#4 0x41eee0 in main stack-oob-frames.cc:38
#5 0x7f0c5566f76c (/lib/x86_64-linux-gnu/libc.so.6+0x2176c)
#6 0x41eb1c (/usr/local/google/kcc/llvm_cmake/a.out+0x41eb1c)
Address 0x7fffa77cf1c5 is located in stack of thread T0 at offset 293 in frame
#0 0x41f87f in Frame0(int, char*, char*, char*) stack-oob-frames.cc:12 <<<<<<<<<<<<<< this is new
This frame has 6 object(s):
[32, 36) 'frame.addr'
[96, 104) 'a.addr'
[160, 168) 'b.addr'
[224, 232) 'c.addr'
[288, 292) 's'
[352, 360) 'd'
llvm-svn: 177723
2013-03-22 10:36:24 +00:00
Evgeniy Stepanov
93a842bd1f
[msan] Move test main and gtest include to separate files.
...
llvm-svn: 177718
2013-03-22 09:01:26 +00:00
Evgeniy Stepanov
bfe9df221d
[msan] Place dlopen in an anon namespace.
...
llvm-svn: 177716
2013-03-22 08:49:36 +00:00
Dmitry Vyukov
2f411641fe
tsan: work around FileCheck bug with empty outputs
...
llvm-svn: 177715
2013-03-22 08:48:34 +00:00
Evgeniy Stepanov
5d69168906
[msan] Get rid of "using std::string" in msandr.
...
llvm-svn: 177714
2013-03-22 08:47:42 +00:00
Alexey Samsonov
f1311dfce1
[ASan] fix-up for r177634 on Windows.
...
llvm-svn: 177711
2013-03-22 07:48:23 +00:00
Alexey Samsonov
a5eb3cb721
[ASan] Fix an error on invalid deallocation in ASan allocator. When ASan checks if memory freed by user was indeed previously allocated, it first does an atomic write to presumed location of chunk header. This is wrong, as if the free is invalid, we may overwrite some valuable data (like other fields of the chunk header). Fix this by using atomic_compare_exchange instead.
...
llvm-svn: 177710
2013-03-22 07:40:34 +00:00
Dmitry Vyukov
a7e42b5be5
asan: fix lint warning about line length
...
llvm-svn: 177709
2013-03-22 07:29:59 +00:00
Richard Smith
b30d11194c
ubsan: Pass floating-point arguments to the runtime by value if they fit the
...
value argument.
llvm-svn: 177689
2013-03-22 00:47:05 +00:00
Richard Smith
1ea5b805ce
Don't forget to link in the C++-specific parts of the ubsan runtime when using the Makefile build system on Darwin.
...
llvm-svn: 177684
2013-03-22 00:01:44 +00:00
Dmitry Vyukov
ebf63d0095
tsan: better reporting of thread leaks
...
1. do not report running threads as leaks
2. aggregate leaked threads by creation stack
llvm-svn: 177647
2013-03-21 16:55:17 +00:00
Dmitry Vyukov
0851fa8819
tsan: better reporting for races on vptr
...
explicitly say "ctor/dtor vs virtual call"
llvm-svn: 177640
2013-03-21 15:37:39 +00:00
Dmitry Vyukov
2c3b919ad3
tsan: add flag to control symbolizer flush frequency
...
llvm-svn: 177638
2013-03-21 13:01:50 +00:00
Dmitry Vyukov
69c323d66f
tsan: intercept abort() to fflush() libc streams
...
llvm-svn: 177637
2013-03-21 12:50:43 +00:00
Dmitry Vyukov
6911a7f1d1
tsan: remove bogus CHECK
...
Asynchronous signal (e.g. SIGABRT) can be received with any value of in_rtl.
llvm-svn: 177636
2013-03-21 12:44:44 +00:00
Alexey Samsonov
54afba8b62
[ASan] Switch ASan to generic ThreadRegistry from sanitizer_common. Delete ASan-specific AsanThreadRegistry.
...
llvm-svn: 177634
2013-03-21 11:23:41 +00:00
Dmitry Vyukov
48e5d4a2d3
tsan: flush symbolizer cache if not symbolized for more than 5 seconds
...
llvm-svn: 177629
2013-03-21 07:02:36 +00:00
Dmitry Vyukov
5e797a8e57
tsan: add a comment about magic numbers
...
llvm-svn: 177628
2013-03-21 06:28:04 +00:00
Dmitry Vyukov
78693730a4
tsan: use a single background thread for memory profiler and memory flush (and later for symbolizer flush)
...
llvm-svn: 177627
2013-03-21 06:24:31 +00:00
Richard Smith
b6f3905450
Per discussion on cxx-abi-dev, switch from comparing type_info objects to
...
comparing type_info names, since the latter have better uniqueness guarantees
in practice.
llvm-svn: 177618
2013-03-21 00:42:03 +00:00
Richard Smith
e86b7b0bb9
Split ubsan runtime into three pieces (compiler-rt part):
...
* libclang_rt-san-* is sanitizer_common, and is linked in only if no other
sanitizer runtime is present.
* libclang_rt-ubsan-* is the piece of the runtime which doesn't depend on
a C++ ABI library, and is always linked in.
* libclang_rt-ubsan_cxx-* is the piece of the runtime which depends on a
C++ ABI library, and is only linked in when linking a C++ binary.
The Darwin ubsan runtime is unchanged.
For more details, see Clang change r177605.
llvm-svn: 177606
2013-03-20 23:49:17 +00:00
Bill Wendling
7184d34f96
Add declaration for linux.
...
llvm-svn: 177601
2013-03-20 23:21:08 +00:00
Bill Wendling
51a6ff5799
Create a coverage initialization function.
...
This function replaces the call of `atexit' from being generated in the compile
units. Basically, it registers the "writeout" and "flush" functions (if
present). It will generate calls to the `atexit' function for cleanups and final
writeout functions, but only once. This is better than checking for `main',
because a library may not have a `main' function in it.
<rdar://problem/12439551>
llvm-svn: 177578
2013-03-20 21:11:47 +00:00
Dmitry Vyukov
6120bac6e6
tsan: correct sizes of signal-related data structures
...
llvm-svn: 177526
2013-03-20 14:57:28 +00:00