[ASan] Only define macros in asan_init_version.h, move the __asan_init declaration...
authorTimur Iskhodzhanov <timurrrr@google.com>
Tue, 15 Jul 2014 08:16:04 +0000 (08:16 +0000)
committerTimur Iskhodzhanov <timurrrr@google.com>
Tue, 15 Jul 2014 08:16:04 +0000 (08:16 +0000)
This fixes the issues we've uncovered after landing r212815.

Reviewed at http://reviews.llvm.org/D4500

llvm-svn: 213053

compiler-rt/lib/asan/CMakeLists.txt
compiler-rt/lib/asan/asan_init_version.h
compiler-rt/lib/asan/asan_interface_internal.h
compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h
compiler-rt/test/asan/TestCases/Darwin/interface_symbols_darwin.c
compiler-rt/test/asan/TestCases/Linux/interface_symbols_linux.c

index 69c0cd8..b23a7a2 100644 (file)
@@ -179,7 +179,7 @@ else()
       add_compiler_rt_runtime(clang_rt.asan_dll_thunk-${arch} ${arch} STATIC
         SOURCES asan_dll_thunk.cc
                 $<TARGET_OBJECTS:RTInterception.${arch}>
-        CFLAGS ${ASAN_CFLAGS} -DASAN_DLL_THUNK -DSANITIZER_DLL_THUNK
+        CFLAGS ${ASAN_CFLAGS} -DASAN_DLL_THUNK
         DEFS ${ASAN_COMMON_DEFINITIONS})
       add_dependencies(asan clang_rt.asan_dll_thunk-${arch})
     endif()
index 88eb80f..77aea81 100644 (file)
 #ifndef ASAN_INIT_VERSION_H
 #define ASAN_INIT_VERSION_H
 
-#include "sanitizer_common/sanitizer_internal_defs.h"
-
 extern "C" {
-  // This function should be called at the very beginning of the process,
-  // before any instrumented code is executed and before any call to malloc.
-  // Every time the ASan ABI changes we also change the version number in this
-  // name. Objects build with incompatible ASan ABI version
-  // will not link with run-time.
+  // Every time the ASan ABI changes we also change the version number in the
+  // __asan_init function name.  Objects built with incompatible ASan ABI
+  // versions will not link with run-time.
   // Changes between ABI versions:
   // v1=>v2: added 'module_name' to __asan_global
   // v2=>v3: stack frame description (created by the compiler)
   //         contains the function PC as the 3-rd field (see
   //         DescribeAddressIfStack).
   // v3=>v4: added '__asan_global_source_location' to __asan_global.
-  SANITIZER_INTERFACE_ATTRIBUTE void __asan_init_v4();
   #define __asan_init __asan_init_v4
   #define __asan_init_name "__asan_init_v4"
 }
index 32629ea..4d3d8bb 100644 (file)
 using __sanitizer::uptr;
 
 extern "C" {
+  // This function should be called at the very beginning of the process,
+  // before any instrumented code is executed and before any call to malloc.
+  // Please note that __asan_init is a macro that is replaced with
+  // __asan_init_vXXX at compile-time.
+  SANITIZER_INTERFACE_ATTRIBUTE void __asan_init();
+
   // This structure is used to describe the source location of a place where
   // global was defined.
   struct __asan_global_source_location {
index 8832da0..c8985b4 100644 (file)
 
 // Only use SANITIZER_*ATTRIBUTE* before the function return type!
 #if SANITIZER_WINDOWS
-# if defined(SANITIZER_DLL_THUNK)
-#  define SANITIZER_INTERFACE_ATTRIBUTE
-# else
-#  define SANITIZER_INTERFACE_ATTRIBUTE __declspec(dllexport)
-# endif
+# define SANITIZER_INTERFACE_ATTRIBUTE __declspec(dllexport)
 // FIXME find out what we need on Windows, if anything.
 # define SANITIZER_WEAK_ATTRIBUTE
 #elif defined(SANITIZER_GO)
index e513954..92a1c4d 100644 (file)
 // RUN:                       sed "s/.dylib.*/.dylib/"` \
 // RUN:   | grep " T " | sed "s/.* T //" \
 // RUN:   | grep "__asan_" | sed "s/___asan_/__asan_/" \
+// RUN:   | sed "s/__asan_init_v[0-9]\+/__asan_init/" \
 // RUN:   | grep -v "__asan_malloc_hook" \
 // RUN:   | grep -v "__asan_free_hook" \
 // RUN:   | grep -v "__asan_default_options" \
 // RUN:   | grep -v "__asan_on_error" > %t.symbols
 
 // RUN: cat %p/../../../../lib/asan/asan_interface_internal.h \
-// RUN:     %p/../../../../lib/asan/asan_init_version.h \
 // RUN:    | sed "s/\/\/.*//" | sed "s/typedef.*//" \
 // RUN:    | grep -v "OPTIONAL" \
 // RUN:    | grep "__asan_.*(" | sed "s/.* __asan_/__asan_/;s/(.*//" \
index 72416f1..4743717 100644 (file)
@@ -3,13 +3,13 @@
 // RUN: %clang_asan -O2 %s -o %t.exe
 // RUN: nm -D %t.exe | grep " T " | sed "s/.* T //" \
 // RUN:    | grep "__asan_" | sed "s/___asan_/__asan_/" \
+// RUN:    | sed "s/__asan_init_v[0-9]\+/__asan_init/" \
 // RUN:    | grep -v "__asan_malloc_hook" \
 // RUN:    | grep -v "__asan_free_hook" \
 // RUN:    | grep -v "__asan_default_options" \
 // RUN:    | grep -v "__asan_stack_" \
 // RUN:    | grep -v "__asan_on_error" > %t.symbols
 // RUN: cat %p/../../../../lib/asan/asan_interface_internal.h \
-// RUN:     %p/../../../../lib/asan/asan_init_version.h \
 // RUN:    | sed "s/\/\/.*//" | sed "s/typedef.*//" \
 // RUN:    | grep -v "OPTIONAL" \
 // RUN:    | grep "__asan_.*(" | sed "s/.* __asan_/__asan_/;s/(.*//" \