[compiler-rt] r193880 - tsna: do not call user code from within runtime (from fflush)

Dmitry Vyukov dvyukov at google.com
Fri Nov 1 12:15:33 PDT 2013


Author: dvyukov
Date: Fri Nov  1 14:15:32 2013
New Revision: 193880

URL: http://llvm.org/viewvc/llvm-project?rev=193880&view=rev
Log:
tsna: do not call user code from within runtime (from fflush)


Modified:
    compiler-rt/trunk/lib/tsan/rtl/tsan_interceptors.cc

Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_interceptors.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_interceptors.cc?rev=193880&r1=193879&r2=193880&view=diff
==============================================================================
--- compiler-rt/trunk/lib/tsan/rtl/tsan_interceptors.cc (original)
+++ compiler-rt/trunk/lib/tsan/rtl/tsan_interceptors.cc Fri Nov  1 14:15:32 2013
@@ -1537,6 +1537,7 @@ TSAN_INTERCEPTOR(void*, freopen, char *p
 }
 
 TSAN_INTERCEPTOR(int, fclose, void *stream) {
+  // libc file streams can call user-supplied functions, see fopencookie.
   {
     SCOPED_TSAN_INTERCEPTOR(fclose, stream);
     if (stream) {
@@ -1549,6 +1550,7 @@ TSAN_INTERCEPTOR(int, fclose, void *stre
 }
 
 TSAN_INTERCEPTOR(uptr, fread, void *ptr, uptr size, uptr nmemb, void *f) {
+  // libc file streams can call user-supplied functions, see fopencookie.
   {
     SCOPED_TSAN_INTERCEPTOR(fread, ptr, size, nmemb, f);
     MemoryAccessRange(thr, pc, (uptr)ptr, size * nmemb, true);
@@ -1557,6 +1559,7 @@ TSAN_INTERCEPTOR(uptr, fread, void *ptr,
 }
 
 TSAN_INTERCEPTOR(uptr, fwrite, const void *p, uptr size, uptr nmemb, void *f) {
+  // libc file streams can call user-supplied functions, see fopencookie.
   {
     SCOPED_TSAN_INTERCEPTOR(fwrite, p, size, nmemb, f);
     MemoryAccessRange(thr, pc, (uptr)p, size * nmemb, false);
@@ -1565,7 +1568,10 @@ TSAN_INTERCEPTOR(uptr, fwrite, const voi
 }
 
 TSAN_INTERCEPTOR(int, fflush, void *stream) {
-  SCOPED_TSAN_INTERCEPTOR(fflush, stream);
+  // libc file streams can call user-supplied functions, see fopencookie.
+  {
+    SCOPED_TSAN_INTERCEPTOR(fflush, stream);
+  }
   return REAL(fflush)(stream);
 }
 





More information about the llvm-commits mailing list