Kostya Serebryany
0f53d9a2ee
[asan/tracing] extend the test a bit more, simplify the tracing code, add a guard page to trace array, fix the trace IDs before dumping
...
llvm-svn: 225108
2015-01-03 02:07:58 +00:00
Kostya Serebryany
d421db05bb
[asan] simplify the tracing code, make it use the same guard variables as coverage
...
llvm-svn: 225103
2015-01-03 00:54:43 +00:00
Kostya Serebryany
77c5c1a66d
[asan] fix coverage between fork() and exec(): reinitialize the guards after fork()
...
llvm-svn: 225016
2014-12-30 23:16:12 +00:00
Kostya Serebryany
a7ee2734cf
[asan] add flag coverage_pcs. When false, the coverage is not dumped as PCs. Useful e.g. if the user only needs coverage is bitset
...
llvm-svn: 225002
2014-12-30 19:55:04 +00:00
Kostya Serebryany
aa185bfc4b
[asan] change _sanitizer_cov_module_init to accept int* instead of int**
...
llvm-svn: 224999
2014-12-30 19:29:28 +00:00
Evgeniy Stepanov
103084691d
[asan] Bump coverage size limit on 32-bit platforms.
...
This increases the limit from 4M locations to 16M, reserving
64Mb virtual memory. Chrome has >5M unique coverage locations with coverage=3.
llvm-svn: 224855
2014-12-26 13:54:11 +00:00
Evgeniy Stepanov
05dc4be0dc
[asan] Allow enabling coverage at activation.
...
This is a re-commit of r224838 + r224839, previously reverted in r224850.
Test failures were likely (still can not reproduce) caused by two lit tests
using the same name for an intermediate build target.
llvm-svn: 224853
2014-12-26 12:32:32 +00:00
Evgeniy Stepanov
f8c7e25560
Revert r224838, r224839.
...
Flaky failures on the build bots.
llvm-svn: 224850
2014-12-26 10:19:56 +00:00
Evgeniy Stepanov
300d29a75d
[asan] Disable __sanitizer_cov_dump registration on Windows.
...
Looks like we can't use atexit() during ASan initialization on Windows.
llvm-svn: 224839
2014-12-25 15:11:00 +00:00
Evgeniy Stepanov
be9a53fec6
[asan] Allow enabling coverage at activation.
...
llvm-svn: 224838
2014-12-25 14:26:45 +00:00
Evgeniy Stepanov
ca9e045570
[sanitizer] Fix off-by-8x in direct coverage.
...
File mapping offset was calculated by offsetting (uptr *) instead of (char *).
llvm-svn: 224821
2014-12-24 13:57:11 +00:00
Kostya Serebryany
9fdeb37bd3
[asan] change the coverage collection scheme so that we can easily emit coverage for the entire process as a single bit set, and if coverage_bitset=1 actually emit that bitset
...
llvm-svn: 224789
2014-12-23 22:32:17 +00:00
Kostya Serebryany
baae9d2df1
[sanitizer] fix a performance regression in sanitizer coverage: move a small perf-critical function to a header. ALso set the coverage guard to 1 before the early return from CoverageData::Add
...
llvm-svn: 224660
2014-12-20 01:45:28 +00:00
Alexey Samsonov
656c29b08f
Replace InternalScopedBuffer<char> with InternalScopedString where applicable.
...
Summary: No functionality change.
Test Plan: make check-all
Reviewers: kcc
Reviewed By: kcc
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D6472
llvm-svn: 223164
2014-12-02 22:20:11 +00:00
Alexey Samsonov
4cc76cb872
[Sanitizer] Bump kMaxPathLength to 4096 and use it more extensively instead of hardcoded constants
...
llvm-svn: 222803
2014-11-26 01:48:39 +00:00
Kostya Serebryany
4cadd4afa0
[asan/coverage] change the way asan coverage instrumentation is done: instead of setting the guard to 1 in the generated code, pass the pointer to guard to __sanitizer_cov and set it there. No user-visible functionality change expected
...
llvm-svn: 222675
2014-11-24 18:49:53 +00:00
Kostya Serebryany
c9d251e4d1
[asan] initial support for experimental basic-block tracing; also add tests for various levels of -fsanitize-coverage
...
llvm-svn: 222291
2014-11-19 00:24:11 +00:00
Kostya Serebryany
183cb6e35d
[asan] add interface function __sanitizer_get_total_unique_coverage; useful for coverage-guided in-process fuzzers
...
llvm-svn: 222060
2014-11-14 23:15:55 +00:00
Alexey Samsonov
4925fd4b05
Fix -Wcast-qual warnings in sanitizers
...
llvm-svn: 221936
2014-11-13 22:40:59 +00:00
Alexey Samsonov
26ca05ad96
[Sanitizer] Get rid of unnecessary allocations in StripModuleName. NFC.
...
llvm-svn: 221287
2014-11-04 19:34:29 +00:00
Kostya Serebryany
40aa4a26d1
[asan] increase the initial buffer size in caller-callee dumper
...
llvm-svn: 220991
2014-10-31 19:49:46 +00:00
Kostya Serebryany
b6eae0c2bc
[asan] run-time part of the caller-callee coverage instrumentation
...
llvm-svn: 220975
2014-10-31 17:19:11 +00:00
Kostya Serebryany
fb5d6852c6
[asan] remove debug print
...
llvm-svn: 217101
2014-09-03 22:58:03 +00:00
Evgeniy Stepanov
dfa5439652
[asan] Fix mmap-ed coverage with coverage=0.
...
llvm-svn: 210655
2014-06-11 15:11:26 +00:00
Evgeniy Stepanov
38c228a842
[asancov] Faster coverage in memory-mapped mode.
...
Use caller pc of __sanitizer_cov_module_init to figure out
when 2 sequential calls are from the same module; skip
.sancov.map file update in this case.
llvm-svn: 210267
2014-06-05 14:38:53 +00:00
Evgeniy Stepanov
fe18102649
[sancov] Handle fork.
...
Reset coverage data on fork().
For memory-mapped mode (coverage_direct=1) this helps avoid loss of data
(before this change two processes would write to the same file simultaneously).
For normal mode, this reduces coverage dump size, because PCs from the parent
process are no longer inherited by the child.
llvm-svn: 210180
2014-06-04 12:13:54 +00:00
Evgeniy Stepanov
ce98452516
[sancov] Delay opening dump file until the first module constructor.
...
llvm-svn: 210109
2014-06-03 15:27:15 +00:00
Evgeniy Stepanov
bb2fc7e4bb
[sancov] Fix map update logic on Android.
...
dlopen()/dlclose() are not interceptable on Android,
so we update .sancov.map in module constructor callbacks.
llvm-svn: 210098
2014-06-03 12:15:43 +00:00
Evgeniy Stepanov
fa5c0750f0
[sanitizer] Add coverage_dir flag.
...
llvm-svn: 209815
2014-05-29 14:33:16 +00:00
Evgeniy Stepanov
567e516015
[asancov] Write coverage directly to a memory-mapped file.
...
This way does not require a __sanitizer_cov_dump() call. That's
important on Android, where apps can be killed at arbitrary time.
We write raw PCs to disk instead of module offsets; we also write
memory layout to a separate file. This increases dump size by the
factor of 2 on 64-bit systems.
llvm-svn: 209653
2014-05-27 12:37:52 +00:00