- Mar 22, 2013
-
-
Timur Iskhodzhanov authored
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
-
Dmitry Vyukov authored
llvm-svn: 177741
-
Evgeniy Stepanov authored
llvm-svn: 177728
-
Dmitry Vyukov authored
Requires llvm r177717. llvm-svn: 177726
-
Kostya Serebryany authored
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
-
Evgeniy Stepanov authored
llvm-svn: 177718
-
Evgeniy Stepanov authored
llvm-svn: 177716
-
Dmitry Vyukov authored
llvm-svn: 177715
-
Evgeniy Stepanov authored
llvm-svn: 177714
-
Alexey Samsonov authored
llvm-svn: 177711
-
Alexey Samsonov authored
[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
-
Dmitry Vyukov authored
llvm-svn: 177709
-
Richard Smith authored
value argument. llvm-svn: 177689
-
- Mar 21, 2013
-
-
Dmitry Vyukov authored
1. do not report running threads as leaks 2. aggregate leaked threads by creation stack llvm-svn: 177647
-
Dmitry Vyukov authored
explicitly say "ctor/dtor vs virtual call" llvm-svn: 177640
-
Dmitry Vyukov authored
llvm-svn: 177638
-
Dmitry Vyukov authored
llvm-svn: 177637
-
Dmitry Vyukov authored
Asynchronous signal (e.g. SIGABRT) can be received with any value of in_rtl. llvm-svn: 177636
-
Alexey Samsonov authored
[ASan] Switch ASan to generic ThreadRegistry from sanitizer_common. Delete ASan-specific AsanThreadRegistry. llvm-svn: 177634
-
Dmitry Vyukov authored
llvm-svn: 177629
-
Dmitry Vyukov authored
llvm-svn: 177628
-
Dmitry Vyukov authored
tsan: use a single background thread for memory profiler and memory flush (and later for symbolizer flush) llvm-svn: 177627
-
Richard Smith authored
comparing type_info names, since the latter have better uniqueness guarantees in practice. llvm-svn: 177618
-
Richard Smith authored
* 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
-
- Mar 20, 2013
-
-
Bill Wendling authored
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
-
Dmitry Vyukov authored
llvm-svn: 177526
-
Dmitry Vyukov authored
llvm-svn: 177523
-
Dmitry Vyukov authored
llvm-svn: 177522
-
Dmitry Vyukov authored
overflow is handled anyway saves memory because each thread holds 1024 mutexsets llvm-svn: 177520
-
Dmitry Vyukov authored
llvm-svn: 177519
-
Dmitry Vyukov authored
tsan: special handling of .rodata (don't try to find races, don't keep shadow, dont' put into traces) llvm-svn: 177517
-
Dmitry Vyukov authored
llvm-svn: 177513
-
Dmitry Vyukov authored
eliminat thread "dead info" altogether llvm-svn: 177512
-
Dmitry Vyukov authored
llvm-svn: 177510
-
Alexey Samsonov authored
llvm-svn: 177508
-
Dmitry Vyukov authored
256 blocks (which is 512 in reallity) seems to be too big cache, reducing the size reduces memory consumption but does not degrade performance. llvm-svn: 177502
-
Alexey Samsonov authored
[ASan] Move GetCurrentThread/SetCurrentThread from AsanThreadRegistry class into plain functions: they don't actually use registry llvm-svn: 177501
-
Dmitry Vyukov authored
llvm-svn: 177500
-
Dmitry Vyukov authored
llvm-svn: 177499
-
Evgeniy Stepanov authored
llvm-svn: 177497
-