This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[RFA v2 2/3] Make template_symbol derive from symbol


This changes template_symbol to derive from symbol, which seems a bit
cleaner; and also more consistent with rust_vtable_symbol.

2017-11-17  Tom Tromey  <tom@tromey.com>

	* dwarf2read.c (read_func_scope): Update.
	* symtab.h (struct template_symbol): Derive from symbol.
	<base>: Remove.
---
 gdb/ChangeLog    |  6 ++++++
 gdb/dwarf2read.c |  2 +-
 gdb/symtab.c     |  2 +-
 gdb/symtab.h     | 11 +++--------
 4 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index c4d0457..1551654 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,11 @@
 2017-11-17  Tom Tromey  <tom@tromey.com>
 
+	* dwarf2read.c (read_func_scope): Update.
+	* symtab.h (struct template_symbol): Derive from symbol.
+	<base>: Remove.
+
+2017-11-17  Tom Tromey  <tom@tromey.com>
+
 	* symtab.h (struct symbol) <is_rust_vtable>: New member.
 	(struct rust_vtable_symbol): New.
 	(find_symbol_at_address): Declare.
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index 8283345..86b6996 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -12263,7 +12263,7 @@ read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
 	  || child_die->tag == DW_TAG_template_value_param)
 	{
 	  templ_func = allocate_template_symbol (objfile);
-	  templ_func->base.is_cplus_template_function = 1;
+	  templ_func->is_cplus_template_function = 1;
 	  break;
 	}
     }
diff --git a/gdb/symtab.c b/gdb/symtab.c
index 38bc713..3d59367 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -5800,7 +5800,7 @@ allocate_template_symbol (struct objfile *objfile)
   struct template_symbol *result;
 
   result = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct template_symbol);
-  initialize_objfile_symbol_1 (&result->base);
+  initialize_objfile_symbol_1 (result);
 
   return result;
 }
diff --git a/gdb/symtab.h b/gdb/symtab.h
index 0845ae8..6ecce81 100644
--- a/gdb/symtab.h
+++ b/gdb/symtab.h
@@ -1166,16 +1166,11 @@ extern struct symtab *symbol_symtab (const struct symbol *symbol);
 extern void symbol_set_symtab (struct symbol *symbol, struct symtab *symtab);
 
 /* An instance of this type is used to represent a C++ template
-   function.  It includes a "struct symbol" as a kind of base class;
-   users downcast to "struct template_symbol *" when needed.  A symbol
-   is really of this type iff SYMBOL_IS_CPLUS_TEMPLATE_FUNCTION is
-   true.  */
+   function.  A symbol is really of this type iff
+   SYMBOL_IS_CPLUS_TEMPLATE_FUNCTION is true.  */
 
-struct template_symbol
+struct template_symbol : public symbol
 {
-  /* The base class.  */
-  struct symbol base;
-
   /* The number of template arguments.  */
   int n_template_arguments;
 
-- 
2.9.5


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]