diff options
Diffstat (limited to 'gdb/dwarf2read.c')
-rw-r--r-- | gdb/dwarf2read.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 68c2f8e..67898e4 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -621,6 +621,8 @@ static void set_cu_language PARAMS ((unsigned int)); static struct attribute *dwarf_attr PARAMS ((struct die_info *, unsigned int)); +static int die_is_declaration (struct die_info *); + static void dwarf_decode_lines PARAMS ((unsigned int, char *, bfd *)); static void dwarf2_start_subfile PARAMS ((char *, char *)); @@ -2202,7 +2204,7 @@ read_structure_scope (die, objfile) type within the structure itself. */ die->type = type; - if (die->has_children) + if (die->has_children && ! die_is_declaration (die)) { struct field_info fi; struct die_info *child_die; @@ -3700,6 +3702,13 @@ dwarf_attr (die, name) return NULL; } +static int +die_is_declaration (struct die_info *die) +{ + return (dwarf_attr (die, DW_AT_declaration) + && ! dwarf_attr (die, DW_AT_specification)); +} + /* Decode the line number information for the compilation unit whose line number info is at OFFSET in the .debug_line section. The compilation directory of the file is passed in COMP_DIR. */ |