Patch for DW_TAG_packed_type
Brian Nettleton @pulsar
bn@sd.aonix.com
Mon May 3 16:17:00 GMT 1999
This patch adds support for DW_TAG_packed_type which is generated by Aonix
ObjectAda.
Mon May 3 16:03:38 1999 Brian Nettleton <bn@aonix.com>
* dwarf2read.c: Added read_packed_type for DW_TAG_packed_type.
Index: gdb/dwarf2read.c
*** ../gdb-4.17.patch/gdb/dwarf2read.c Mon May 3 15:56:52 1999
--- gdb/dwarf2read.c Mon May 3 16:00:20 1999
*************** static void read_tag_const_type PARAMS (
*** 700,705 ****
--- 700,708 ----
static void read_tag_volatile_type PARAMS ((struct die_info *,
struct objfile *));
+ static void read_tag_packed_type PARAMS ((struct die_info *,
+ struct objfile *));
+
static void read_tag_string_type PARAMS ((struct die_info *,
struct objfile *));
*************** process_die (die, objfile)
*** 1449,1454 ****
--- 1452,1460 ----
new_symbol (die, die->type, objfile);
}
break;
+ case DW_TAG_packed_type:
+ read_tag_packed_type (die, objfile);
+ break;
case DW_TAG_common_block:
read_common_block (die, objfile);
break;
*************** read_tag_volatile_type (die, objfile)
*** 2914,2919 ****
--- 2920,2964 ----
die->type = die_type (die, objfile);
}
+ /* Extract all information from a DW_TAG_packed_type DIE and add to
+ the user defined type vector. */
+
+ static void
+ read_tag_packed_type (die, objfile)
+ struct die_info *die;
+ struct objfile *objfile;
+ {
+ struct type *type;
+ struct attribute *attr;
+
+ if (die->type)
+ {
+ return;
+ }
+
+ type = alloc_type(objfile);
+ memcpy(type, die_type (die, objfile), sizeof(struct type));
+ attr = dwarf_attr (die, DW_AT_name);
+ if (attr && DW_STRING (attr))
+ {
+ TYPE_TAG_NAME (type) = obsavestring (check_case(DW_STRING (attr)),
+ strlen (DW_STRING (attr)),
+ &objfile->type_obstack);
+ }
+ else
+ {
+ TYPE_TAG_NAME (type) = "";
+ }
+
+ attr = dwarf_attr (die, DW_AT_byte_size);
+ if (attr)
+ {
+ TYPE_LENGTH (type) = DW_UNSND (attr);
+ }
+
+ die->type = type;
+ }
+
/* Extract all information from a DW_TAG_string_type DIE and add to
the user defined type vector. It isn't really a user defined type,
but it behaves like one, with other DIE's using an AT_user_def_type
*************** read_type_die (die, objfile)
*** 4696,4701 ****
--- 4741,4749 ----
break;
case DW_TAG_subrange_type:
read_subrange_type (die, objfile);
+ break;
+ case DW_TAG_packed_type:
+ read_tag_packed_type (die, objfile);
break;
default:
complain (&dwarf2_unexpected_tag, dwarf_tag_name (die->tag));
More information about the Gdb-patches
mailing list