<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Nov 13, 2014 at 8:01 AM, Yury Gribov <span dir="ltr"><<a href="mailto:y.gribov@samsung.com" target="_blank">y.gribov@samsung.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Author: ygribov<br>
Date: Thu Nov 13 10:01:23 2014<br>
New Revision: 221896<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=221896&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=221896&view=rev</a><br>
Log:<br>
[ASan] Add process basename to log name and error message to simplify analysis of sanitized systems logs.<br>
<br>
Reviewed at <a href="http://reviews.llvm.org/D5724" target="_blank">http://reviews.llvm.org/D5724</a><br>
<br>
Modified:<br>
    compiler-rt/trunk/lib/asan/asan_report.cc<br>
    compiler-rt/trunk/lib/msan/msan_interceptors.cc<br>
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.cc<br>
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h<br>
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_flags.cc<br>
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.cc<br>
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.h<br>
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.cc<br>
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix.cc<br>
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_printf.cc<br>
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc<br>
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cc<br>
    compiler-rt/trunk/test/asan/TestCases/log-path_test.cc<br>
    compiler-rt/trunk/test/asan/TestCases/log_path_fork_test.cc.disabled<br>
<br>
Modified: compiler-rt/trunk/lib/asan/asan_report.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_report.cc?rev=221896&r1=221895&r2=221896&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_report.cc?rev=221896&r1=221895&r2=221896&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/asan/asan_report.cc (original)<br>
+++ compiler-rt/trunk/lib/asan/asan_report.cc Thu Nov 13 10:01:23 2014<br>
@@ -53,7 +53,7 @@ void AppendToErrorMessageBuffer(const ch<br>
                      buffer, remaining);<br>
     error_message_buffer[error_message_buffer_size - 1] = '\0';<br>
     // FIXME: reallocate the buffer instead of truncating the message.<br>
-    error_message_buffer_pos += remaining > length ? length : remaining;<br>
+    error_message_buffer_pos += Min(remaining, length);<br>
   }<br>
 }<br>
<br>
<br>
Modified: compiler-rt/trunk/lib/msan/msan_interceptors.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/msan_interceptors.cc?rev=221896&r1=221895&r2=221896&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/msan_interceptors.cc?rev=221896&r1=221895&r2=221896&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/msan/msan_interceptors.cc (original)<br>
+++ compiler-rt/trunk/lib/msan/msan_interceptors.cc Thu Nov 13 10:01:23 2014<br>
@@ -803,7 +803,7 @@ INTERCEPTOR(SSIZE_T, recvfrom, int fd, v<br>
     __msan_unpoison(buf, res);<br>
     if (srcaddr) {<br>
       SIZE_T sz = *addrlen;<br>
-      __msan_unpoison(srcaddr, (sz < srcaddr_sz) ? sz : srcaddr_sz);<br>
+      __msan_unpoison(srcaddr, Min(sz, srcaddr_sz));<br>
     }<br>
   }<br>
   return res;<br>
<br>
Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.cc?rev=221896&r1=221895&r2=221896&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.cc?rev=221896&r1=221895&r2=221896&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.cc (original)<br>
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.cc Thu Nov 13 10:01:23 2014<br>
@@ -160,6 +160,8 @@ const char *StripModuleName(const char *<br>
     return 0;<br>
   if (const char *slash_pos = internal_strrchr(module, '/'))<br>
     return slash_pos + 1;<br>
+  else if (const char *backslash_pos = internal_strrchr(module, '\\'))<br>
+    return backslash_pos + 1;<br>
   return module;<br>
 }<br>
<br>
@@ -225,6 +227,24 @@ void DecreaseTotalMmap(uptr size) {<br>
   atomic_fetch_sub(&g_total_mmaped, size, memory_order_relaxed);<br>
 }<br>
<br>
+static BlockingMutex binary_name_cache_lock(LINKER_INITIALIZED);<br></blockquote><div><br>This breaks a clang build of compiler-rt:<br><br><div>llvm/src/projects/compiler-rt/lib/sanitizer_common/sanitizer_common.cc:230:22: error: declaration requires a global constructor [-Werror,-Wglobal-constructors]</div><div>static BlockingMutex binary_name_cache_lock(LINKER_INITIALIZED);</div><div>                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br><br>While LINKER_INITIALIZED might sound nice, it seems it doesn't actually do what it says on the tin - BlockingMutex still has a user defined (albeit no-op in an optimized build) ctor, which produces a global ctor to run it, etc...<br></div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
+static char binary_name_cache_str[kMaxPathLength];<br>
+static bool binary_name_cache_initialized = false;<br>
+<br>
+const char *GetBinaryName() {<br>
+  BlockingMutexLock l(&binary_name_cache_lock);<br>
+  if (!binary_name_cache_initialized) {<br>
+    ReadBinaryName(binary_name_cache_str, sizeof(binary_name_cache_str));<br>
+    binary_name_cache_initialized = true;<br>
+  }<br>
+  return binary_name_cache_str;<br>
+}<br>
+<br>
+void CacheBinaryName() {<br>
+  // Call once to make sure that binary_name_cache_str is initialized<br>
+  GetBinaryName();<br>
+}<br>
+<br>
 }  // namespace __sanitizer<br>
