Make mapped_debug_names and mapped_index final
authorSimon Marchi <simon.marchi@ericsson.com>
Sat, 30 Dec 2017 05:10:05 +0000 (00:10 -0500)
committerSimon Marchi <simon.marchi@ericsson.com>
Sat, 30 Dec 2017 05:10:17 +0000 (00:10 -0500)
When compiling with Clang 6, I see these warnings:

/home/emaisin/src/binutils-gdb/gdb/dwarf2read.c:25421:5: error: destructor called on non-final 'mapped_index' that has virtual functions but non-virtual destructor [-Werror,-Wdelete-non-virtual-dtor]
    data->index_table->~mapped_index ();
    ^
In file included from /home/emaisin/src/binutils-gdb/gdb/dwarf2read.c:31:
In file included from /home/emaisin/src/binutils-gdb/gdb/defs.h:28:
In file included from /home/emaisin/src/binutils-gdb/gdb/common/common-defs.h:92:
In file included from /home/emaisin/src/binutils-gdb/gdb/common/gdb_unique_ptr.h:23:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/memory:81:
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/unique_ptr.h:76:2: error: delete called on non-final 'mapped_debug_names' that has virtual functions but non-virtual destructor [-Werror,-Wdelete-non-virtual-dtor]
        delete __ptr;
        ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/unique_ptr.h:236:4: note: in instantiation of member function 'std::default_delete<mapped_debug_names>::operator()' requested here
          get_deleter()(__ptr);
          ^
/home/emaisin/src/binutils-gdb/gdb/dwarf2read.c:2374:21: note: in instantiation of member function 'std::unique_ptr<mapped_debug_names, std::default_delete<mapped_debug_names> >::~unique_ptr' requested here
dwarf2_per_objfile::dwarf2_per_objfile (struct objfile *objfile_,
                    ^

This patch silences these warnings by making the classes final.

gdb/ChangeLog:

* dwarf2read.c (struct mapped_debug_names): Make final.
(struct mapped_index): Make final.

gdb/ChangeLog
gdb/dwarf2read.c

index 9cc060e..b94384b 100644 (file)
@@ -1,3 +1,8 @@
+2017-12-30  Simon Marchi  <simon.marchi@ericsson.com>
+
+       * dwarf2read.c (struct mapped_debug_names): Make final.
+       (struct mapped_index): Make final.
+
 2017-12-29  Simon Marchi  <simon.marchi@ericsson.com>
 
        * common/diagnostics.h
index 484cbce..85e33f0 100644 (file)
@@ -277,7 +277,7 @@ protected:
 
 /* A description of the mapped index.  The file format is described in
    a comment by the code that writes the index.  */
-struct mapped_index : public mapped_index_base
+struct mapped_index final : public mapped_index_base
 {
   /* A slot/bucket in the symbol table hash.  */
   struct symbol_table_slot
@@ -318,7 +318,7 @@ struct mapped_index : public mapped_index_base
 
 /* A description of the mapped .debug_names.
    Uninitialized map has CU_COUNT 0.  */
-struct mapped_debug_names : public mapped_index_base
+struct mapped_debug_names final : public mapped_index_base
 {
   bfd_endian dwarf5_byte_order;
   bool dwarf5_is_dwarf64;