[PATCH] Allow initialization of Asan interceptors before the general Asan initialization takes place on FreeBSD

Viktor Kutuzov vkutuzov at accesssoftek.com
Fri Jul 25 05:54:27 PDT 2014


Closed by commit rL213941 (authored by vkutuzov).

REPOSITORY
  rL LLVM

http://reviews.llvm.org/D4496

Files:
  compiler-rt/trunk/lib/asan/asan_interceptors.cc
  compiler-rt/trunk/lib/sanitizer_common/sanitizer_common_interceptors.inc

Index: compiler-rt/trunk/lib/sanitizer_common/sanitizer_common_interceptors.inc
===================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_common_interceptors.inc
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_common_interceptors.inc
@@ -27,6 +27,7 @@
 //   COMMON_INTERCEPTOR_MUTEX_REPAIR
 //   COMMON_INTERCEPTOR_SET_PTHREAD_NAME
 //   COMMON_INTERCEPTOR_HANDLE_RECVMSG
+//   COMMON_INTERCEPTOR_NOTHING_IS_INITIALIZED
 //===----------------------------------------------------------------------===//
 #include "interception/interception.h"
 #include "sanitizer_addrhashmap.h"
@@ -89,6 +90,10 @@
   COMMON_INTERCEPTOR_ENTER(ctx, __VA_ARGS__)
 #endif
 
+#ifndef COMMON_INTERCEPTOR_NOTHING_IS_INITIALIZED
+#define COMMON_INTERCEPTOR_NOTHING_IS_INITIALIZED (0)
+#endif
+
 struct FileMetadata {
   // For open_memstream().
   char **addr;
@@ -174,6 +179,8 @@
 }
 
 INTERCEPTOR(int, strncmp, const char *s1, const char *s2, uptr size) {
+  if (COMMON_INTERCEPTOR_NOTHING_IS_INITIALIZED)
+    return internal_strncmp(s1, s2, size);
   void *ctx;
   COMMON_INTERCEPTOR_ENTER(ctx, strncmp, s1, s2, size);
   unsigned char c1 = 0, c2 = 0;
Index: compiler-rt/trunk/lib/asan/asan_interceptors.cc
===================================================================
--- compiler-rt/trunk/lib/asan/asan_interceptors.cc
+++ compiler-rt/trunk/lib/asan/asan_interceptors.cc
@@ -148,6 +148,7 @@
 #define COMMON_INTERCEPTOR_ON_EXIT(ctx) OnExit()
 #define COMMON_INTERCEPTOR_LIBRARY_LOADED(filename, res) CovUpdateMapping()
 #define COMMON_INTERCEPTOR_LIBRARY_UNLOADED() CovUpdateMapping()
+#define COMMON_INTERCEPTOR_NOTHING_IS_INITIALIZED (!asan_inited)
 #include "sanitizer_common/sanitizer_common_interceptors.inc"
 
 #define COMMON_SYSCALL_PRE_READ_RANGE(p, s) ASAN_READ_RANGE(p, s)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D4496.11874.patch
Type: text/x-patch
Size: 1837 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140725/961fa756/attachment.bin>


More information about the llvm-commits mailing list