<br>
 using namespace __sanitizer;  // NOLINT<br>
<br>
Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h?rev=221896&r1=221895&r2=221896&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h?rev=221896&r1=221895&r2=221896&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h (original)<br>
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h Thu Nov 13 10:01:23 2014<br>
@@ -176,6 +176,9 @@ const char *StripPathPrefix(const char *<br>
 const char *StripModuleName(const char *module);<br>
<br>
 // OS<br>
+uptr ReadBinaryName(/*out*/char *buf, uptr buf_len);<br>
+const char *GetBinaryName();<br>
+void CacheBinaryName();<br>
 void DisableCoreDumperIfNecessary();<br>
 void DumpProcessMap();<br>
 bool FileExists(const char *filename);<br>
<br>
Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_flags.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_flags.cc?rev=221896&r1=221895&r2=221896&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_flags.cc?rev=221896&r1=221895&r2=221896&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_flags.cc (original)<br>
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_flags.cc Thu Nov 13 10:01:23 2014<br>
@@ -98,8 +98,8 @@ void ParseCommonFlagsFromString(CommonFl<br>
   ParseFlag(str, &f->malloc_context_size, "malloc_context_size",<br>
       "Max number of stack frames kept for each allocation/deallocation.");<br>
   ParseFlag(str, &f->log_path, "log_path",<br>
-      "Write logs to \"log_path.pid\". The special values are \"stdout\" and "<br>
-      "\"stderr\". The default is \"stderr\".");<br>
+      "Write logs to \"log_path.pname.pid\". The special values are \"stdout\" "<br>
+      "and \"stderr\". The default is \"stderr\".");<br>
   ParseFlag(str, &f->verbosity, "verbosity",<br>
       "Verbosity level (0 - silent, 1 - a bit of output, 2+ - more output).");<br>
   ParseFlag(str, &f->detect_leaks, "detect_leaks",<br>
<br>
Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.cc?rev=221896&r1=221895&r2=221896&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.cc?rev=221896&r1=221895&r2=221896&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.cc (original)<br>
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.cc Thu Nov 13 10:01:23 2014<br>
@@ -678,47 +678,31 @@ uptr GetPageSize() {<br>
 #endif<br>
 }<br>
<br>
-static char proc_self_exe_cache_str[kMaxPathLength];<br>
-static uptr proc_self_exe_cache_len = 0;<br>
-<br>
 uptr ReadBinaryName(/*out*/char *buf, uptr buf_len) {<br>
-  if (proc_self_exe_cache_len > 0) {<br>
-    // If available, use the cached module name.<br>
-    uptr module_name_len =<br>
-        internal_snprintf(buf, buf_len, "%s", proc_self_exe_cache_str);<br>
-    CHECK_LT(module_name_len, buf_len);<br>
-    return module_name_len;<br>
-  }<br>
 #if SANITIZER_FREEBSD<br>
-  const int Mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1 };<br>
+  const int Mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1 };<br>
+  const char *default_module_name = "kern.proc.pathname";<br>
   size_t Size = buf_len;<br>
-  bool IsErr = (sysctl(Mib, 4, buf, &Size, NULL, 0) != 0);<br>
+  bool IsErr = (sysctl(Mib, ARRAY_SIZE(Mib), buf, &Size, NULL, 0) != 0);<br>
   int readlink_error = IsErr ? errno : 0;<br>
   uptr module_name_len = Size;<br>
 #else<br>
+  const char *default_module_name = "/proc/self/exe";<br>
   uptr module_name_len = internal_readlink(<br>
       "/proc/self/exe", buf, buf_len);<br>
   int readlink_error;<br>
   bool IsErr = internal_iserror(module_name_len, &readlink_error);<br>
 #endif<br>
   if (IsErr) {<br>
-    // We can't read /proc/self/exe for some reason, assume the name of the<br>
-    // binary is unknown.<br>
-    Report("WARNING: readlink(\"/proc/self/exe\") failed with errno %d, "<br>
+    // We can't read binary name for some reason, assume it's unknown.<br>
+    Report("WARNING: reading executable name failed with errno %d, "<br>
            "some stack frames may not be symbolized\n", readlink_error);<br>
-    module_name_len = internal_snprintf(buf, buf_len, "/proc/self/exe");<br>
+    module_name_len = internal_snprintf(buf, buf_len, default_module_name);<br>
     CHECK_LT(module_name_len, buf_len);<br>
   }<br>
   return module_name_len;<br>
 }<br>
<br>
-void CacheBinaryName() {<br>
-  if (!proc_self_exe_cache_len) {<br>
-    proc_self_exe_cache_len =<br>
-        ReadBinaryName(proc_self_exe_cache_str, kMaxPathLength);<br>
-  }<br>
-}<br>
-<br>
 // Match full names of the form /path/to/base_name{-,.}*<br>
 bool LibraryNameIs(const char *full_name, const char *base_name) {<br>
   const char *name = full_name;<br>
<br>
Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.h?rev=221896&r1=221895&r2=221896&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.h?rev=221896&r1=221895&r2=221896&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.h (original)<br>
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.h Thu Nov 13 10:01:23 2014<br>
@@ -80,11 +80,6 @@ uptr ThreadSelfOffset();<br>
 // information).<br>
 bool LibraryNameIs(const char *full_name, const char *base_name);<br>
<br>
-// Read the name of the current binary from /proc/self/exe.<br>
-uptr ReadBinaryName(/*out*/char *buf, uptr buf_len);<br>
-// Cache the value of /proc/self/exe.<br>
-void CacheBinaryName();<br>
-<br>
 // Call cb for each region mapped by map.<br>
 void ForEachMappedRegion(link_map *map, void (*cb)(const void *, uptr));<br>
 }  // namespace __sanitizer<br>
<br>
Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.cc?rev=221896&r1=221895&r2=221896&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.cc?rev=221896&r1=221895&r2=221896&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.cc (original)<br>
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_mac.cc Thu Nov 13 10:01:23 2014<br>
@@ -317,6 +317,13 @@ MacosVersion GetMacosVersion() {<br>
   return result;<br>
 }<br>
<br>
+uptr ReadBinaryName(/*out*/char *buf, uptr buf_len) {<br>
+  // FIXME: Actually implement this function.<br>
+  CHECK_GT(buf_len, 0);<br>
+  buf[0] = 0;<br>
+  return 0;<br>
+}<br>
+<br>
 }  // namespace __sanitizer<br>
