summaryrefslogtreecommitdiffstats
path: root/compiler-rt
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2013-09-03 11:43:04 +0000
committerDmitry Vyukov <dvyukov@google.com>2013-09-03 11:43:04 +0000
commited93fbf93ec5ef622cbb11ff573e71d3c5fdcdc4 (patch)
tree5ce912d37fda64018d2c7a5aecdb6be01c277b56 /compiler-rt
parent94377c337bdbaf0785ffeef2e802bcec758fb305 (diff)
downloadbcm5719-llvm-ed93fbf93ec5ef622cbb11ff573e71d3c5fdcdc4.tar.gz
bcm5719-llvm-ed93fbf93ec5ef622cbb11ff573e71d3c5fdcdc4.zip
tsan: add suppressions for true/false positives in standard libraries
llvm-svn: 189791
Diffstat (limited to 'compiler-rt')
-rw-r--r--compiler-rt/lib/tsan/rtl/tsan_suppressions.cc14
1 files changed, 14 insertions, 0 deletions
diff --git a/compiler-rt/lib/tsan/rtl/tsan_suppressions.cc b/compiler-rt/lib/tsan/rtl/tsan_suppressions.cc
index 69e616c135e..4606c2656cc 100644
--- a/compiler-rt/lib/tsan/rtl/tsan_suppressions.cc
+++ b/compiler-rt/lib/tsan/rtl/tsan_suppressions.cc
@@ -21,6 +21,19 @@
#include "tsan_mman.h"
#include "tsan_platform.h"
+// Suppressions for true/false positives in standard libraries.
+static const char *const std_suppressions =
+// Libstdc++ 4.4 has data races in std::string.
+// See http://crbug.com/181502 for an example.
+"race:^_M_rep$\n"
+"race:^_M_is_leaked$\n"
+
+// False positive when using std <thread>.
+// Happens because we miss atomic synchronization in libstdc++.
+// See http://llvm.org/bugs/show_bug.cgi?id=17066 for details.
+"race:std::_Sp_counted_ptr_inplace<std::thread::_Impl\n"
+;
+
// Can be overriden in frontend.
#ifndef TSAN_GO
extern "C" const char *WEAK __tsan_default_suppressions() {
@@ -72,6 +85,7 @@ void InitializeSuppressions() {
#ifndef TSAN_GO
supp = __tsan_default_suppressions();
g_ctx->Parse(supp);
+ g_ctx->Parse(std_suppressions);
#endif
}
OpenPOWER on IntegriCloud