[llvm-commits] [compiler-rt] r173345 - in /compiler-rt/trunk/lib/tsan: rtl/tsan_suppressions.cc rtl/tsan_suppressions.h tests/unit/tsan_suppressions_test.cc

Dmitry Vyukov dvyukov at google.com
Thu Jan 24 05:50:11 PST 2013


Author: dvyukov
Date: Thu Jan 24 07:50:10 2013
New Revision: 173345

URL: http://llvm.org/viewvc/llvm-project?rev=173345&view=rev
Log:
tsan: allow a front-end to provide default suppressions

Modified:
    compiler-rt/trunk/lib/tsan/rtl/tsan_suppressions.cc
    compiler-rt/trunk/lib/tsan/rtl/tsan_suppressions.h
    compiler-rt/trunk/lib/tsan/tests/unit/tsan_suppressions_test.cc

Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_suppressions.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_suppressions.cc?rev=173345&r1=173344&r2=173345&view=diff
==============================================================================
--- compiler-rt/trunk/lib/tsan/rtl/tsan_suppressions.cc (original)
+++ compiler-rt/trunk/lib/tsan/rtl/tsan_suppressions.cc Thu Jan 24 07:50:10 2013
@@ -19,6 +19,13 @@
 #include "tsan_mman.h"
 #include "tsan_platform.h"
 
+// Can be overriden in frontend.
+#ifndef TSAN_GO
+extern "C" const char *WEAK __tsan_default_suppressions() {
+  return 0;
+}
+#endif
+
 namespace __tsan {
 
 static Suppression *g_suppressions;
@@ -80,8 +87,7 @@
   return true;
 }
 
-Suppression *SuppressionParse(const char* supp) {
-  Suppression *head = 0;
+Suppression *SuppressionParse(Suppression *head, const char* supp) {
   const char *line = supp;
   while (line) {
     while (line[0] == ' ' || line[0] == '\t')
@@ -130,8 +136,12 @@
 }
 
 void InitializeSuppressions() {
-  char *supp = ReadFile(flags()->suppressions);
-  g_suppressions = SuppressionParse(supp);
+  const char *supp = ReadFile(flags()->suppressions);
+  g_suppressions = SuppressionParse(0, supp);
+#ifndef TSAN_GO
+  supp = __tsan_default_suppressions();
+  g_suppressions = SuppressionParse(0, supp);
+#endif
 }
 
 uptr IsSuppressed(ReportType typ, const ReportStack *stack) {
@@ -152,7 +162,8 @@
     for (Suppression *supp = g_suppressions; supp; supp = supp->next) {
       if (stype == supp->type &&
           (SuppressionMatch(supp->templ, frame->func) ||
-          SuppressionMatch(supp->templ, frame->file))) {
+           SuppressionMatch(supp->templ, frame->file) ||
+           SuppressionMatch(supp->templ, frame->module))) {
         DPrintf("ThreadSanitizer: matched suppression '%s'\n", supp->templ);
         return frame->pc;
       }

Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_suppressions.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_suppressions.h?rev=173345&r1=173344&r2=173345&view=diff
==============================================================================
--- compiler-rt/trunk/lib/tsan/rtl/tsan_suppressions.h (original)
+++ compiler-rt/trunk/lib/tsan/rtl/tsan_suppressions.h Thu Jan 24 07:50:10 2013
@@ -35,7 +35,7 @@
   char *templ;
 };
 
-Suppression *SuppressionParse(const char* supp);
+Suppression *SuppressionParse(Suppression *head, const char* supp);
 bool SuppressionMatch(char *templ, const char *str);
 
 }  // namespace __tsan

Modified: compiler-rt/trunk/lib/tsan/tests/unit/tsan_suppressions_test.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/tests/unit/tsan_suppressions_test.cc?rev=173345&r1=173344&r2=173345&view=diff
==============================================================================
--- compiler-rt/trunk/lib/tsan/tests/unit/tsan_suppressions_test.cc (original)
+++ compiler-rt/trunk/lib/tsan/tests/unit/tsan_suppressions_test.cc Thu Jan 24 07:50:10 2013
@@ -20,7 +20,7 @@
 
 TEST(Suppressions, Parse) {
   ScopedInRtl in_rtl;
-  Suppression *supp0 = SuppressionParse(
+  Suppression *supp0 = SuppressionParse(0,
     "race:foo\n"
     " 	race:bar\n"  // NOLINT
     "race:baz	 \n"  // NOLINT
@@ -45,7 +45,7 @@
 
 TEST(Suppressions, Parse2) {
   ScopedInRtl in_rtl;
-  Suppression *supp0 = SuppressionParse(
+  Suppression *supp0 = SuppressionParse(0,
     "  	# first line comment\n"  // NOLINT
     " 	race:bar 	\n"  // NOLINT
     "race:baz* *baz\n"
@@ -64,7 +64,7 @@
 
 TEST(Suppressions, Parse3) {
   ScopedInRtl in_rtl;
-  Suppression *supp0 = SuppressionParse(
+  Suppression *supp0 = SuppressionParse(0,
     "# last suppression w/o line-feed\n"
     "race:foo\n"
     "race:bar"
@@ -81,7 +81,7 @@
 
 TEST(Suppressions, ParseType) {
   ScopedInRtl in_rtl;
-  Suppression *supp0 = SuppressionParse(
+  Suppression *supp0 = SuppressionParse(0,
     "race:foo\n"
     "thread:bar\n"
     "mutex:baz\n"





More information about the llvm-commits mailing list