[PATCH] [tsan] Remove ReadFile() in favor of common function ReadFileToBuffer().

Sergey Matveev earthdok at google.com
Wed Jun 26 09:12:43 PDT 2013


Hi dvyukov,

http://llvm-reviews.chandlerc.com/D1045

Files:
  lib/tsan/rtl/tsan_suppressions.cc

Index: lib/tsan/rtl/tsan_suppressions.cc
===================================================================
--- lib/tsan/rtl/tsan_suppressions.cc
+++ lib/tsan/rtl/tsan_suppressions.cc
@@ -32,46 +32,22 @@
 
 static SuppressionContext* g_ctx;
 
-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() {
   ALIGNED(64) static char placeholder_[sizeof(SuppressionContext)];
   g_ctx = new(placeholder_) SuppressionContext;
-  const char *supp = ReadFile(flags()->suppressions);
-  g_ctx->Parse(supp);
+  char *supp_from_file;
+  uptr buf_size;
+  if (ReadFileToBuffer(flags()->suppressions, &supp_from_file, &buf_size,
+                       1 << 26 /* max_len */))
+    g_ctx->Parse(supp_from_file);
+  if (flags()->suppressions[0] && !buf_size) {
+    Printf("ThreadSanitizer: failed to open suppressions file '%s'\n",
+           flags()->suppressions);
+    Die();
+  }
 #ifndef TSAN_GO
-  supp = __tsan_default_suppressions();
-  g_ctx->Parse(supp);
+  const char *default_supp = __tsan_default_suppressions();
+  g_ctx->Parse(default_supp);
 #endif
 }
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D1045.1.patch
Type: text/x-patch
Size: 2081 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130626/afddd33b/attachment.bin>


More information about the llvm-commits mailing list