Kostya Serebryany
f4be019fba
[asan] add code to detect global initialization fiasco in C/C++. The sub-pass is off by default for now. Patch by Reid Watson. Note: this patch changes the interface between LLVM and compiler-rt parts of asan. The corresponding patch to compiler-rt will follow.
...
llvm-svn: 162268
2012-08-21 08:24:25 +00:00
Kostya Serebryany
bf479714f9
[asan] insert crash basic blocks inline as opposed to inserting them at the end of the function. This doesn't seem to fix or break anything, but is considered to be more friendly to downstream passes (test change)
...
llvm-svn: 161871
2012-08-14 14:05:50 +00:00
Nuno Lopes
f0626f2205
revert r160742: it's breaking CMake build
...
original commit msg:
MemoryBuiltins: add support to determine the size of strdup'ed non-constant strings
llvm-svn: 160751
2012-07-25 18:49:28 +00:00
Nuno Lopes
f0441e04bd
MemoryBuiltins: add support to determine the size of strdup'ed non-constant strings
...
llvm-svn: 160742
2012-07-25 17:29:22 +00:00
Nuno Lopes
705141d4df
baby steps toward fixing some problems with inbound GEPs that overflow, as discussed 2 months ago or so.
...
Make sure we do not emit index computations with NSW flags so that we dont get an undef value if the GEP overflows
llvm-svn: 160589
2012-07-20 23:07:40 +00:00
Nuno Lopes
20ea62527a
move the bounds checking pass to the instrumentation folder, where it belongs. I dunno why in the world I dropped it in the Scalar folder in the first place.
...
No functionality change.
llvm-svn: 160587
2012-07-20 22:39:33 +00:00
Kostya Serebryany
f02c6069ac
[asan] make sure that the crash callbacks do not get merged (Chandler's idea: insert an empty InlineAsm). Change the order in which the new BBs are inserted: the slow path BB is insert between old BBs, the crash BB is inserted at the end. Don't create an empty BB (introduced by recent commits). Update the test. The experimental code that does manual crash callback merge will most likely be deleted later.
...
llvm-svn: 160544
2012-07-20 09:54:50 +00:00
Kostya Serebryany
874dae6119
[asan] refactor instrumentation to allow merging the crash callbacks (not fully implemented yet, no functionality change except the BB order)
...
llvm-svn: 160284
2012-07-16 16:15:40 +00:00
Chandler Carruth
8b540ab337
Revert r160254 temporarily.
...
It turns out that ASan relied on the at-the-end block insertion order to
(purely by happenstance) disable some LLVM optimizations, which in turn
start firing when the ordering is made more "normal". These
optimizations in turn merge many of the instrumentation reporting calls
which breaks the return address based error reporting in ASan.
We're looking at several different options for fixing this.
llvm-svn: 160256
2012-07-16 10:01:02 +00:00
Chandler Carruth
3dd6c81492
Teach AddressSanitizer to create basic blocks in a more natural order.
...
This is particularly useful to the backend code generators which try to
process things in the incoming function order.
Also, cleanup some uses of IRBuilder to be a bit simpler and more clear.
llvm-svn: 160254
2012-07-16 08:58:53 +00:00
Chandler Carruth
663943e23e
Add a basic test for AddressSanitizer. This is just a bare-bones
...
functionality test.
In general, unless the functionality is substantially separated, we
should lump more basic testing into this file. The test running
infrastructure likes having a few test files with more comprehensive
testing within them.
llvm-svn: 160253
2012-07-16 08:56:46 +00:00
Kostya Serebryany
9024160439
[asan] instrument cmpxchg and atomicrmw
...
llvm-svn: 157683
2012-05-30 09:04:06 +00:00
Kostya Serebryany
a1259778b4
[tsan] Atomic support for ThreadSanitizer, patch by Dmitry Vyukov
...
llvm-svn: 155698
2012-04-27 07:31:53 +00:00
Kostya Serebryany
5ba61ac651
[tsan] two more compile-time optimizations:
...
- don't isntrument reads from constant globals.
Saves ~1.5% of instrumented instructions on CPU2006
(counting static instructions, not their execution).
- don't insrument reads from vtable (which is a global constant too).
Saves ~5%.
I did not measure the run-time impact of this,
but it is certainly non-negative.
llvm-svn: 154444
2012-04-10 22:29:17 +00:00
Kostya Serebryany
bf2de80be6
[tsan] compile-time instrumentation: do not instrument a read if
...
a write to the same temp follows in the same BB.
Also add stats printing.
On Spec CPU2006 this optimization saves roughly 4% of instrumented reads
(which is 3% of all instrumented accesses):
Writes : 161216
Reads : 446458
Reads-before-write: 18295
llvm-svn: 154418
2012-04-10 18:18:56 +00:00
Kostya Serebryany
6f8a776041
[tsan] treat vtable pointer updates in a special way (requires tbaa); fix a bug (forgot to return true after instrumenting); make sure the tsan tests are run
...
llvm-svn: 153448
2012-03-26 17:35:03 +00:00
Kostya Serebryany
afbb65dee7
[asan] move x86-specific test to a separate X86 directory with a custom lit.local.cfg file
...
llvm-svn: 152567
2012-03-12 18:49:11 +00:00
Eli Bendersky
924f9a671d
Replace all instances of dg.exp file with lit.local.cfg, since all tests are run with LIT now and now Dejagnu. dg.exp is no longer needed.
...
Patch reviewed by Daniel Dunbar. It will be followed by additional cleanup patches.
llvm-svn: 150664
2012-02-16 06:28:33 +00:00
Kostya Serebryany
dc84eae1e0
[asan] fix asan-vs-gvn.ll test (it did not actually check much before this change)
...
llvm-svn: 150441
2012-02-14 00:02:35 +00:00
Kostya Serebryany
e2a0e4163a
ThreadSanitizer, a race detector. First LLVM commit.
...
Clang patch (flags) will follow shortly.
The run-time library will also follow, but not immediately.
llvm-svn: 150423
2012-02-13 22:50:51 +00:00
Kostya Serebryany
154a54d972
[asan] unpoison the stack before every noreturn call. Fixes asan issue 37. llvm part
...
llvm-svn: 150102
2012-02-08 21:36:17 +00:00
Kostya Serebryany
9e0d377400
The patch resolves the conflict between AddressSanitizer and load widening (GVN).
...
The problem initially reported by Mozilla folks (http://code.google.com/p/address-sanitizer/issues/detail?id=20 ),
but it also prevents us from enabling LLVM bootstrap with AddressSanitizer.
llvm-svn: 149925
2012-02-06 22:48:56 +00:00
Kostya Serebryany
c11d1dd133
[asan] enable asan only for the functions that have Attribute::AddressSafety
...
llvm-svn: 148846
2012-01-24 19:34:43 +00:00
Kostya Serebryany
842ae27ae3
[asan] one more test for asan instrumentation: (*a)++ should be instrumented only once.
...
llvm-svn: 147509
2012-01-04 01:02:14 +00:00
Kostya Serebryany
561dade58d
[asan] add a test for instrumenting globals
...
llvm-svn: 146718
2011-12-16 01:28:19 +00:00
Kostya Serebryany
8b5c7a56a3
[asan] do not instrument threadlocal globals, this is buggy
...
llvm-svn: 145092
2011-11-23 02:10:54 +00:00
Kostya Serebryany
1cdc6e9567
[asan] workaround for reg alloc bug 11395: don't instrument functions with large chunks of inline assembler
...
llvm-svn: 144962
2011-11-18 01:41:06 +00:00
Kostya Serebryany
65e2211b95
fall back to explicit list of allowed linkages when instrumenting globals in asan; add a test check that asan does not touch linkonce_odr
...
llvm-svn: 144933
2011-11-17 23:14:59 +00:00
Kostya Serebryany
6e6b03ec46
AddressSanitizer, first commit (compiler module only)
...
llvm-svn: 144758
2011-11-16 01:35:23 +00:00