From e4426cb42f082b0dc1298a173014f18ff0ff7ea7 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Tue, 25 Oct 2016 13:32:26 +0100 Subject: [PATCH] new-op.c: Add comment about -fsanitize=address gdb/ChangeLog: 2016-10-25 Pedro Alves * common/new-op.c: Add comment about -fsanitize=address. --- gdb/ChangeLog | 4 ++++ gdb/common/new-op.c | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 40fab9bcd1e..c2a8579a5c2 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,7 @@ +2016-10-25 Pedro Alves + + * common/new-op.c: Add comment about -fsanitize=address. + 2016-10-25 Pedro Alves * common/common-defs.h (__STDC_CONSTANT_MACROS) diff --git a/gdb/common/new-op.c b/gdb/common/new-op.c index f04c5cbbfc0..1eb4f94efeb 100644 --- a/gdb/common/new-op.c +++ b/gdb/common/new-op.c @@ -33,6 +33,12 @@ new-handler function instead (std::set_new_handler) because we want to catch allocation errors from within global constructors too. + Skip overriding if building with -fsanitize=address though. + Address sanitizer wants to override operator new/delete too in + order to detect malloc+delete and new+free mismatches. Our + versions would mask out ASan's, with the result of losing that + useful mismatch detection. + Note that C++ implementations could either have their throw versions call the nothrow versions (libstdc++), or the other way around (clang/libc++). For that reason, we replace both throw and -- 2.30.2