From b038b53f1ff4bf00ecdead1db23eddc4fd654305 Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Thu, 11 Nov 2021 11:22:39 +0100 Subject: [PATCH] [gdb/build] Fix build with -std=c++11 When building with -std=c++11, we run into two Werror=missing-declarations: ... new-op.cc: In function 'void operator delete(void*, std::size_t)': new-op.cc:114:1: error: no previous declaration for \ 'void operator delete(void*, std::size_t)' [-Werror=missing-declarations] operator delete (void *p, std::size_t) noexcept ^~~~~~~~ new-op.cc: In function 'void operator delete [](void*, std::size_t)': new-op.cc:132:1: error: no previous declaration for \ 'void operator delete [](void*, std::size_t)' [-Werror=missing-declarations] operator delete[] (void *p, std::size_t) noexcept ^~~~~~~~ ... These are due to recent commit 5fff6115fea "Fix LD_PRELOAD=/usr/lib64/libasan.so.6 gdb". The declarations are provided by (which is included) for c++14 onwards, but they are missing for c++11. Fix this by adding the missing declarations. Tested on x86_64-linux, with gcc 7.5.0, both without (implying -std=gnu++14) and with -std=c++11. --- gdbsupport/new-op.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gdbsupport/new-op.cc b/gdbsupport/new-op.cc index 2f4c71457b1..716fa1a66de 100644 --- a/gdbsupport/new-op.cc +++ b/gdbsupport/new-op.cc @@ -27,6 +27,11 @@ #include "host-defs.h" #include +/* These are declared in starting C++14. Add these here to enable + compilation using C++11. */ +extern void operator delete (void *p, std::size_t) noexcept; +extern void operator delete[] (void *p, std::size_t) noexcept; + /* Override operator new / operator new[], in order to internal_error on allocation failure and thus query the user for abort/core dump/continue, just like xmalloc does. We don't do this from a -- 2.30.2