Commit c8e1377b by Kostya Serebryany Committed by Kostya Serebryany

fix PR sanitizer/58994

From-SVN: r204838
parent d1c369c2
2013-11-15 Kostya Serebryany <kcc@google.com>
PR sanitizer/58994
Backport from upstream revision 194573
* asan/asan_interceptors.cc (COMMON_INTERCEPTOR_ENTER): Fall
back to the original functions in the common libsanitizer
interceptors and the __cxa_atexit() interceptor on Darwin.
2013-11-13 Peter Bergner <bergner@vnet.ibm.com> 2013-11-13 Peter Bergner <bergner@vnet.ibm.com>
PR sanitizer/59009 PR sanitizer/59009
......
...@@ -106,12 +106,13 @@ DECLARE_REAL_AND_INTERCEPTOR(void, free, void *) ...@@ -106,12 +106,13 @@ DECLARE_REAL_AND_INTERCEPTOR(void, free, void *)
#define COMMON_INTERCEPTOR_WRITE_RANGE(ctx, ptr, size) \ #define COMMON_INTERCEPTOR_WRITE_RANGE(ctx, ptr, size) \
ASAN_WRITE_RANGE(ptr, size) ASAN_WRITE_RANGE(ptr, size)
#define COMMON_INTERCEPTOR_READ_RANGE(ctx, ptr, size) ASAN_READ_RANGE(ptr, size) #define COMMON_INTERCEPTOR_READ_RANGE(ctx, ptr, size) ASAN_READ_RANGE(ptr, size)
#define COMMON_INTERCEPTOR_ENTER(ctx, func, ...) \ #define COMMON_INTERCEPTOR_ENTER(ctx, func, ...) \
do { \ do { \
if (asan_init_is_running) return REAL(func)(__VA_ARGS__); \ if (asan_init_is_running) return REAL(func)(__VA_ARGS__); \
ctx = 0; \ ctx = 0; \
(void) ctx; \ (void) ctx; \
ENSURE_ASAN_INITED(); \ if (SANITIZER_MAC && !asan_inited) return REAL(func)(__VA_ARGS__); \
ENSURE_ASAN_INITED(); \
} while (false) } while (false)
#define COMMON_INTERCEPTOR_FD_ACQUIRE(ctx, fd) \ #define COMMON_INTERCEPTOR_FD_ACQUIRE(ctx, fd) \
do { \ do { \
...@@ -634,6 +635,9 @@ static void AtCxaAtexit(void *unused) { ...@@ -634,6 +635,9 @@ static void AtCxaAtexit(void *unused) {
#if ASAN_INTERCEPT___CXA_ATEXIT #if ASAN_INTERCEPT___CXA_ATEXIT
INTERCEPTOR(int, __cxa_atexit, void (*func)(void *), void *arg, INTERCEPTOR(int, __cxa_atexit, void (*func)(void *), void *arg,
void *dso_handle) { void *dso_handle) {
#if SANITIZER_MAC
if (!asan_inited) return REAL(__cxa_atexit)(func, arg, dso_handle);
#endif
ENSURE_ASAN_INITED(); ENSURE_ASAN_INITED();
int res = REAL(__cxa_atexit)(func, arg, dso_handle); int res = REAL(__cxa_atexit)(func, arg, dso_handle);
REAL(__cxa_atexit)(AtCxaAtexit, 0, 0); REAL(__cxa_atexit)(AtCxaAtexit, 0, 0);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment