Patch to handle DWARF2 DW_FORM_indirect
Elena Zannoni
ezannoni@cygnus.com
Wed Nov 21 23:08:00 GMT 2001
More information about the Binutils mailing list
Wed Nov 21 23:08:00 GMT 2001
- Previous message (by thread): Patch to handle DWARF2 DW_FORM_indirect
- Next message (by thread): Patch to handle DWARF2 DW_FORM_indirect
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Keith.Walker writes: > The DWARF2 specification allows the form of attributes to be described > "inline" with DW_FORM_indirect rather than the form being specified in a > separate abbreviation table. The following patch adds support for > DW_FORM_indirect in BFD, binutils and GDB. > > If there are no objections, can this patch be approved and applied by the > GDB and binutils maintainers. > > Keith > Your patch won't apply cleanly to gdb anymore, after Jakub's patch for DW_FORM_strp was committed. One comment: the 'case DW_FORM_indirect:' resulting in an error message of unsupported attribute, is not correct anymore. Could you emit a more pertinent message? Other than that, it's fine. Could you repost an updated patch, just for the record? Thanks Elena > > Index: gdb/ChangeLog > =================================================================== > RCS file: /cvs/src/src/gdb/ChangeLog,v > retrieving revision 1.1758 > diff -u -r1.1758 ChangeLog > --- ChangeLog 2001/11/13 03:10:33 1.1758 > +++ ChangeLog 2001/11/13 17:24:15 > @@ -1,3 +1,8 @@ > +2001-11-13 Keith Walker <keith.walker@arm.com> > + * dwarf2read.c (read_attribute_value): New function to handle > + DW_FORM_indirect > + (read_attribute): uses read_attribute_value > + > 2001-11-10 Andrew Cagney <ac131313@redhat.com> > > * config/i960/tm-nindy960.h (REGISTER_CONVERTIBLE) > > > Index: gdb/dwarf2read.c > =================================================================== > RCS file: /cvs/src/src/gdb/dwarf2read.c,v > retrieving revision 1.34 > diff -u -r1.34 dwarf2read.c > --- dwarf2read.c 2001/11/12 20:36:55 1.34 > +++ dwarf2read.c 2001/11/13 17:24:25 > @@ -593,6 +593,9 @@ > static char *read_attribute (struct attribute *, struct attr_abbrev *, > bfd *, char *, const struct comp_unit_head *); > > +static char *read_attribute_value (struct attribute *, unsigned, > + bfd *, char *, const struct comp_unit_head *); > + > static unsigned int read_1_byte (bfd *, char *); > > static int read_1_signed_byte (bfd *, char *); > @@ -3333,19 +3336,18 @@ > return info_ptr; > } > > -/* Read an attribute described by an abbreviated attribute. */ > +/* Read an attribute value described by an attribute form. */ > > static char * > -read_attribute (struct attribute *attr, struct attr_abbrev *abbrev, > +read_attribute_value (struct attribute *attr, unsigned form, > bfd *abfd, char *info_ptr, > const struct comp_unit_head *cu_header) > { > unsigned int bytes_read; > struct dwarf_block *blk; > > - attr->name = abbrev->name; > - attr->form = abbrev->form; > - switch (abbrev->form) > + attr->form = form; > + switch (form) > { > case DW_FORM_addr: > case DW_FORM_ref_addr: > @@ -3436,15 +3438,30 @@ > DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read); > info_ptr += bytes_read; > break; > - case DW_FORM_strp: > case DW_FORM_indirect: > + form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read); > + info_ptr += bytes_read; > + info_ptr = read_attribute_value (attr, form, abfd, info_ptr, cu_header); > + break; > + case DW_FORM_strp: > default: > error ("Dwarf Error: Cannot handle %s in DWARF reader.", > - dwarf_form_name (abbrev->form)); > + dwarf_form_name (form)); > } > return info_ptr; > } > > +/* Read an attribute described by an abbreviated attribute. */ > + > +static char * > +read_attribute (struct attribute *attr, struct attr_abbrev *abbrev, > + bfd *abfd, char *info_ptr, > + const struct comp_unit_head *cu_header) > +{ > + attr->name = abbrev->name; > + return read_attribute_value (attr, abbrev->form, abfd, info_ptr, cu_header); > +} > + > /* read dwarf information from a buffer */ > > static unsigned int > @@ -5602,7 +5619,9 @@ > break; > case DW_FORM_strp: /* we do not support separate string > section yet */ > - case DW_FORM_indirect: /* we do not handle indirect yet */ > + case DW_FORM_indirect: /* the reader will have reduced the indirect > + form to the base type so this form > + should not occur */ > default: > fprintf (stderr, "unsupported attribute form: %d.", > die->attrs[i].form); > > > > Keith Walker keith.walker@arm.com Tel:+44 (1628) 427732 > ARM Ltd http://www.arm.com
- Previous message (by thread): Patch to handle DWARF2 DW_FORM_indirect
- Next message (by thread): Patch to handle DWARF2 DW_FORM_indirect
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Binutils mailing list