From 3aa15c1ad60ae6c63973a0982662f26449f661bc Mon Sep 17 00:00:00 2001 From: Alexey Samsonov Date: Thu, 8 Nov 2012 13:31:19 +0000 Subject: [ASan] avoid including header in ASan runtime git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@167579 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/asan/asan_new_delete.cc | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/lib/asan/asan_new_delete.cc b/lib/asan/asan_new_delete.cc index cfe6ca5c4..756810dc3 100644 --- a/lib/asan/asan_new_delete.cc +++ b/lib/asan/asan_new_delete.cc @@ -17,7 +17,6 @@ #include "asan_stack.h" #include -#include namespace __asan { // This function is a no-op. We need it to make sure that object file @@ -31,34 +30,37 @@ using namespace __asan; // NOLINT // On Android new() goes through malloc interceptors. #if !ASAN_ANDROID +// Fake std::nothrow_t to avoid including . +namespace std { +struct nothrow_t {}; +} // namespace std + #define OPERATOR_NEW_BODY \ GET_STACK_TRACE_HERE_FOR_MALLOC;\ return asan_memalign(0, size, &stack); INTERCEPTOR_ATTRIBUTE -void *operator new(size_t size) throw(std::bad_alloc) { OPERATOR_NEW_BODY; } +void *operator new(size_t size) { OPERATOR_NEW_BODY; } INTERCEPTOR_ATTRIBUTE -void *operator new[](size_t size) throw(std::bad_alloc) { OPERATOR_NEW_BODY; } +void *operator new[](size_t size) { OPERATOR_NEW_BODY; } INTERCEPTOR_ATTRIBUTE -void *operator new(size_t size, std::nothrow_t const&) throw() -{ OPERATOR_NEW_BODY; } +void *operator new(size_t size, std::nothrow_t const&) { OPERATOR_NEW_BODY; } INTERCEPTOR_ATTRIBUTE -void *operator new[](size_t size, std::nothrow_t const&) throw() -{ OPERATOR_NEW_BODY; } +void *operator new[](size_t size, std::nothrow_t const&) { OPERATOR_NEW_BODY; } #define OPERATOR_DELETE_BODY \ GET_STACK_TRACE_HERE_FOR_FREE(ptr);\ asan_free(ptr, &stack); INTERCEPTOR_ATTRIBUTE -void operator delete(void *ptr) throw() { OPERATOR_DELETE_BODY; } +void operator delete(void *ptr) { OPERATOR_DELETE_BODY; } INTERCEPTOR_ATTRIBUTE -void operator delete[](void *ptr) throw() { OPERATOR_DELETE_BODY; } +void operator delete[](void *ptr) { OPERATOR_DELETE_BODY; } INTERCEPTOR_ATTRIBUTE -void operator delete(void *ptr, std::nothrow_t const&) throw() +void operator delete(void *ptr, std::nothrow_t const&) { OPERATOR_DELETE_BODY; } INTERCEPTOR_ATTRIBUTE -void operator delete[](void *ptr, std::nothrow_t const&) throw() +void operator delete[](void *ptr, std::nothrow_t const&) { OPERATOR_DELETE_BODY; } #endif -- cgit v1.2.1