* dwarf2read.c (read_unspecified_type): New function.
authorJulian Brown <julian@codesourcery.com>
Wed, 14 Jun 2006 15:06:35 +0000 (15:06 +0000)
committerJulian Brown <julian@codesourcery.com>
Wed, 14 Jun 2006 15:06:35 +0000 (15:06 +0000)
(read_type_die): Handle DW_TAG_unspecified_type.
(Committed by Julian Brown.)

gdb/ChangeLog
gdb/dwarf2read.c

index 9a486f4..6feb429 100644 (file)
@@ -1,3 +1,9 @@
+2006-06-14  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * dwarf2read.c (read_unspecified_type): New function.
+       (read_type_die): Handle DW_TAG_unspecified_type.
+       (Committed by Julian Brown.)
+
 2006-06-13  Daniel Jacobowitz  <dan@codesourcery.com>
 
        * symfile.c (load_command): Check for a changed executable before
index 057df7d..bcd796f 100644 (file)
@@ -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));