[compiler-rt] r214344 - [Sanitizer] Hoist the code parsing suppressions file into sanitizer_common.

Alexey Samsonov vonosmas at gmail.com
Wed Jul 30 14:53:31 PDT 2014


Author: samsonov
Date: Wed Jul 30 16:53:30 2014
New Revision: 214344

URL: http://llvm.org/viewvc/llvm-project?rev=214344&view=rev
Log:
[Sanitizer] Hoist the code parsing suppressions file into sanitizer_common.

Remove corresponding bits from LSan and TSan runtimes. No functionality change.

Modified:
    compiler-rt/trunk/lib/lsan/lsan_common.cc
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_suppressions.cc
    compiler-rt/trunk/lib/tsan/rtl/tsan_suppressions.cc

Modified: compiler-rt/trunk/lib/lsan/lsan_common.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/lsan/lsan_common.cc?rev=214344&r1=214343&r2=214344&view=diff
==============================================================================
--- compiler-rt/trunk/lib/lsan/lsan_common.cc (original)
+++ compiler-rt/trunk/lib/lsan/lsan_common.cc Wed Jul 30 16:53:30 2014
@@ -85,16 +85,6 @@ static void InitializeFlags() {
 
 void InitializeSuppressions() {
   SuppressionContext::Init();
-  char *suppressions_from_file;
-  uptr buffer_size;
-  if (ReadFileToBuffer(common_flags()->suppressions, &suppressions_from_file,
-                       &buffer_size, 1 << 26 /* max_len */))
-    SuppressionContext::Get()->Parse(suppressions_from_file);
-  if (common_flags()->suppressions[0] && !buffer_size) {
-    Printf("LeakSanitizer: failed to read suppressions file '%s'\n",
-           common_flags()->suppressions);
-    Die();
-  }
   if (&__lsan_default_suppressions)
     SuppressionContext::Get()->Parse(__lsan_default_suppressions());
 }

Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_suppressions.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_suppressions.cc?rev=214344&r1=214343&r2=214344&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_suppressions.cc (original)
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_suppressions.cc Wed Jul 30 16:53:30 2014
@@ -15,6 +15,7 @@
 
 #include "sanitizer_allocator_internal.h"
 #include "sanitizer_common.h"
+#include "sanitizer_flags.h"
 #include "sanitizer_libc.h"
 #include "sanitizer_placement_new.h"
 
@@ -77,6 +78,17 @@ SuppressionContext *SuppressionContext::
 void SuppressionContext::Init() {
   CHECK(!suppression_ctx);
   suppression_ctx = new(placeholder) SuppressionContext;
+  char *suppressions_from_file;
+  uptr buffer_size;
+  uptr contents_size =
+      ReadFileToBuffer(common_flags()->suppressions, &suppressions_from_file,
+                       &buffer_size, 1 << 26 /* max_len */);
+  if (common_flags()->suppressions[0] && contents_size == 0) {
+    Printf("%s: failed to read suppressions file '%s'\n", SanitizerToolName,
+           common_flags()->suppressions);
+    Die();
+  }
+  suppression_ctx->Parse(suppressions_from_file);
 }
 
 bool SuppressionContext::Match(const char *str, SuppressionType type,

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=214344&r1=214343&r2=214344&view=diff
==============================================================================
--- compiler-rt/trunk/lib/tsan/rtl/tsan_suppressions.cc (original)
+++ compiler-rt/trunk/lib/tsan/rtl/tsan_suppressions.cc Wed Jul 30 16:53:30 2014
@@ -41,45 +41,10 @@ extern "C" const char *WEAK __tsan_defau
 
 namespace __tsan {
 
-static char *ReadFile(const char *filename) {
-  if (filename == 0 || filename[0] == 0)
-    return 0;
-  InternalScopedBuffer<char> tmp(4*1024);
-  if (filename[0] == '/' || GetPwd() == 0)
-    internal_snprintf(tmp.data(), tmp.size(), "%s", filename);
-  else
-    internal_snprintf(tmp.data(), tmp.size(), "%s/%s", GetPwd(), filename);
-  uptr openrv = OpenFile(tmp.data(), false);
-  if (internal_iserror(openrv)) {
-    Printf("ThreadSanitizer: failed to open suppressions file '%s'\n",
-               tmp.data());
-    Die();
-  }
-  fd_t fd = openrv;
-  const uptr fsize = internal_filesize(fd);
-  if (fsize == (uptr)-1) {
-    Printf("ThreadSanitizer: failed to stat suppressions file '%s'\n",
-               tmp.data());
-    Die();
-  }
-  char *buf = (char*)internal_alloc(MBlockSuppression, fsize + 1);
-  if (fsize != internal_read(fd, buf, fsize)) {
-    Printf("ThreadSanitizer: failed to read suppressions file '%s'\n",
-               tmp.data());
-    Die();
-  }
-  internal_close(fd);
-  buf[fsize] = 0;
-  return buf;
-}
-
 void InitializeSuppressions() {
   SuppressionContext::Init();
-  const char *supp = ReadFile(flags()->suppressions);
-  SuppressionContext::Get()->Parse(supp);
 #ifndef TSAN_GO
-  supp = __tsan_default_suppressions();
-  SuppressionContext::Get()->Parse(supp);
+  SuppressionContext::Get()->Parse(__tsan_default_suppressions());
   SuppressionContext::Get()->Parse(std_suppressions);
 #endif
 }





More information about the llvm-commits mailing list