https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64841

--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
I wonder if the correct fix would be:

--- a/libsanitizer/asan/asan_new_delete.cc
+++ b/libsanitizer/asan/asan_new_delete.cc
@@ -103,6 +103,7 @@ CXX_OPERATOR_ATTRIBUTE
 void operator delete[](void *ptr, std::nothrow_t const&) {
   OPERATOR_DELETE_BODY(FROM_NEW_BR);
 }
+#if __cpp_sized_deallocation
 CXX_OPERATOR_ATTRIBUTE
 void operator delete(void *ptr, size_t size) throw() {
   GET_STACK_TRACE_FREE;
@@ -113,6 +114,7 @@ void operator delete[](void *ptr, size_t size) throw() {
   GET_STACK_TRACE_FREE;
   asan_sized_free(ptr, size, &stack, FROM_NEW_BR);
 }
+#endif

 #else  // SANITIZER_MAC
 INTERCEPTOR(void, _ZdlPv, void *ptr) {

That way the functions are only declared if the compiler knows what to do with
them (i.e. it supports the C++14 sized deallocation feature).

The patch should go to the libsanitizer upstream though.

Reply via email to