diff options
author | Alexey Samsonov <samsonov@google.com> | 2012-11-08 13:31:19 +0000 |
---|---|---|
committer | Alexey Samsonov <samsonov@google.com> | 2012-11-08 13:31:19 +0000 |
commit | 3aa15c1ad60ae6c63973a0982662f26449f661bc (patch) | |
tree | 54b01326cf80b3f8f27bb4edb44afa648cea4108 | |
parent | 6f121a185372780b79bde6afcd40e2220e9d0066 (diff) | |
download | compiler-rt-3aa15c1ad60ae6c63973a0982662f26449f661bc.tar.gz |
[ASan] avoid including <new> header in ASan runtime
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@167579 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/asan/asan_new_delete.cc | 24 |
1 files 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 <stddef.h> -#include <new> 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 <new>. +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 |