From 68e745e38edebd2a12d60ef7b5774066db3f1c40 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Fri, 17 Nov 2017 11:55:38 -0700 Subject: [PATCH] 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 * dwarf2read.c (read_func_scope): Update. * symtab.h (struct template_symbol): Derive from symbol. : 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 b7ee869..5aecd43 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,11 @@ 2017-11-17 Tom Tromey + * dwarf2read.c (read_func_scope): Update. + * symtab.h (struct template_symbol): Derive from symbol. + : Remove. + +2017-11-17 Tom Tromey + * symtab.h (struct symbol) : 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 9466f29..83d0ff2 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; -- 2.7.4