diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2017-01-09 21:23:31 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2017-01-09 21:23:31 +0000 |
commit | 3bce7d2fca357e6a1db9eff4a1c58545a3020f1b (patch) | |
tree | 20e806d15042e772e93336ab9b7c68c6d2e76f06 /lib/tsan/rtl | |
parent | 91d212a4a6c2c87a6e09bc8a5e665b011022aaaf (diff) | |
download | src-3bce7d2fca357e6a1db9eff4a1c58545a3020f1b.tar.gz src-3bce7d2fca357e6a1db9eff4a1c58545a3020f1b.zip |
Vendor import of compiler-rt trunk r291476:vendor/compiler-rt/compiler-rt-trunk-r291476
Notes
Notes:
svn path=/vendor/compiler-rt/dist/; revision=311822
svn path=/vendor/compiler-rt/compiler-rt-trunk-r291476/; revision=311823; tag=vendor/compiler-rt/compiler-rt-trunk-r291476
Diffstat (limited to 'lib/tsan/rtl')
-rw-r--r-- | lib/tsan/rtl/tsan.syms.extra | 1 | ||||
-rw-r--r-- | lib/tsan/rtl/tsan_interface.cc | 4 | ||||
-rw-r--r-- | lib/tsan/rtl/tsan_interface.h | 2 | ||||
-rw-r--r-- | lib/tsan/rtl/tsan_report.cc | 2 | ||||
-rw-r--r-- | lib/tsan/rtl/tsan_rtl.cc | 2 |
5 files changed, 11 insertions, 0 deletions
diff --git a/lib/tsan/rtl/tsan.syms.extra b/lib/tsan/rtl/tsan.syms.extra index 1bc1d93298d3..22dfde914136 100644 --- a/lib/tsan/rtl/tsan.syms.extra +++ b/lib/tsan/rtl/tsan.syms.extra @@ -1,4 +1,5 @@ __tsan_init +__tsan_flush_memory __tsan_read* __tsan_write* __tsan_vptr* diff --git a/lib/tsan/rtl/tsan_interface.cc b/lib/tsan/rtl/tsan_interface.cc index 809d2abeb0be..ad9b1fe9a585 100644 --- a/lib/tsan/rtl/tsan_interface.cc +++ b/lib/tsan/rtl/tsan_interface.cc @@ -28,6 +28,10 @@ void __tsan_init() { Initialize(cur_thread()); } +void __tsan_flush_memory() { + FlushShadowMemory(); +} + void __tsan_read16(void *addr) { MemoryRead(cur_thread(), CALLERPC, (uptr)addr, kSizeLog8); MemoryRead(cur_thread(), CALLERPC, (uptr)addr + 8, kSizeLog8); diff --git a/lib/tsan/rtl/tsan_interface.h b/lib/tsan/rtl/tsan_interface.h index bae01bd707d7..4e342a58a066 100644 --- a/lib/tsan/rtl/tsan_interface.h +++ b/lib/tsan/rtl/tsan_interface.h @@ -32,6 +32,8 @@ extern "C" { // before any instrumented code is executed and before any call to malloc. SANITIZER_INTERFACE_ATTRIBUTE void __tsan_init(); +SANITIZER_INTERFACE_ATTRIBUTE void __tsan_flush_memory(); + SANITIZER_INTERFACE_ATTRIBUTE void __tsan_read1(void *addr); SANITIZER_INTERFACE_ATTRIBUTE void __tsan_read2(void *addr); SANITIZER_INTERFACE_ATTRIBUTE void __tsan_read4(void *addr); diff --git a/lib/tsan/rtl/tsan_report.cc b/lib/tsan/rtl/tsan_report.cc index 156876e5c22a..07fd41208eb7 100644 --- a/lib/tsan/rtl/tsan_report.cc +++ b/lib/tsan/rtl/tsan_report.cc @@ -358,6 +358,8 @@ void PrintReport(const ReportDesc *rep) { ReportErrorSummary(rep_typ_str, frame->info); } + if (common_flags()->print_module_map == 2) PrintModuleMap(); + Printf("==================\n"); } diff --git a/lib/tsan/rtl/tsan_rtl.cc b/lib/tsan/rtl/tsan_rtl.cc index 804f3cf64ee8..bfb835889c7a 100644 --- a/lib/tsan/rtl/tsan_rtl.cc +++ b/lib/tsan/rtl/tsan_rtl.cc @@ -404,6 +404,8 @@ void Initialize(ThreadState *thr) { int Finalize(ThreadState *thr) { bool failed = false; + if (common_flags()->print_module_map == 1) PrintModuleMap(); + if (flags()->atexit_sleep_ms > 0 && ThreadCount(thr) > 1) SleepForMillis(flags()->atexit_sleep_ms); |