* dwarf2read.c (partial_die_info): Add field has_byte_size.
(add_partial_symbol): Correct identification of external references. (process_structure_scope): Likewise. (read_partial_die): Handle DW_AT_byte_size attribute.
This commit is contained in:
parent
20414cabef
commit
fa4028e955
2 changed files with 28 additions and 7 deletions
|
@ -1,4 +1,11 @@
|
||||||
2007-01-04 Daniel Jacobowitz <dan@codesourcery.com>
|
2006-02-05 Joel Brobecker <brobecker@adacore.com>
|
||||||
|
|
||||||
|
* dwarf2read.c (partial_die_info): Add field has_byte_size.
|
||||||
|
(add_partial_symbol): Correct identification of external references.
|
||||||
|
(process_structure_scope): Likewise.
|
||||||
|
(read_partial_die): Handle DW_AT_byte_size attribute.
|
||||||
|
|
||||||
|
2007-01-05 Daniel Jacobowitz <dan@codesourcery.com>
|
||||||
|
|
||||||
* xml-support.c (gdb_xml_end_element): Remove wrong backslashes.
|
* xml-support.c (gdb_xml_end_element): Remove wrong backslashes.
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* DWARF 2 debugging format support for GDB.
|
/* DWARF 2 debugging format support for GDB.
|
||||||
|
|
||||||
Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
|
Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
|
||||||
2002, 2003, 2004, 2005, 2006
|
2002, 2003, 2004, 2005, 2006, 2007
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
|
Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
|
||||||
|
@ -467,6 +467,9 @@ struct partial_die_info
|
||||||
computed. */
|
computed. */
|
||||||
unsigned int scope_set : 1;
|
unsigned int scope_set : 1;
|
||||||
|
|
||||||
|
/* Flag set if the DIE has a byte_size attribute. */
|
||||||
|
unsigned int has_byte_size : 1;
|
||||||
|
|
||||||
/* The name of this DIE. Normally the value of DW_AT_name, but
|
/* The name of this DIE. Normally the value of DW_AT_name, but
|
||||||
sometimes DW_TAG_MIPS_linkage_name or a string computed in some
|
sometimes DW_TAG_MIPS_linkage_name or a string computed in some
|
||||||
other fashion. */
|
other fashion. */
|
||||||
|
@ -1979,12 +1982,16 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
|
||||||
case DW_TAG_structure_type:
|
case DW_TAG_structure_type:
|
||||||
case DW_TAG_union_type:
|
case DW_TAG_union_type:
|
||||||
case DW_TAG_enumeration_type:
|
case DW_TAG_enumeration_type:
|
||||||
/* Skip aggregate types without children, these are external
|
/* Skip external references. The DWARF standard says in the section
|
||||||
references. */
|
about "Structure, Union, and Class Type Entries": "An incomplete
|
||||||
|
structure, union or class type is represented by a structure,
|
||||||
|
union or class entry that does not have a byte size attribute
|
||||||
|
and that has a DW_AT_declaration attribute." */
|
||||||
|
if (!pdi->has_byte_size && pdi->is_declaration)
|
||||||
|
return;
|
||||||
|
|
||||||
/* NOTE: carlton/2003-10-07: See comment in new_symbol about
|
/* NOTE: carlton/2003-10-07: See comment in new_symbol about
|
||||||
static vs. global. */
|
static vs. global. */
|
||||||
if (pdi->has_children == 0)
|
|
||||||
return;
|
|
||||||
add_psymbol_to_list (actual_name, strlen (actual_name),
|
add_psymbol_to_list (actual_name, strlen (actual_name),
|
||||||
STRUCT_DOMAIN, LOC_TYPEDEF,
|
STRUCT_DOMAIN, LOC_TYPEDEF,
|
||||||
(cu->language == language_cplus
|
(cu->language == language_cplus
|
||||||
|
@ -4010,7 +4017,11 @@ process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
|
||||||
child_die = sibling_die (child_die);
|
child_die = sibling_die (child_die);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (die->child != NULL && ! die_is_declaration (die, cu))
|
/* Do not consider external references. According to the DWARF standard,
|
||||||
|
these DIEs are identified by the fact that they have no byte_size
|
||||||
|
attribute, and a declaration attribute. */
|
||||||
|
if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
|
||||||
|
|| !die_is_declaration (die, cu))
|
||||||
new_symbol (die, die->type, cu);
|
new_symbol (die, die->type, cu);
|
||||||
|
|
||||||
processing_current_prefix = previous_prefix;
|
processing_current_prefix = previous_prefix;
|
||||||
|
@ -5575,6 +5586,9 @@ read_partial_die (struct partial_die_info *part_die,
|
||||||
part_die->has_stmt_list = 1;
|
part_die->has_stmt_list = 1;
|
||||||
part_die->line_offset = DW_UNSND (&attr);
|
part_die->line_offset = DW_UNSND (&attr);
|
||||||
break;
|
break;
|
||||||
|
case DW_AT_byte_size:
|
||||||
|
part_die->has_byte_size = 1;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue