Alexey Samsonov
0714b7b31b
[Sanitizer] Support %.*s in internal printf implementation. Patch by Yuri Gribov.
...
llvm-svn: 199724
2014-01-21 10:59:44 +00:00
Kostya Serebryany
714c67c31e
[asan] extend asan-coverage (still experimental).
...
- add a mode for collecting per-block coverage (-asan-coverage=2).
So far the implementation is naive (all blocks are instrumented),
the performance overhead on top of asan could be as high as 30%.
- Make sure the one-time calls to __sanitizer_cov are moved to function buttom,
which in turn required to copy the original debug info into the call insn.
Here is the performance data on SPEC 2006
(train data, comparing asan with asan-coverage={0,1,2}):
asan+cov0 asan+cov1 diff 0-1 asan+cov2 diff 0-2 diff 1-2
400.perlbench, 65.60, 65.80, 1.00, 76.20, 1.16, 1.16
401.bzip2, 65.10, 65.50, 1.01, 75.90, 1.17, 1.16
403.gcc, 1.64, 1.69, 1.03, 2.04, 1.24, 1.21
429.mcf, 21.90, 22.60, 1.03, 23.20, 1.06, 1.03
445.gobmk, 166.00, 169.00, 1.02, 205.00, 1.23, 1.21
456.hmmer, 88.30, 87.90, 1.00, 91.00, 1.03, 1.04
458.sjeng, 210.00, 222.00, 1.06, 258.00, 1.23, 1.16
462.libquantum, 1.73, 1.75, 1.01, 2.11, 1.22, 1.21
464.h264ref, 147.00, 152.00, 1.03, 160.00, 1.09, 1.05
471.omnetpp, 115.00, 116.00, 1.01, 140.00, 1.22, 1.21
473.astar, 133.00, 131.00, 0.98, 142.00, 1.07, 1.08
483.xalancbmk, 118.00, 120.00, 1.02, 154.00, 1.31, 1.28
433.milc, 19.80, 20.00, 1.01, 20.10, 1.02, 1.01
444.namd, 16.20, 16.20, 1.00, 17.60, 1.09, 1.09
447.dealII, 41.80, 42.20, 1.01, 43.50, 1.04, 1.03
450.soplex, 7.51, 7.82, 1.04, 8.25, 1.10, 1.05
453.povray, 14.00, 14.40, 1.03, 15.80, 1.13, 1.10
470.lbm, 33.30, 34.10, 1.02, 34.10, 1.02, 1.00
482.sphinx3, 12.40, 12.30, 0.99, 13.00, 1.05, 1.06
llvm-svn: 199488
2014-01-17 11:00:30 +00:00
Alexey Samsonov
a64851bccb
[Sanitizer] Remove empty method
...
llvm-svn: 199481
2014-01-17 08:39:05 +00:00
Alexey Samsonov
4d075df406
[Sanitizer] Add basic support for using libbacktrace in symbolizer.
...
This change allows to compile sanitizer sources so that *san runtime
will attempt to use libbacktrace and/or libiberty for symbolization
(instead of communicating with llvm-symbolizer).
I've tested this patch by manually defining SANITIZER_LIBBACKTRACE and/or
SANITIZER_CP_DEMANGLE, linking with necessary libraries and verifying that
all tests from ASan test suite work.
Based on patches by Jakub Jelinek!
llvm-svn: 199384
2014-01-16 13:48:15 +00:00
Kostya Serebryany
47d5569de1
[asan] Include <sys/stat.h> if __x86_64__ is defined
...
struct stat defined in <asm/stat.h> is incorrect for x32. <asm/stat.h>
is included to get struct __old_kernel_stat. But struct __old_kernel_stat
isn't used for x86-64 nor x32. This patch includes <sys/stat.h> instead
of <asm/stat.h> and comments out size check of struct __old_kernel_stat
for x86-64.
Patch by H.J. Lu
llvm-svn: 199192
2014-01-14 07:38:53 +00:00
Kostya Serebryany
d651412cd4
[asan] fix the ppc32 build (by Jakub Jelinek). Note that the LLVM build still builds only for 64-bit PowerPC, and not for 32-bit
...
llvm-svn: 199090
2014-01-13 10:19:12 +00:00
Dmitry Vyukov
5b57ea7a24
tsan: fix Go build
...
Currently fails with:
gotsan.cc:7686:40: error: the address of 'int __sanitizer_pthread_attr_getstack(void*, void**, size_t*)' will always evaluate as 'true' [-Werror=address]
llvm-svn: 198261
2013-12-31 09:38:23 +00:00
Chandler Carruth
a989fb5ce7
Fix an ODR violation in the sanitizer runtimes.
...
A helper function is a C++ function, and so even though one of the two
definitions is weak, it still technically triggers the ODR. Perhaps
these two definitions are ODR equivalent, but I'm not even confident in
that.
Instead, just define the function once, declare it as weak, and use
a wrapper that is clearly file-local. This avoids two definitions. Also
make the function extern "C" so that we can't even mess up the type
signature somehow or otherwise fail to match up the weak declaration
here with the interceptor defined elsewhere.
llvm-svn: 198253
2013-12-30 23:36:11 +00:00
Alexander Potapenko
79bb924e17
[libsanitizer] fix lint errors
...
llvm-svn: 198209
2013-12-30 11:12:11 +00:00
Alexander Potapenko
e93e87369f
[libsanitizer] Remove the redundant spaces between '#' and 'define'.
...
These definitions weren't included in any #ifdef blocks, and the spaces were placed inconsistently.
llvm-svn: 198207
2013-12-30 09:22:06 +00:00
Kostya Serebryany
2b5fddbc75
[asan] allow asan to use SizeClassAllocator32 on a 64-bit platform (if SANITIZER_CAN_USE_ALLOCATOR64=0). No functionality change by default is intended
...
llvm-svn: 198044
2013-12-26 13:52:38 +00:00
Alexey Samsonov
23347de6ef
[Sanitizer] Add Symbolizer::GetModuleNameAndOffsetForPC() and use it in LSan suppression matching.
...
This allows us to avoid retrieving file/line info for suppressed modules.
llvm-svn: 198025
2013-12-25 20:15:46 +00:00
Alexey Samsonov
782ad0eb71
[Sanitizer] Remove now unused symbolization functionality from MemoryMappingLayout
...
llvm-svn: 198014
2013-12-25 12:11:06 +00:00
Alexey Samsonov
5746c07629
[Sanitizer] Use different MemoryMappingLayout::DumpListOfModules on Linux and Mac.
...
Make a unit test added in r198004 more robust.
llvm-svn: 198012
2013-12-25 11:29:19 +00:00
Alexey Samsonov
bf658026c1
[Sanitizer] Properly specify linux-only unit test.
...
llvm-svn: 198007
2013-12-25 09:31:42 +00:00
Alexey Samsonov
ca7a213118
[Sanitizer] Don't use MemoryMappingLayout in StackTrace::PrintStack - it is now a responsibility of Symbolizer class.
...
llvm-svn: 198006
2013-12-25 09:29:54 +00:00
Alexey Samsonov
64ffa598ce
[Sanitizer] Teach MemoryMappingLayout to dump all loaded modules.
...
Use this to implement GetListOfModules() on Mac and on Android
(on Linux we use dl_iterate_phdr).
llvm-svn: 198004
2013-12-25 08:39:38 +00:00
Alexey Samsonov
2f392d237c
[Sanitizer] Move OS-specific code for MemoryMappingLayout into separate source files.
...
llvm-svn: 198003
2013-12-25 08:01:16 +00:00
Alexey Samsonov
6322e036aa
[Sanitizer] Replace Symbolizer::IsAvailable and Symbolizer::IsExternalAvailable with Symbolizer::CanReturnFileLineInfo.
...
Remove now redundant checks in symbolizer initialization in TSan and MSan.
llvm-svn: 198000
2013-12-25 07:09:44 +00:00
Evgeniy Stepanov
3d0edea4e1
[sanitizer] Add missing file comment.
...
llvm-svn: 197807
2013-12-20 13:13:49 +00:00
Evgeniy Stepanov
66297cac72
[msan] Wrap indirect calls to REAL(x) in interceptors.
...
llvm-svn: 197806
2013-12-20 12:20:15 +00:00
Evgeniy Stepanov
61628196e4
[msan] Replace wrap_indirect_calls runtime flag with an interface method.
...
llvm-svn: 197799
2013-12-20 11:05:19 +00:00
Alexey Samsonov
f2c7659cf8
[ASan] Get rid of ASan-specific functions for printing stack traces
...
llvm-svn: 197672
2013-12-19 11:25:05 +00:00
Alexey Samsonov
3efe401db0
[Sanitizer] Delete unused StackTrace::PrintStack argument
...
llvm-svn: 197671
2013-12-19 11:14:26 +00:00
Timur Iskhodzhanov
caf7c0cdcd
[Sanitizers] Fix CL compile-time warning in the symbolizer
...
llvm-svn: 197573
2013-12-18 14:39:23 +00:00
Timur Iskhodzhanov
1c84bd64db
[Sanitizer] Implement Symbolizer class on Windows
...
llvm-svn: 197571
2013-12-18 14:29:16 +00:00
Timur Iskhodzhanov
b5f983e4b0
[Sanitizers] Rename Symbolizer::SymbolizeCode to Symbolizer::SymbolizePC
...
llvm-svn: 197569
2013-12-18 14:17:39 +00:00
Alexey Samsonov
33a2cc1e10
Fix gen_dynamic_list.py for Python 3. Patch by Marcoen Hirschberg.
...
llvm-svn: 197493
2013-12-17 12:19:16 +00:00
Alexey Samsonov
25d010a98d
[Sanitizer] Always initialize a Symbolizer (even if 'symbolize' is false).
...
If 'symbolize' flag is not set, we still want to transform virtual address
to module+offset pair in the call to Symbolizer::SymbolizeCode().
See https://code.google.com/p/address-sanitizer/issues/detail?id=251 for
more details.
llvm-svn: 197491
2013-12-17 11:15:39 +00:00
Evgeniy Stepanov
59bb0878e2
[msan] Tweak gethostbyname_r interceptor some more.
...
This is covered by msan_test depending on glibc version and/or resolver setup.
llvm-svn: 197484
2013-12-17 09:13:54 +00:00
Evgeniy Stepanov
43fc44007d
[msan] Fix gethostbyname_r and similar interceptors.
...
*h_errno is written not on success, but on failure.
In fact, it seems like it can be written even when return value signals
success, so we just unpoison it in all cases.
llvm-svn: 197383
2013-12-16 13:24:33 +00:00
Kostya Serebryany
57bfdb080b
[asan] add flag uar_noreserve to use noreserve mmap for fake stack. uar_noreserve=1 will save some memory but also negatively affect performance
...
llvm-svn: 197233
2013-12-13 15:03:49 +00:00
Evgeniy Stepanov
a643a754be
[sanitizer] Disable call wrapping when building for Go.
...
llvm-svn: 197232
2013-12-13 14:58:21 +00:00
Evgeniy Stepanov
879c552dd9
[msan] Wrap indirect calls from sanitizer rtl when running under DR.
...
llvm-svn: 197226
2013-12-13 13:13:46 +00:00
Timur Iskhodzhanov
89a346c2a1
[ASan] Fix StackTrace::SlowUnwindStack on Windows
...
llvm-svn: 196894
2013-12-10 08:30:39 +00:00
Chandler Carruth
3f697191bb
Revert a final patch that was committed without the author contributing
...
it to the LLVM project through the appropriate channels.
This reverts:
r195837: "[Sanitizer] Add rudimentary support for using libbacktrace in ..."
llvm-svn: 196875
2013-12-10 04:40:39 +00:00
Richard Smith
ab788cdc81
Unbreak build by adding an implementation of PopStackFrames function.
...
llvm-svn: 196809
2013-12-09 19:52:39 +00:00
Chandler Carruth
736f9fd229
Revert three patches which were committed without explicit contribution
...
by their authors.
This may break builds where others added code relying on these patches,
but please *do not* revert this commit. Instead, we will prepare patches
which fix the failures.
Reverts the following commits:
r168306: "[asan] support x32 mode in the fast stack unwinder. Patch by H.J. Lu"
r168356: "[asan] more support for powerpc, patch by Peter Bergner"
r196489: "[sanitizer] fix the ppc32 build (patch by Jakub Jelinek)"
llvm-svn: 196802
2013-12-09 19:25:51 +00:00
Alexey Samsonov
9f6218bf44
PR17977: don't assume EOWNERDEAD is always defined
...
Summary: See details in http://llvm.org/bugs/show_bug.cgi?id=17977
Reviewers: dvyukov
Reviewed By: dvyukov
CC: glider, llvm-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D2340
llvm-svn: 196779
2013-12-09 13:21:43 +00:00
Sergey Matveev
9be70fbda9
[sanitizer] Introduce VReport and VPrintf macros and use them in sanitizer code.
...
Instead of "if (common_flags()->verbosity) Report(...)" we now have macros.
llvm-svn: 196497
2013-12-05 12:04:51 +00:00
Kostya Serebryany
f2c93b2973
[sanitizer] fix the ppc32 build (patch by Jakub Jelinek)
...
llvm-svn: 196489
2013-12-05 08:51:48 +00:00
Kostya Serebryany
14e92c2c62
[sanitizer] support toolchains that don't understand CFI directives
...
Summary: Support toolchains that don't understand CFI directives.
Reviewers: dvyukov
Reviewed By: dvyukov
CC: llvm-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D2336
llvm-svn: 196480
2013-12-05 07:44:35 +00:00
Sergey Matveev
7bc300c8fc
[sanitizer] Fix log_path behavior with StopTheWorld.
...
Summary:
Fix race on report_fd/report_fd_pid between the parent process and the
tracer task.
Reviewers: samsonov
Reviewed By: samsonov
CC: llvm-commits, kcc, dvyukov
Differential Revision: http://llvm-reviews.chandlerc.com/D2306
llvm-svn: 196385
2013-12-04 14:37:01 +00:00
Alexey Samsonov
907eb5b630
[Sanitizer] Use more appropriate InternalScopedString in GetCodeRangeForFile
...
llvm-svn: 196264
2013-12-03 09:29:23 +00:00
Alexey Samsonov
8dd33a27c3
[Sanitizer] Fix a bug introduced in r196112. Add a test.
...
llvm-svn: 196263
2013-12-03 09:21:08 +00:00
Sergey Matveev
b748d46019
[sanitizer] Allow InternalMmapVector construction with zero capacity.
...
llvm-svn: 196112
2013-12-02 15:41:04 +00:00
Evgeniy Stepanov
c0378e72d1
[sanitizer] Intercept textdomain.
...
Patch by Alexander Taran.
llvm-svn: 196098
2013-12-02 13:43:26 +00:00
Kostya Serebryany
5774faf5b0
[sanitizer] disable shmctl intercetor in 32-bit -- it is rotten (bug filed)
...
llvm-svn: 195958
2013-11-29 14:09:13 +00:00
Timur Iskhodzhanov
5ca41e3800
Increase the LocatePcInTrace PC threshold now that GET_STACK_TRACE_WITH_PC_AND_BP has grown
...
llvm-svn: 195957
2013-11-29 13:15:25 +00:00
Timur Iskhodzhanov
bbf2ff8193
[ASan] Also print <empty stack> when size==0
...
llvm-svn: 195955
2013-11-29 12:08:59 +00:00
Evgeniy Stepanov
f2cddc3e64
[sanitizer] Disable iconv interceptor in OSX.
...
iconv is defined in an optional DSO, and our interception logic on OSX does not
support that.
llvm-svn: 195919
2013-11-28 14:42:59 +00:00
Evgeniy Stepanov
b56c5cd95e
[sanitizer] Intercept times.
...
llvm-svn: 195918
2013-11-28 14:41:22 +00:00
Evgeniy Stepanov
9c1f8323ae
[sanitizer] Intercept iconv.
...
llvm-svn: 195917
2013-11-28 14:14:48 +00:00
Dmitry Vyukov
8d1eb705c7
tsan: add support for passing file descriptors over UNIX domain sockets
...
tsan was missing new fd's arrived from recvmsg(),
and thus was reporting false positives due to missed synchronization on the fd's
llvm-svn: 195914
2013-11-28 09:09:42 +00:00
Evgeniy Stepanov
b76b687628
[sanitizer] Intercept __xpg_strerror_r.
...
llvm-svn: 195839
2013-11-27 12:29:10 +00:00
Alexey Samsonov
1c256cbcc4
[Sanitizer] Add rudimentary support for using libbacktrace in symbolizer.
...
More steps are needed to actually make it usable:
* sanitizer runtimes should be compiled with -DSANITIZER_LIBBACKTRACE.
* libbacktrace headers should be installed.
* user has to manually link in libbacktrace.a into the executable.
We can easily solve the first two problems in the build system, but
detecting/linking libbacktrace to all the tests we have and end-user programs
is more challenging (and will unlikely work w/o Driver support).
Based on the patch by Jakub Jelinek!
llvm-svn: 195837
2013-11-27 11:46:58 +00:00
Dmitry Vyukov
44be414d69
asan: fix android build
...
android does not seem to have IOCB_CMD_PREADV
llvm-svn: 195835
2013-11-27 11:20:55 +00:00
Dmitry Vyukov
51b35901fd
tsan: minor refactoring
...
use common helper macro
llvm-svn: 195832
2013-11-27 09:59:11 +00:00
Dmitry Vyukov
7bd319cc08
tsan: fix flags parsing
...
- running_on_valgrind was not parsed in some contexts
- refactor code a bit
- add comprehensive tests for flags parsing
llvm-svn: 195831
2013-11-27 09:54:10 +00:00
Dmitry Vyukov
ee882ba4a1
tsan: support synchronization by means of linux aio
...
http://llvm-reviews.chandlerc.com/D2269
llvm-svn: 195830
2013-11-27 09:10:47 +00:00
Alexey Samsonov
d5144879f9
[Sanitizer] Improve external symbolizer behavior.
...
1) Don't start external symbolizer subprocess until we actually try to
symbolize anything.
2) Allow to turn off external symbolizer by providing empty ?SAN_SYMBOLIZER_PATH
environment variable.
llvm-svn: 195771
2013-11-26 16:24:53 +00:00
Lorenzo Martignoni
895454e1e4
Implement a bunch of custom glibc wrappers & corresponding tests
...
llvm-svn: 195749
2013-11-26 11:45:58 +00:00
Timur Iskhodzhanov
895392d03f
[ASan] Use ExitProcess rather than _exit on Windows to avoid calling global dtors etc
...
llvm-svn: 195723
2013-11-26 09:40:39 +00:00
Kostya Serebryany
ccfc0481f1
[sanitizer] Implement TwoLevelByteMap and use it for the internal allocator on 64-bit.
...
Summary:
Implement TwoLevelByteMap and use it for the internal allocator on 64-bit.
This reduces bss on 64-bit by ~8Mb because we don't use FlatByteMap on 64-bits any more.
Dmitry, please check my understanding of atomics.
Reviewers: dvyukov
Reviewed By: dvyukov
CC: samsonov, llvm-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D2259
llvm-svn: 195637
2013-11-25 11:33:41 +00:00
Timur Iskhodzhanov
0d419293e2
[ASan] Follow-up fix: use #if SANITIZER_WINDOWS, not #ifdef
...
llvm-svn: 195625
2013-11-25 07:56:05 +00:00
Timur Iskhodzhanov
25cc3c55cc
[ASan] Un-break the Windows build
...
llvm-svn: 195624
2013-11-25 07:54:55 +00:00
Sergey Matveev
634a75b63e
[sanitizer] Do not clear memory which comes from secondary allocator.
...
Secondary allocator is mmap-based, so the memory is already zeroed.
llvm-svn: 195571
2013-11-24 14:45:38 +00:00
Kostya Serebryany
a2fde9484f
[sanitizer] use 16-byte aligned bzero in performance critical place (mostly for lsan)
...
llvm-svn: 195549
2013-11-23 12:49:19 +00:00
Evgeniy Stepanov
8f944b6672
[sanitizer] Fix kernel headers compatibility on powerpc64.
...
llvm-svn: 195442
2013-11-22 11:01:43 +00:00
Kostya Serebryany
b1118e5952
Call real pthread_attr_getstack instead of the interceptor
...
Summary:
Call real pthread_attr_getstack instead of the interceptor
when we do intercept pthread_attr_getstack.
Reviewers: samsonov, eugenis
Reviewed By: samsonov
CC: llvm-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D2237
llvm-svn: 195441
2013-11-22 10:44:31 +00:00
Evgeniy Stepanov
db643d7678
[sanitizer] Add kernel_stat definitions for arm.
...
llvm-svn: 195436
2013-11-22 10:09:34 +00:00
Evgeniy Stepanov
f3aa5b5257
[sanitizer] Restore perf_event_attr handling.
...
This time in a forward/backward compatible way.
llvm-svn: 195434
2013-11-22 09:32:39 +00:00
Evgeniy Stepanov
c53407de3c
[sanitizer] Fix build.
...
llvm-svn: 195433
2013-11-22 09:26:10 +00:00
Evgeniy Stepanov
39cc337e20
[sanitizer] Change the way we use certain linux kernel headers.
...
Some linux headers are broken on older kernels.
Instead of depending on the constants and types from such headers directly,
we provide our own definitions and then verify them with compile-time
assertions. This makes the dependency on the headers test-only and would allow
switching to some other way of testing on older kernels, or even disable the
tests as the last resort (after all, kernel interfaces are supposed to be
stable).
llvm-svn: 195427
2013-11-22 09:01:50 +00:00
Evgeniy Stepanov
fe8ed4a591
[sanitizer] Add missing header dependencies.
...
llvm-svn: 195425
2013-11-22 08:55:33 +00:00
Peter Collingbourne
f09d5d03fd
Revert r195381, "Implement a bunch of custom glibc wrappers & corresponding tests."
...
It broke a buildbot.
llvm-svn: 195392
2013-11-21 23:48:19 +00:00
Peter Collingbourne
0a14a71061
Implement a bunch of custom glibc wrappers & corresponding tests.
...
- Introduce several new custom glibc wrappers
- Implement some of the not yet implemented wrappers
- Refactor and extend the tests
- Add script to make sure all declare custom glibc wrappers are implemented & tested.
Patch by Lorenzo Martignoni!
Differential Revision: http://llvm-reviews.chandlerc.com/D2234
llvm-svn: 195381
2013-11-21 23:18:03 +00:00
Dmitry Vyukov
70fcec46e9
tsan: remove debug output from test
...
llvm-svn: 195347
2013-11-21 11:50:45 +00:00
Evgeniy Stepanov
0958ecca7e
[msan] Tweak io_submit syscall hook.
...
llvm-svn: 195246
2013-11-20 13:04:23 +00:00
Kostya Serebryany
7b664299f0
[asan] new shadow poison magic for contiguous-container-buffer-overflow, addressed Alexey Samsonov's comments for r195011
...
llvm-svn: 195117
2013-11-19 08:40:07 +00:00
Kostya Serebryany
3d97c2040d
[asan] introduce __sanitizer_annotate_contiguous_container
...
llvm-svn: 195011
2013-11-18 14:02:05 +00:00
Bob Wilson
99d8fa92c3
Remove #include of net/ip_mroute.h for SANITIZER_MAC.
...
This header has not been supported at all for the last 2 major OS X releases.
Removed its include and the capture of related symbols.
<rdar://problem/15303348>
llvm-svn: 194841
2013-11-15 19:13:08 +00:00
Dmitry Vyukov
4bbe6dc8a9
tsan: add support for robust mutexes
...
llvm-svn: 194823
2013-11-15 16:58:12 +00:00
Kostya Serebryany
b41503253b
[asan] helper script to dump/merge coverage data
...
llvm-svn: 194809
2013-11-15 11:51:08 +00:00
Alexey Samsonov
a6e8322fb1
[Sanitizer] Make slow unwinder on Linux more robust
...
llvm-svn: 194805
2013-11-15 10:57:56 +00:00
Bob Wilson
a08e9ac927
Reapply asan coverage changes 194702-194704.
...
I still don't know what is causing our bootstrapped LTO buildbots to fail,
but llvm r194701 seems to be OK and I can't imagine that these changes could
cause the problem.
llvm-svn: 194790
2013-11-15 07:18:15 +00:00
Bob Wilson
abc91eacac
Speculatively revert asan coverage changes 194702-194704.
...
Apple's bootstrapped LTO builds have been failing, and these changes (along
with llvm 194701) are the only things on the blamelist. I will either reapply
these changes or help debug the problem, depending on whether this fixes the
buildbots.
llvm-svn: 194779
2013-11-15 03:26:28 +00:00
Kostya Serebryany
c46f281f83
[asan] unbreak dfsan, which includes sanitizer/common_interface_defs.h into internal sources (although it shoudn't)
...
llvm-svn: 194704
2013-11-14 13:44:43 +00:00
Kostya Serebryany
599f0c1309
[asan] disable CovDump on Windows for now (fails to compile)
...
llvm-svn: 194703
2013-11-14 13:37:54 +00:00
Kostya Serebryany
91c52d9552
[asan] Poor man's coverage that works with ASan (compiler-rt part)
...
llvm-svn: 194702
2013-11-14 13:28:17 +00:00
Alexey Samsonov
4d369187ec
[Sanitizer] Print symbolized stack frame using a single Printf() call.
...
This reduces the number of "write" syscalls performed to print a single
stack frame description, and makes sanitizer output less intermixed with
program output. Also, add a number of unit tests.
llvm-svn: 194686
2013-11-14 09:41:24 +00:00
Alexey Samsonov
498e5906ad
[Sanitizer] Add print_summary runtime flag to disable error summaries (UBSan doesn't need them)
...
llvm-svn: 194685
2013-11-14 08:56:59 +00:00
Alexey Samsonov
cf6ac12e23
[Sanitizer] Use same PC threshold in slow unwinder on all platforms
...
llvm-svn: 194580
2013-11-13 15:20:10 +00:00
Alexey Samsonov
9ff4598225
[ASan] Do not rely on malloc context in allocator reports.
...
Invoke a fatal stack trace unwinder when ASan prints allocator-relevant
error reports (double-free, alloc-dealloc-mismatch, invalid-free).
Thus we'll be able to print complete stack trace even if allocation/free
stacks are not stored (malloc_context_size=0).
Based on the patch by Yuri Gribov!
llvm-svn: 194579
2013-11-13 14:46:58 +00:00
Alexander Potapenko
fa82ba91f9
[ASan] Don't call __asan_init() from certain interceptors on Darwin.
...
Fixes http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58994 , which hadn't
manifested in LLVM because libclang_rt.asan_osx_dynamic.dylib used to depend on
the Foundation framework.
Without that dependency some interceptors may be called from the system
libraries before libSystem_initializer() is called, which lead to assertion
failures in sanitizer_mac.cc (_NSGetEnviron() returns NULL).
To fix the problem we fall back to the original functions in the common
libsanitizer interceptors and the __cxa_atexit() interceptor on Darwin.
This patch also prints a better error message in the case _NSGetEnviron()
returns NULL.
llvm-svn: 194573
2013-11-13 13:34:53 +00:00
Alexey Samsonov
6345150992
[Sanitizer] Specify a default value for each common runtime flag
...
llvm-svn: 194479
2013-11-12 13:59:08 +00:00
Evgeniy Stepanov
90e12a6cb2
[sanitizer] Avoid needless use of stringification (#symver) in INTERCEPT_FUNCTION_VER.
...
This is a workaround for clang-format bug (PR17874).
llvm-svn: 194468
2013-11-12 10:21:52 +00:00
Evgeniy Stepanov
b69699eb58
[sanitizer] Warn if interception fails.
...
This includes a clang-format pass over common interceptors.
llvm-svn: 194372
2013-11-11 11:28:30 +00:00
Timur Iskhodzhanov
e87f5701bb
Remove a FIXME now that I can't reproduce the problem
...
llvm-svn: 194331
2013-11-09 15:01:23 +00:00
Timur Iskhodzhanov
1f1c7ec400
[Sanitizers] Share some stack walking code between Windows and Linux
...
Reviewed at http://llvm-reviews.chandlerc.com/D2126
llvm-svn: 194326
2013-11-09 13:59:12 +00:00
Alexander Potapenko
49034e3c33
[ASan] Add CMake configs for libclang_rt.asan_iossim_dynamic.dylib
...
CMake changes to build the ASan runtime for the iOS simulator. This is a universal library targeting the same architectures as the OSX ASan runtime does, thus the iossim version can't live in the same universal libclang_rt.asan_osx_dynamic.dylib
The difference between the OSX and iossim builds is in the -mios-simulator-version-min and -ios_simulator_version_min flags that tell Clang to compile and link iossim code.
The iossim runtime can only be built on a machine with both Xcode and the iOS Simulator SDK installed. If xcodebuild -version -sdk iphonesimulator Path returns a nonempty path, it is used when compiling and linking the iossim runtime.
llvm-svn: 194199
2013-11-07 10:08:19 +00:00
Alexey Samsonov
b3d939902a
[Sanitizer] Make StackTrace::Unwind the only public way to unwind a stack trace.
...
llvm-svn: 194196
2013-11-07 07:28:33 +00:00
Alexey Samsonov
5d350b2ab6
[Sanitizer] Presumable fix stack trace unwinding on Windows
...
llvm-svn: 194195
2013-11-07 06:53:41 +00:00
Alexey Samsonov
e13f775a63
[Sanitizer] Call Windows unwinder 'slow' and share StackTrace::Unwind across all platforms. No functionality change.
...
llvm-svn: 194193
2013-11-07 06:33:06 +00:00
Kostya Serebryany
82d0679e92
[asan] attempting to fix x32 build (see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59018 )
...
llvm-svn: 194155
2013-11-06 17:47:39 +00:00
Alexey Samsonov
b0bad7b3b8
[ASan] Make sure slow stack unwinder doesn't return empty stacks.
...
llvm-svn: 194107
2013-11-05 23:29:12 +00:00
Evgeniy Stepanov
a6b5eec757
[sanitizer] Intercept strptime.
...
llvm-svn: 193903
2013-11-02 01:01:35 +00:00
Alexey Samsonov
31d4c34433
[Sanitizer] Fix Go build
...
llvm-svn: 193873
2013-11-01 18:00:22 +00:00
Evgeniy Stepanov
7342857825
[sanitizer] Switch to an older version of struct iocb that is found in the latest Android NDK.
...
They are binary compatible, and we don't use any of the new fields anyway.
llvm-svn: 193870
2013-11-01 17:48:35 +00:00
Alexey Samsonov
c5e1b16d0c
[ASan] Kill use_stack_depot runtime flag and stack trace compression routines.
...
llvm-svn: 193868
2013-11-01 17:23:22 +00:00
Alexey Samsonov
5dc6cff06a
[Sanitizer] Unify summary reporting across all sanitizers.
...
This change unifies the summary printing across sanitizers:
now each tool uses specific version of ReportErrorSummary() method,
which deals with symbolization of the top frame and formatting a
summary message. This change modifies the summary line for ASan+LSan mode:
now the summary mentions "AddressSanitizer" instead of "LeakSanitizer".
llvm-svn: 193864
2013-11-01 17:02:14 +00:00
Evgeniy Stepanov
2335879ff1
[sanitizer] Enhance io_submti syscall handler.
...
llvm-svn: 193848
2013-11-01 01:20:39 +00:00
Alexey Samsonov
4708c5912b
Consistently use StackTrace::PrintStack in ASan, LSan and MSan
...
llvm-svn: 193834
2013-11-01 00:19:46 +00:00
Alexey Samsonov
627e2c0dd7
[Sanitizer] Add Symbolizer::AddHooks() and use it in TSan and MSan.
...
Summary:
TSan and MSan need to know if interceptor was called by the
user code or by the symbolizer and use pre- and post-symbolization hooks
for that. Make Symbolizer class responsible for calling these hooks instead.
This would ensure the hooks are only called when necessary (during
in-process symbolization, they are not needed for out-of-process) and
save specific sanitizers from tracing all places in the code where symbolization
will be performed.
Reviewers: eugenis, dvyukov
Reviewed By: eugenis
CC: llvm-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D2067
llvm-svn: 193807
2013-10-31 21:44:07 +00:00
Alexander Potapenko
ac501f0250
[libsanitizer] Define SANITIZER_IOS when building for iOS or iOS simulator.
...
Do not use struct stat64 and struct statfs64 when building for iOS, where __DARWIN_ONLY_64_BIT_INO_T is set to 1.
llvm-svn: 193775
2013-10-31 17:38:18 +00:00
Evgeniy Stepanov
1cb37c4ee5
[sanitizer] Intercept getline, getdelim.
...
llvm-svn: 193730
2013-10-31 01:17:41 +00:00
Alexey Samsonov
3c845b6f1b
[Sanitizer] Update comment in sanitizer_symbolizer.h
...
llvm-svn: 193700
2013-10-30 17:17:35 +00:00
Alexey Samsonov
78928c1d2a
[Sanitizer] Use SpinMutex for Symbolizer initialization (per dvyukov's suggestion)
...
llvm-svn: 193697
2013-10-30 17:05:37 +00:00
Evgeniy Stepanov
60db142d86
[asan] Fix syscall hooks build on Android.
...
llvm-svn: 193670
2013-10-30 00:58:17 +00:00
Evgeniy Stepanov
cbe83ea141
[santiizer] Disable sincos interceptor in OSX.
...
llvm-svn: 193667
2013-10-30 00:32:50 +00:00
Evgeniy Stepanov
0bd1f00ec6
[sanitizer] Intercept drand48_r, lrand48_r.
...
llvm-svn: 193655
2013-10-29 22:25:27 +00:00
Evgeniy Stepanov
bf60342d47
[sanitizer] Intercept sincos, remquo, lgamma, lgamma_r.
...
llvm-svn: 193645
2013-10-29 19:49:35 +00:00
Evgeniy Stepanov
477f8b73a5
[sanitizer] Ptrace syscall handler.
...
llvm-svn: 193633
2013-10-29 17:59:45 +00:00
Dmitry Vyukov
3e8432ee6c
tsan/asan: support pthread_setname_np to set thread names
...
llvm-svn: 193602
2013-10-29 10:30:39 +00:00
Alexey Samsonov
a687d2593f
[Sanitizer] Simplify StackTrace::PrintStack interface: prefer common flags to turn on/off the symbolization
...
llvm-svn: 193587
2013-10-29 05:31:25 +00:00
Evgeniy Stepanov
451c8de2d8
[msan] Intercept shmat.
...
llvm-svn: 193581
2013-10-29 02:48:49 +00:00
Alexey Samsonov
590fe110f9
[Sanitizer] Revert r193501 and properly fix r193448
...
llvm-svn: 193522
2013-10-28 16:31:39 +00:00
Alexey Samsonov
4cc939e6a6
[Sanitizer] Add pthread_attr_getaffinity_np to the list of versioned functions
...
llvm-svn: 193470
2013-10-26 12:54:03 +00:00
Peter Collingbourne
791e65dcfb
Overhaul the symbolizer interface.
...
This moves away from creating the symbolizer object and initializing the
external symbolizer as separate steps. Those steps now always take place
together.
Sanitizers with a legacy requirement to specify their own symbolizer path
should use InitSymbolizer to initialize the symbolizer with the desired
path, and GetSymbolizer to access the symbolizer. Sanitizers with no
such requirement (e.g. UBSan) can use GetOrInitSymbolizer with no need for
initialization.
The symbolizer interface has been made thread-safe (as far as I can
tell) by protecting its member functions with mutexes.
Finally, the symbolizer interface no longer relies on weak externals, the
introduction of which was probably a mistake on my part.
Differential Revision: http://llvm-reviews.chandlerc.com/D1985
llvm-svn: 193448
2013-10-25 23:03:29 +00:00
Peter Collingbourne
8d27910d7d
Rename SpinMutex::AssertHeld to CheckLocked, for consistency with BlockingMutex.
...
llvm-svn: 193447
2013-10-25 23:03:21 +00:00
Evgeniy Stepanov
c0fdb3941c
[sanitizer] Disable tmpnam_r interceptor on Mac.
...
llvm-svn: 193417
2013-10-25 16:22:50 +00:00
Evgeniy Stepanov
94042e1ff2
[sanitizer] Intercept tmpnam, tmpnam_r, tempnam.
...
llvm-svn: 193415
2013-10-25 15:51:48 +00:00
Evgeniy Stepanov
2acb2470f9
[sanitizer] Remove pthread_attr_getstackaddr interceptor.
...
The function is deprecated.
llvm-svn: 193409
2013-10-25 14:27:00 +00:00
Evgeniy Stepanov
7f42c6e007
[sanitizer] Fix Android build.
...
llvm-svn: 193408
2013-10-25 14:24:31 +00:00
Evgeniy Stepanov
c2b6cb0747
[sanitizer] Intercept pthread_attr_get*.
...
llvm-svn: 193405
2013-10-25 13:01:31 +00:00
Evgeniy Stepanov
be9cdbb58c
[sanitizer] Intercept random_r.
...
llvm-svn: 193396
2013-10-25 08:58:13 +00:00
Evgeniy Stepanov
f312b480e2
[sanitizer] Intercept shmctl.
...
llvm-svn: 193348
2013-10-24 14:47:34 +00:00
Peter Collingbourne
50cb32e614
Introduce an operator new for LowLevelAllocator, and convert most users to it.
...
llvm-svn: 193308
2013-10-24 06:23:39 +00:00
Evgeniy Stepanov
55a3ba2281
[sanitizer] Fix OSX build.
...
llvm-svn: 193244
2013-10-23 15:21:10 +00:00
Evgeniy Stepanov
3e6064f9d2
[sanitizer] Intercept ether_* functions.
...
llvm-svn: 193241
2013-10-23 13:57:47 +00:00
Dmitry Vyukov
1ec0fd4071
tsan: parse symbolize/external_symbolizer_path common flags
...
llvm-svn: 193236
2013-10-23 09:00:49 +00:00
Nick Lewycky
622348e693
Hoist the addition of the prefix "SUMMARY: " from
...
__sanitizer_report_error_summary to ReportErrorSummary.
llvm-svn: 193231
2013-10-23 07:45:53 +00:00
Evgeniy Stepanov
0229c09d43
[sanitizer] Intercept initgroups.
...
llvm-svn: 193158
2013-10-22 12:24:48 +00:00
Peter Collingbourne
b745eec4e4
Use internal_memset to initialize this variable.
...
Otherwise, the compiler may use memset in non-optimized builds, which is
forbidden in the nolibc part of the runtime.
llvm-svn: 193098
2013-10-21 18:11:57 +00:00
Kostya Serebryany
b773785a59
[asan] count the size of QuarantineBatch in the total Quarantine size; make QuarantineBatch fit into 8K, fix a MSVC compile warning
...
llvm-svn: 193072
2013-10-21 08:36:10 +00:00
Dmitry Vyukov
1e995d4f3e
tsan: fix strerror interceptor (eliminate false positives)
...
llvm-svn: 193070
2013-10-21 07:40:19 +00:00
Alexander Potapenko
e45ca59fd9
[ASan] fix compilation of sanitizer_platform_limits_posix.cc on OSX.
...
llvm-svn: 192975
2013-10-18 14:16:54 +00:00
Evgeniy Stepanov
78c5730bec
[sanitizer] Fix OSX build some more.
...
llvm-svn: 192967
2013-10-18 12:19:23 +00:00
Evgeniy Stepanov
b4e501c6ec
[sanitizer] Fix OSX build.
...
llvm-svn: 192966
2013-10-18 11:26:02 +00:00
Evgeniy Stepanov
3cb9df042e
[sanitizer] Move statfs/fstatfs to common interceptors and add statvfs/fstatvfs.
...
llvm-svn: 192965
2013-10-18 11:14:16 +00:00
Evgeniy Stepanov
70d5abfba2
[sanitizer] Intercept getmntent, getmntent_r.
...
llvm-svn: 192959
2013-10-18 09:41:43 +00:00
Evgeniy Stepanov
4bbf273173
[sanitizer] Fix unpoisoning of msghdr::msg_name in recvmsg interceptor.
...
llvm-svn: 192886
2013-10-17 11:32:30 +00:00
Kostya Serebryany
f04ae33106
[asan] Fix a deadlock between asan's allocator and lsan
...
Summary:
This fixes a deadlock which happens in lsan
on a large memalign-allocated chunk that resides in lsan's root set.
Reviewers: samsonov, earthdok
Reviewed By: earthdok
CC: llvm-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D1957
llvm-svn: 192885
2013-10-17 11:18:11 +00:00
Alexey Samsonov
bc7c87a8cb
[Sanitizer] Move pthread_cond_signal and pthread_cond_broadcast to common interceptors
...
llvm-svn: 192876
2013-10-17 09:24:03 +00:00
Alexey Samsonov
fa103da867
[Sanitizer] Fix lint checker script on Mac
...
llvm-svn: 192791
2013-10-16 13:38:23 +00:00
Dmitry Vyukov
d8f595edf1
tsan: refactor libignore implementation
...
llvm-svn: 192785
2013-10-16 11:28:12 +00:00
Alexey Samsonov
edecc38395
Make some pthread_mutex_* and pthread_cond_* interceptors common.
...
Reviewers: eugenis, dvyukov
Reviewed By: dvyukov
CC: llvm-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D1937
llvm-svn: 192774
2013-10-16 08:20:31 +00:00
Dmitry Vyukov
21e99319f4
tsan: be silent if verbosity=0
...
Currently tests fail with:
Check failed: 'AAA' == 'AAA ==26017==Could not detach from thread 361395 (errno 3).'
llvm-svn: 192711
2013-10-15 15:35:56 +00:00
Dmitry Vyukov
7502a3a90c
tsan: use verbosity flag in sanitizer_common code directly
...
now it's available from common_flags()
llvm-svn: 192705
2013-10-15 14:12:26 +00:00
Dmitry Vyukov
45baa00dcb
tsan: actually parse verbofity flag
...
llvm-svn: 192704
2013-10-15 14:00:28 +00:00
Dmitry Vyukov
52ca74ec61
tsan: move verbosity flag to CommonFlags
...
llvm-svn: 192701
2013-10-15 13:28:51 +00:00
Dmitry Vyukov
a55db0a90f
tsan: do not leave trash source files in source dir
...
llvm-svn: 192700
2013-10-15 13:23:29 +00:00
Dmitry Vyukov
347f1a5ee0
tsan: refactor overly-complex logical condition
...
llvm-svn: 192698
2013-10-15 13:04:42 +00:00
Dmitry Vyukov
f54835f768
tsan: move kernel struct definition from sanitizer_linux.h to sanitizer_platform_limits_posix.h
...
llvm-svn: 192695
2013-10-15 12:57:59 +00:00
Dmitry Vyukov
7ac0b2b0e1
tsan: use sanitizer::CommonFlags in tsan
...
llvm-svn: 192692
2013-10-15 12:25:29 +00:00
Sergey Matveev
14b9924c7b
Clean up StopTheWorld code after r192686.
...
Remove outdated comments. Also remove code that handled an issue in libc's
sigaction(), which we don't use anymore.
llvm-svn: 192689
2013-10-15 11:54:38 +00:00
Dmitry Vyukov
6f61206f55
tsan: resolve symlinks for called_from_lib suppressions
...
llvm-svn: 192688
2013-10-15 11:34:59 +00:00
Dmitry Vyukov
59c850de6d
tsan: implement internal syscall-based versions of sigaction/sigprocmask
...
use them in stoptheworld
fixes applications that intercept sigaction/sigprocmask
llvm-svn: 192686
2013-10-15 11:31:51 +00:00
Sergey Matveev
43d90cbd86
[lsan] Support ASan's stack-use-after-return mode in LSan.
...
Treat the fake stack as live memory.
llvm-svn: 192593
2013-10-14 14:04:50 +00:00
Dmitry Vyukov
4314e319ab
tsan: allow to override OnPrint() callback in Go runtime
...
llvm-svn: 192576
2013-10-14 09:52:40 +00:00
Alexey Samsonov
c7ae7529e7
[Sanitizer] Return implementation of StackTrace::CopyFrom to header
...
llvm-svn: 192574
2013-10-14 07:36:10 +00:00
Alexey Samsonov
7f5823844a
[Sanitizer] Remove StackTrace::max_depth field
...
llvm-svn: 192534
2013-10-12 12:40:47 +00:00
Alexey Samsonov
c129e65661
[Sanitizer] Turn GetStackTrace() into StackTrace::Unwind()
...
llvm-svn: 192533
2013-10-12 12:23:00 +00:00
Sergey Matveev
53e61b1acf
[sanitizer] Define kPthreadDestructorIterations on POSIX systems.
...
llvm-svn: 192453
2013-10-11 14:19:14 +00:00
Dmitry Vyukov
6dc0775f1f
tsan: catch more races on file descriptors
...
llvm-svn: 192452
2013-10-11 14:13:11 +00:00
Sergey Matveev
6c5e943953
[sanitizer] Ninja style fix to r192442.
...
llvm-svn: 192443
2013-10-11 12:15:45 +00:00
Sergey Matveev
dc75cf3368
[sanitizer] Move the PTHREAD_DESTRUCTOR_ITERATIONS constant to sanitizer_linux.h.
...
Add a test.
llvm-svn: 192442
2013-10-11 12:09:49 +00:00
Alexey Samsonov
0cd96165f1
[Sanitizer] StackTrace: kill CopyTo and reimplement CopyFrom
...
llvm-svn: 192441
2013-10-11 11:14:20 +00:00
Alexey Samsonov
9d8385453b
[Sanitizer] Simplify StackTrace::FastUnwindStack interface and fix a bug with one-frame stack traces
...
llvm-svn: 192428
2013-10-11 09:58:30 +00:00
Sergey Matveev
6f7fb43ad3
[sanitizer] Fix the parent liveness check in StopTheWorld.
...
Comparing the parent PID with 1 isn't sufficient to ensure the parent is alive,
because of prctl(PR_SET_CHILD_SUBREAPER, ...). Compare with the real parent's
recorded PID instead.
llvm-svn: 192295
2013-10-09 13:36:20 +00:00
Sergey Matveev
adef754297
[sanitizer] Fix deadlock in StopTheWorld.
...
The tracer thread in StopTheWorld could wait on a mutex forever if the parent
process died before unlocking it. Use PR_SET_PDEATHSIG so that the parent would
kill the child in this scenario.
llvm-svn: 192210
2013-10-08 18:01:03 +00:00
Sergey Matveev
398fb700a2
[sanitizer] Do not break the CFI unwind chain in clone().
...
Fixes build on clang 3.2, which doesn't support cfi_undefined. This change
doesn't seem to break the slow unwinder. Even if it does, the worst thing that
could happen is that we would not see a backtrace when a fatal error happens
under StopTheWorld.
llvm-svn: 192196
2013-10-08 16:38:39 +00:00
Alexey Samsonov
f2b811a618
Refactor the usage of strip_path_prefix option and make it more consistent across sanitizers
...
llvm-svn: 191943
2013-10-04 08:55:03 +00:00
Dmitry Vyukov
c967d2f49c
asan/msan/tsan: fix broken linux syscalls
...
Currently the following source code:
u64 NanoTime() {
kernel_timeval tv = {};
internal_syscall(__NR_gettimeofday, &tv, 0);
return (u64)tv.tv_sec * 1000*1000*1000 + tv.tv_usec * 1000;
}
generates the following assembly:
Dump of assembler code for function __sanitizer::NanoTime():
=> 0x00007ff30657d380 <+0>: lea -0x10(%rsp),%rdi
0x00007ff30657d385 <+5>: xor %esi,%esi
0x00007ff30657d387 <+7>: mov $0x60,%eax
0x00007ff30657d38c <+12>: syscall
0x00007ff30657d38e <+14>: mov $0,%eax
0x00007ff30657d393 <+19>: retq
with this change:
Dump of assembler code for function __sanitizer::NanoTime():
=> 0x00007faab834f380 <+0>: movq $0x0,-0x10(%rsp)
0x00007faab834f389 <+9>: movq $0x0,-0x8(%rsp)
0x00007faab834f392 <+18>: lea -0x10(%rsp),%rdi
0x00007faab834f397 <+23>: xor %esi,%esi
0x00007faab834f399 <+25>: mov $0x60,%eax
0x00007faab834f39e <+30>: syscall
0x00007faab834f3a0 <+32>: mov -0x8(%rsp),%rax
0x00007faab834f3a5 <+37>: mov -0x10(%rsp),%rcx
0x00007faab834f3aa <+42>: imul $0x3e8,%rax,%rdx
0x00007faab834f3b1 <+49>: imul $0x3b9aca00,%rcx,%rax
0x00007faab834f3b8 <+56>: add %rdx,%rax
0x00007faab834f3bb <+59>: retq
llvm-svn: 191908
2013-10-03 16:53:50 +00:00
Dmitry Vyukov
fdfb2ade8f
asan/msan/tsan: move _exit interceptor to common interceptors
...
llvm-svn: 191903
2013-10-03 15:22:29 +00:00
Dmitry Vyukov
83ebd022d7
tsan: fix false positive in localtime()
...
llvm-svn: 191899
2013-10-03 14:12:09 +00:00
Dmitry Vyukov
5ba736457c
tsan: ignore interceptors coming from specified libraries
...
LibIgnore allows to ignore all interceptors called from a particular set
of dynamic libraries. LibIgnore remembers all "called_from_lib" suppressions
from the provided SuppressionContext; finds code ranges for the libraries;
and checks whether the provided PC value belongs to the code ranges.
Also make malloc and friends interceptors use SCOPED_INTERCEPTOR_RAW instead of
SCOPED_TSAN_INTERCEPTOR, because if they are called from an ignored lib,
then must call our internal allocator instead of libc malloc.
llvm-svn: 191897
2013-10-03 13:37:17 +00:00
Evgeniy Stepanov
c907a60ffb
[sanitizer] Fix localtime and gmtime interceptors to clean tm->tm_zone.
...
llvm-svn: 191827
2013-10-02 14:30:03 +00:00
Dmitry Vyukov
945397157b
tsan: fix the following compiler warning
...
sanitizer_common_interceptors.inc:1142:53: warning: invoking macro INTERCEPTOR argument 3: empty macro arguments are undefined in ISO C90 and ISO C++98 [enabled by default]
llvm-svn: 191822
2013-10-02 14:04:23 +00:00
Evgeniy Stepanov
01781722b6
[sanitizer] Intercept backtrace, backtrace_symbols.
...
llvm-svn: 191516
2013-09-27 12:40:23 +00:00
Dmitry Vyukov
e435f94b69
tsan: fix scanf interceptor
...
llvm-svn: 191445
2013-09-26 18:38:54 +00:00
Evgeniy Stepanov
8f27f6b549
[sanitizer] A bunch of libc interceptors.
...
sigwait
sigwaitinfo
sigtimedwait
sigemptyset
sigfillset
sigpending
sigprocmask
llvm-svn: 191374
2013-09-25 14:47:43 +00:00
Alexey Samsonov
4fc53e4c06
[Sanitizer] Don't include wordexp.h on Android
...
llvm-svn: 191358
2013-09-25 07:41:46 +00:00
Evgeniy Stepanov
2761ee0409
[sanitizer] Intercept wordexp.
...
llvm-svn: 191305
2013-09-24 14:38:22 +00:00
Dmitry Vyukov
4e9c091dd7
tsan: allow to obtain code range for a particular module
...
this is required to ignore interceptors when called from the module
llvm-svn: 191149
2013-09-21 21:41:08 +00:00
Dmitry Vyukov
1da6b4d5c8
tsan: intercept fork syscall
...
llvm-svn: 191144
2013-09-21 20:59:04 +00:00
Dmitry Vyukov
3d15bcca1d
tsan: do not try to use builtin atomic operations
...
see the comment in code
llvm-svn: 191132
2013-09-21 04:59:02 +00:00
Dmitry Vyukov
a182592aa0
tsan: intercept close syscall
...
llvm-svn: 191129
2013-09-21 03:47:35 +00:00
Alexander Potapenko
d1bae72e39
[libsanitizer] Pass an explicit template to mktemp. Running mktemp without a template doesn't work on Darwin.
...
llvm-svn: 191084
2013-09-20 11:29:44 +00:00
Alexey Samsonov
29d7be1f68
[Sanitizer] Add pthread_cond_init to the list of versioned functions
...
llvm-svn: 191078
2013-09-20 08:37:57 +00:00