[gdb/build] Fix Wimplicit-exception-spec-mismatch in clang build
authorTom de Vries <tdevries@suse.de>
Thu, 11 Nov 2021 10:22:39 +0000 (11:22 +0100)
committerTom de Vries <tdevries@suse.de>
Thu, 11 Nov 2021 10:22:39 +0000 (11:22 +0100)
When building with clang 13 (and -std=gnu++17 to work around an issue in
string_view-selftests.c), we run into a few Wimplicit-exception-spec-mismatch
warnings:
...
src/gdbsupport/new-op.cc:102:1: error: function previously declared with an \
  explicit exception specification redeclared with an implicit exception \
  specification [-Werror,-Wimplicit-exception-spec-mismatch]
operator delete (void *p)
^
/usr/include/c++/11/new:130:6: note: previous declaration is here
void operator delete(void*) _GLIBCXX_USE_NOEXCEPT
     ^
...

These are due to recent commit 5fff6115fea "Fix
LD_PRELOAD=/usr/lib64/libasan.so.6 gdb".

Fix this by adding the missing noexcept.

Build on x86_64-linux, using gcc 7.5.0 and clang 13.0.0.

gdbsupport/new-op.cc

index 716fa1a66defc2514a5e3ae7fdf9d36502f9492d..2fe5f648abb8476e16c27a3ec5bcb385ede82974 100644 (file)
@@ -104,7 +104,7 @@ operator new[] (std::size_t sz, const std::nothrow_t&) noexcept
    errors from AddressSanitizers.  */
 
 void
-operator delete (void *p)
+operator delete (void *p) noexcept
 {
   free (p);
 }
@@ -122,7 +122,7 @@ operator delete (void *p, std::size_t) noexcept
 }
 
 void
-operator delete[] (void *p)
+operator delete[] (void *p) noexcept
 {
   return ::operator delete (p);
 }