summaryrefslogtreecommitdiffstats
path: root/compiler-rt/lib
diff options
context:
space:
mode:
authorViktor Kutuzov <vkutuzov@accesssoftek.com>2015-03-27 14:12:28 +0000
committerViktor Kutuzov <vkutuzov@accesssoftek.com>2015-03-27 14:12:28 +0000
commiteff2d98eccd782b1a76e4a326d02c6fd4dcb2fed (patch)
tree7b9d280107ce72c964c93fdf666322e853c87771 /compiler-rt/lib
parentfe25759022ff190eb4519689d6f0e3b04eb38b2c (diff)
downloadbcm5719-llvm-eff2d98eccd782b1a76e4a326d02c6fd4dcb2fed.tar.gz
bcm5719-llvm-eff2d98eccd782b1a76e4a326d02c6fd4dcb2fed.zip
[Tsan] Do not sanitize memset() and other functions during initialization
Differential Revision: http://reviews.llvm.org/D8544 llvm-svn: 233378
Diffstat (limited to 'compiler-rt/lib')
-rw-r--r--compiler-rt/lib/tsan/rtl/tsan_interceptors.cc12
1 files changed, 9 insertions, 3 deletions
diff --git a/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc b/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc
index c45bcdc1ced..e265aab6545 100644
--- a/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc
+++ b/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc
@@ -156,6 +156,9 @@ const int SA_SIGINFO = 4;
const int SIG_SETMASK = 2;
#endif
+#define COMMON_INTERCEPTOR_NOTHING_IS_INITIALIZED \
+ (!cur_thread()->is_inited)
+
namespace std {
struct nothrow_t {};
} // namespace std
@@ -663,14 +666,17 @@ TSAN_INTERCEPTOR(uptr, strlen, const char *s) {
}
TSAN_INTERCEPTOR(void*, memset, void *dst, int v, uptr size) {
- SCOPED_TSAN_INTERCEPTOR(memset, dst, v, size);
- MemoryAccessRange(thr, pc, (uptr)dst, size, true);
+ // On FreeBSD we get here from libthr internals on thread initialization.
+ if (!COMMON_INTERCEPTOR_NOTHING_IS_INITIALIZED) {
+ SCOPED_TSAN_INTERCEPTOR(memset, dst, v, size);
+ MemoryAccessRange(thr, pc, (uptr)dst, size, true);
+ }
return internal_memset(dst, v, size);
}
TSAN_INTERCEPTOR(void*, memcpy, void *dst, const void *src, uptr size) {
// On FreeBSD we get here from libthr internals on thread initialization.
- if (cur_thread()->is_inited) {
+ if (!COMMON_INTERCEPTOR_NOTHING_IS_INITIALIZED) {
SCOPED_TSAN_INTERCEPTOR(memcpy, dst, src, size);
MemoryAccessRange(thr, pc, (uptr)dst, size, true);
MemoryAccessRange(thr, pc, (uptr)src, size, false);
OpenPOWER on IntegriCloud