<br>
 #endif  // SANITIZER_MAC<br>
<br>
Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix.cc?rev=221896&r1=221895&r2=221896&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix.cc?rev=221896&r1=221895&r2=221896&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix.cc (original)<br>
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix.cc Thu Nov 13 10:01:23 2014<br>
@@ -289,13 +289,14 @@ char *FindPathToBinary(const char *name)<br>
 void MaybeOpenReportFile() {<br>
   if (!log_to_file) return;<br>
   uptr pid = internal_getpid();<br>
+  const char *pname = StripModuleName(GetBinaryName());<br>
   // If in tracer, use the parent's file.<br>
   if (pid == stoptheworld_tracer_pid)<br>
     pid = stoptheworld_tracer_ppid;<br>
   if (report_fd_pid == pid) return;<br>
   InternalScopedBuffer<char> report_path_full(4096);<br>
   internal_snprintf(report_path_full.data(), report_path_full.size(),<br>
-                    "%s.%zu", report_path_prefix, pid);<br>
+                    "%s.%s.%zu", report_path_prefix, pname, pid);<br>
   uptr openrv = OpenFile(report_path_full.data(), true);<br>
   if (internal_iserror(openrv)) {<br>
     report_fd = kStderrFd;<br>
<br>
Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_printf.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_printf.cc?rev=221896&r1=221895&r2=221896&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_printf.cc?rev=221896&r1=221895&r2=221896&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_printf.cc (original)<br>
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_printf.cc Thu Nov 13 10:01:23 2014<br>
@@ -253,9 +253,11 @@ static void SharedPrintfCode(bool append<br>
     needed_length = 0;<br>
     if (append_pid) {<br>
       int pid = internal_getpid();<br>
-      needed_length += internal_snprintf(buffer, buffer_size, "==%d==", pid);<br>
+      const char *pname = StripModuleName(GetBinaryName());<br>
+      needed_length += internal_snprintf(buffer, buffer_size,<br>
+                                         "==%s %d==", pname, pid);<br>
       if (needed_length >= buffer_size) {<br>
-        // The pid doesn't fit into the current buffer.<br>
+        // Process name + pid do not fit into the current buffer.<br>
         if (!use_mmap)<br>
           continue;<br>
         RAW_CHECK_MSG(needed_length < kLen, "Buffer in Report is too short!\n");<br>
<br>
Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc?rev=221896&r1=221895&r2=221896&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc?rev=221896&r1=221895&r2=221896&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc (original)<br>
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc Thu Nov 13 10:01:23 2014<br>
@@ -643,11 +643,8 @@ class POSIXSymbolizer : public Symbolize<br>
   }<br>
<br>
   void PrepareForSandboxing() {<br>
-#if SANITIZER_LINUX && !SANITIZER_ANDROID<br>
     BlockingMutexLock l(&mu_);<br>
-    // Cache /proc/self/exe on Linux.<br>
     CacheBinaryName();<br>
-#endif<br>
   }<br>
<br>
  private:<br>
<br>
Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cc?rev=221896&r1=221895&r2=221896&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cc?rev=221896&r1=221895&r2=221896&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cc (original)<br>
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cc Thu Nov 13 10:01:23 2014<br>
@@ -527,6 +527,13 @@ bool IsAccessibleMemoryRange(uptr beg, u<br>
   return true;<br>
 }<br>
<br>
+uptr ReadBinaryName(/*out*/char *buf, uptr buf_len) {<br>
+  // FIXME: Actually implement this function.<br>
+  CHECK_GT(buf_len, 0);<br>
+  buf[0] = 0;<br>
+  return 0;<br>
+}<br>
+<br>
 }  // namespace __sanitizer<br>
<br>
 #endif  // _WIN32<br>
<br>
Modified: compiler-rt/trunk/test/asan/TestCases/log-path_test.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/log-path_test.cc?rev=221896&r1=221895&r2=221896&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/log-path_test.cc?rev=221896&r1=221895&r2=221896&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/test/asan/TestCases/log-path_test.cc (original)<br>
+++ compiler-rt/trunk/test/asan/TestCases/log-path_test.cc Thu Nov 13 10:01:23 2014<br>
@@ -10,7 +10,7 @@<br>
 // Good log_path.<br>
 // RUN: rm -f %t.log.*<br>
 // RUN: env ASAN_OPTIONS=log_path=%t.log not %run %t 2> %t.out<br>
-// RUN: FileCheck %s --check-prefix=CHECK-ERROR < %t.log.*<br>
+// RUN: FileCheck %s --check-prefix=CHECK-ERROR < %<a href="http://t.log.log-path_test.cc" target="_blank">t.log.log-path_test.cc</a>*<br>
<br>
 // Invalid log_path.<br>
 // RUN: env ASAN_OPTIONS=log_path=/INVALID not %run %t 2> %t.out<br>
@@ -24,7 +24,7 @@<br>
 // Run w/o errors should not produce any log.<br>
 // RUN: rm -f %t.log.*<br>
 // RUN: env ASAN_OPTIONS=log_path=%t.log  %run %t ARG ARG ARG<br>
-// RUN: not cat %t.log.*<br>
+// RUN: not cat %<a href="http://t.log.log-path_test.cc" target="_blank">t.log.log-path_test.cc</a>*<br>
<br>
 // FIXME: log_path is not supported on Windows yet.<br>
 // XFAIL: win32<br>
<br>
Modified: compiler-rt/trunk/test/asan/TestCases/log_path_fork_test.cc.disabled<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/log_path_fork_test.cc.disabled?rev=221896&r1=221895&r2=221896&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/log_path_fork_test.cc.disabled?rev=221896&r1=221895&r2=221896&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/test/asan/TestCases/log_path_fork_test.cc.disabled (original)<br>
+++ compiler-rt/trunk/test/asan/TestCases/log_path_fork_test.cc.disabled Thu Nov 13 10:01:23 2014<br>
@@ -2,7 +2,7 @@<br>
 // RUN: rm -f %t.log.*<br>
 // Set verbosity to 1 so that the log files are opened prior to fork().<br>
 // RUN: env ASAN_OPTIONS="log_path=%t.log verbosity=1" not %run %t 2> %t.out<br>
-// RUN: for f in %t.log.* ; do FileCheck %s < $f; done<br>
+// RUN: for f in %<a href="http://t.log.log_path_fork_test.cc" target="_blank">t.log.log_path_fork_test.cc</a>* ; do FileCheck %s < $f; done<br>
 // RUN: [ `ls %t.log.* | wc -l` == 2 ]<br>
<br>
 #include <stdlib.h><br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div></div>