diff options
author | Timur Iskhodzhanov <timurrrr@google.com> | 2014-07-15 08:16:04 +0000 |
---|---|---|
committer | Timur Iskhodzhanov <timurrrr@google.com> | 2014-07-15 08:16:04 +0000 |
commit | 9e4580c8ee94d3763542e100669c5b9e7cec1da5 (patch) | |
tree | a3952f929925a3bed79a78e4070805adae0eb0ed | |
parent | d4d9944416692c31e9019e622203f2ee9e374c3e (diff) | |
download | bcm5719-llvm-9e4580c8ee94d3763542e100669c5b9e7cec1da5.tar.gz bcm5719-llvm-9e4580c8ee94d3763542e100669c5b9e7cec1da5.zip |
[ASan] Only define macros in asan_init_version.h, move the __asan_init declaration back to asan_interface_internal.h
This fixes the issues we've uncovered after landing r212815.
Reviewed at http://reviews.llvm.org/D4500
llvm-svn: 213053
6 files changed, 13 insertions, 16 deletions
diff --git a/compiler-rt/lib/asan/CMakeLists.txt b/compiler-rt/lib/asan/CMakeLists.txt index 69c0cd8c263..b23a7a2e5ab 100644 --- a/compiler-rt/lib/asan/CMakeLists.txt +++ b/compiler-rt/lib/asan/CMakeLists.txt @@ -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() diff --git a/compiler-rt/lib/asan/asan_init_version.h b/compiler-rt/lib/asan/asan_init_version.h index 88eb80fedcc..77aea81bd29 100644 --- a/compiler-rt/lib/asan/asan_init_version.h +++ b/compiler-rt/lib/asan/asan_init_version.h @@ -15,21 +15,16 @@ #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" } diff --git a/compiler-rt/lib/asan/asan_interface_internal.h b/compiler-rt/lib/asan/asan_interface_internal.h index 32629ea3126..4d3d8bb4de8 100644 --- a/compiler-rt/lib/asan/asan_interface_internal.h +++ b/compiler-rt/lib/asan/asan_interface_internal.h @@ -22,6 +22,12 @@ 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 { diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h b/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h index 8832da06909..c8985b49eb8 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h +++ b/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h @@ -17,11 +17,7 @@ // 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) diff --git a/compiler-rt/test/asan/TestCases/Darwin/interface_symbols_darwin.c b/compiler-rt/test/asan/TestCases/Darwin/interface_symbols_darwin.c index e513954c941..92a1c4d3eb8 100644 --- a/compiler-rt/test/asan/TestCases/Darwin/interface_symbols_darwin.c +++ b/compiler-rt/test/asan/TestCases/Darwin/interface_symbols_darwin.c @@ -10,13 +10,13 @@ // 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/(.*//" \ diff --git a/compiler-rt/test/asan/TestCases/Linux/interface_symbols_linux.c b/compiler-rt/test/asan/TestCases/Linux/interface_symbols_linux.c index 72416f17fbf..4743717312b 100644 --- a/compiler-rt/test/asan/TestCases/Linux/interface_symbols_linux.c +++ b/compiler-rt/test/asan/TestCases/Linux/interface_symbols_linux.c @@ -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/(.*//" \ |