summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2017-11-17 11:55:38 -0700
committerTom Tromey <tom@tromey.com>2017-11-17 14:34:14 -0700
commit68e745e38edebd2a12d60ef7b5774066db3f1c40 (patch)
treeb3ac1b1b134242ed775ec16b2d16272412c7e295
parent71a3c36949407eafea744bf00334c4e0c136f927 (diff)
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.
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/dwarf2read.c2
-rw-r--r--gdb/symtab.c2
-rw-r--r--gdb/symtab.h11
4 files changed, 11 insertions, 10 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index b7ee8693a9..5aecd43182 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 828334522f..86b699671a 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 38bc7136c2..3d5936774d 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 9466f29d0f..83d0ff2569 100644
--- a/gdb/symtab.h
+++ b/gdb/symtab.h
@@ -1167,16 +1167,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;