[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