Handle DW_TAG_unspecified_type

2011-11-14  Jim Ingham  <jingham@apple.com>

        * dwarf2read.c (read_type_die): Handle DW_TAG_unspecified_type.
        (read_tag_unspecified_type): New function, add a type for the
        DW_TAG_unspecified_type die.

Obtained from:	Apple, gdb-1752
This commit is contained in:
Ed Maste 2013-06-12 20:11:49 +00:00
parent 513f8c0cb8
commit 8d56b202dd
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=251667

View File

@ -825,6 +825,8 @@ static void read_array_type (struct die_info *, struct dwarf2_cu *);
static void read_tag_pointer_type (struct die_info *, struct dwarf2_cu *);
static void read_tag_unspecified_type (struct die_info *, struct dwarf2_cu *);
static void read_tag_ptr_to_member_type (struct die_info *,
struct dwarf2_cu *);
@ -3721,6 +3723,27 @@ read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu)
die->type = type;
}
static void
read_tag_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
{
struct objfile *objfile = cu->objfile;
struct type *type;
struct attribute *attr;
if (die->type)
{
return;
}
type = alloc_type (objfile);
TYPE_LENGTH (type) = 0;
attr = dwarf2_attr (die, DW_AT_name, cu);
if (attr && DW_STRING (attr))
TYPE_NAME (type) = DW_STRING (attr);
die->type = type;
}
static void
read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
{
@ -6094,6 +6117,9 @@ read_type_die (struct die_info *die, struct dwarf2_cu *cu)
case DW_TAG_pointer_type:
read_tag_pointer_type (die, cu);
break;
case DW_TAG_unspecified_type:
read_tag_unspecified_type (die, cu);
break;
case DW_TAG_ptr_to_member_type:
read_tag_ptr_to_member_type (die, cu);
break;