From 81a17f794b5eaadb8eb9ab97cd89cd2982a62191 Mon Sep 17 00:00:00 2001 From: Julian Brown Date: Wed, 14 Jun 2006 15:06:35 +0000 Subject: [PATCH] * dwarf2read.c (read_unspecified_type): New function. (read_type_die): Handle DW_TAG_unspecified_type. (Committed by Julian Brown.) --- gdb/ChangeLog | 6 ++++++ gdb/dwarf2read.c | 20 ++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 9a486f4772..6feb42952f 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2006-06-14 Daniel Jacobowitz + + * dwarf2read.c (read_unspecified_type): New function. + (read_type_die): Handle DW_TAG_unspecified_type. + (Committed by Julian Brown.) + 2006-06-13 Daniel Jacobowitz * symfile.c (load_command): Check for a changed executable before diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 057df7dfd2..bcd796f230 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -4859,6 +4859,23 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu) set_die_type (die, range_type, cu); } +static void +read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu) +{ + struct type *type; + struct attribute *attr; + + if (die->type) + return; + + /* For now, we only support the C meaning of an unspecified type: void. */ + + attr = dwarf2_attr (die, DW_AT_name, cu); + type = init_type (TYPE_CODE_VOID, 0, 0, attr ? DW_STRING (attr) : "", + cu->objfile); + + set_die_type (die, type, cu); +} /* Read a whole compilation unit into a linked list of dies. */ @@ -7345,6 +7362,9 @@ read_type_die (struct die_info *die, struct dwarf2_cu *cu) case DW_TAG_base_type: read_base_type (die, cu); break; + case DW_TAG_unspecified_type: + read_unspecified_type (die, cu); + break; default: complaint (&symfile_complaints, _("unexpected tag in read_type_die: '%s'"), dwarf_tag_name (die->tag));