]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
gdb: mark addrmap classes `final`
authorSimon Marchi <simon.marchi@efficios.com>
Mon, 25 Mar 2024 18:27:59 +0000 (14:27 -0400)
committerSimon Marchi <simon.marchi@polymtl.ca>
Tue, 26 Mar 2024 01:48:24 +0000 (21:48 -0400)
When building GDB with clang, I see:

    /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/unique_ptr.h:95:2: error: delete called on non-final 'addrmap_mutable' that has virtual functions but non-virtual destructor [-Werror,-Wdelete-non
    -abstract-non-virtual-dtor]
       95 |         delete __ptr;
          |         ^
    /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/unique_ptr.h:396:4: note: in instantiation of member function 'std::default_delete<addrmap_mutable>::operator()' requested here
      396 |           get_deleter()(std::move(__ptr));
          |           ^
    /home/smarchi/src/binutils-gdb/gdb/addrmap.c:422:14: note: in instantiation of member function 'std::unique_ptr<addrmap_mutable>::~unique_ptr' requested here
      422 |   auto map = std::make_unique<struct addrmap_mutable> ();
          |              ^

Fix that by making `addrmap_mutable` final, and `addrmap_fixed` too
while at it.

Change-Id: I03aa0b0907c8d0e3390ddbedeb77d73b19b2b526
Approved-By: Tom Tromey <tom@tromey.com>
gdb/addrmap.h

index 55dea36b8771f2f9f0bcefb731fa4243161cd5d8..ed52e3cd990dfa6cc5df7d646fbc9a3ff568103b 100644 (file)
@@ -80,8 +80,8 @@ private:
 struct addrmap_mutable;
 
 /* Fixed address maps.  */
-struct addrmap_fixed : public addrmap,
-                      public allocate_on_obstack<addrmap_fixed>
+struct addrmap_fixed final : public addrmap,
+                            public allocate_on_obstack<addrmap_fixed>
 {
 public:
 
@@ -116,7 +116,7 @@ private:
 
 /* Mutable address maps.  */
 
-struct addrmap_mutable : public addrmap
+struct addrmap_mutable final : public addrmap
 {
 public: