[llvm-commits] [compiler-rt] r165227 - /compiler-rt/trunk/lib/asan/asan_interceptors.cc

Alexander Potapenko glider at google.com
Thu Oct 4 06:41:28 PDT 2012


Author: glider
Date: Thu Oct  4 08:41:28 2012
New Revision: 165227

URL: http://llvm.org/viewvc/llvm-project?rev=165227&view=rev
Log:
Avoid calling __asan_init from memcpy(), memmove(), memset() during libSystem initialization.
Fixes http://code.google.com/p/address-sanitizer/issues/detail?id=117.

Modified:
    compiler-rt/trunk/lib/asan/asan_interceptors.cc

Modified: compiler-rt/trunk/lib/asan/asan_interceptors.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_interceptors.cc?rev=165227&r1=165226&r2=165227&view=diff
==============================================================================
--- compiler-rt/trunk/lib/asan/asan_interceptors.cc (original)
+++ compiler-rt/trunk/lib/asan/asan_interceptors.cc Thu Oct  4 08:41:28 2012
@@ -225,6 +225,9 @@
 }
 
 INTERCEPTOR(void*, memcpy, void *to, const void *from, uptr size) {
+#if MAC_INTERPOSE_FUNCTIONS
+  if (!asan_inited) return REAL(memcpy)(to, from, size);
+#endif
   // memcpy is called during __asan_init() from the internals
   // of printf(...).
   if (asan_init_is_running) {
@@ -244,6 +247,9 @@
 }
 
 INTERCEPTOR(void*, memmove, void *to, const void *from, uptr size) {
+#if MAC_INTERPOSE_FUNCTIONS
+  if (!asan_inited) return REAL(memmove)(to, from, size);
+#endif
   if (asan_init_is_running) {
     return REAL(memmove)(to, from, size);
   }
@@ -256,6 +262,9 @@
 }
 
 INTERCEPTOR(void*, memset, void *block, int c, uptr size) {
+#if MAC_INTERPOSE_FUNCTIONS
+  if (!asan_inited) return REAL(memset)(block, c, size);
+#endif
   // memset is called inside Printf.
   if (asan_init_is_running) {
     return REAL(memset)(block, c, size);





More information about the llvm-commits mailing list