mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-29 08:24:05 +08:00
* dwarf2read.c (dwarf2_compute_name): Simplify objfile references.
(dwarf2_physname, read_import_statement): Ditto. (read_call_site_scope, dwarf2_record_block_ranges): Ditto. (process_structure_scope read_subroutine_type): Ditto. (read_typedef, load_partial_dies, read_partial_die): Ditto. (find_partial_die, dwarf_decode_lines, lookup_die_type): Ditto. (dwarf2_fetch_die_location_block): Ditto. (dwarf_decode_macros, dwarf2_symbol_mark_computed): Ditto.
This commit is contained in:
@ -1,5 +1,14 @@
|
|||||||
2012-01-01 Doug Evans <dje@google.com>
|
2012-01-01 Doug Evans <dje@google.com>
|
||||||
|
|
||||||
|
* dwarf2read.c (dwarf2_compute_name): Simplify objfile references.
|
||||||
|
(dwarf2_physname, read_import_statement): Ditto.
|
||||||
|
(read_call_site_scope, dwarf2_record_block_ranges): Ditto.
|
||||||
|
(process_structure_scope read_subroutine_type): Ditto.
|
||||||
|
(read_typedef, load_partial_dies, read_partial_die): Ditto.
|
||||||
|
(find_partial_die, dwarf_decode_lines, lookup_die_type): Ditto.
|
||||||
|
(dwarf2_fetch_die_location_block): Ditto.
|
||||||
|
(dwarf_decode_macros, dwarf2_symbol_mark_computed): Ditto.
|
||||||
|
|
||||||
* dwarf2read.c (read_signatured_type): Delete `objfile' arg.
|
* dwarf2read.c (read_signatured_type): Delete `objfile' arg.
|
||||||
All callers updated.
|
All callers updated.
|
||||||
(load_full_comp_unit, queue_comp_unit, process_queue): Ditto.
|
(load_full_comp_unit, queue_comp_unit, process_queue): Ditto.
|
||||||
|
120
gdb/dwarf2read.c
120
gdb/dwarf2read.c
@ -5078,6 +5078,8 @@ static const char *
|
|||||||
dwarf2_compute_name (char *name, struct die_info *die, struct dwarf2_cu *cu,
|
dwarf2_compute_name (char *name, struct die_info *die, struct dwarf2_cu *cu,
|
||||||
int physname)
|
int physname)
|
||||||
{
|
{
|
||||||
|
struct objfile *objfile = cu->objfile;
|
||||||
|
|
||||||
if (name == NULL)
|
if (name == NULL)
|
||||||
name = dwarf2_name (die, cu);
|
name = dwarf2_name (die, cu);
|
||||||
|
|
||||||
@ -5285,7 +5287,7 @@ dwarf2_compute_name (char *name, struct die_info *die, struct dwarf2_cu *cu,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
name = ui_file_obsavestring (buf, &cu->objfile->objfile_obstack,
|
name = ui_file_obsavestring (buf, &objfile->objfile_obstack,
|
||||||
&length);
|
&length);
|
||||||
ui_file_delete (buf);
|
ui_file_delete (buf);
|
||||||
|
|
||||||
@ -5293,7 +5295,7 @@ dwarf2_compute_name (char *name, struct die_info *die, struct dwarf2_cu *cu,
|
|||||||
{
|
{
|
||||||
char *cname
|
char *cname
|
||||||
= dwarf2_canonicalize_name (name, cu,
|
= dwarf2_canonicalize_name (name, cu,
|
||||||
&cu->objfile->objfile_obstack);
|
&objfile->objfile_obstack);
|
||||||
|
|
||||||
if (cname != NULL)
|
if (cname != NULL)
|
||||||
name = cname;
|
name = cname;
|
||||||
@ -5328,6 +5330,7 @@ dwarf2_full_name (char *name, struct die_info *die, struct dwarf2_cu *cu)
|
|||||||
static const char *
|
static const char *
|
||||||
dwarf2_physname (char *name, struct die_info *die, struct dwarf2_cu *cu)
|
dwarf2_physname (char *name, struct die_info *die, struct dwarf2_cu *cu)
|
||||||
{
|
{
|
||||||
|
struct objfile *objfile = cu->objfile;
|
||||||
struct attribute *attr;
|
struct attribute *attr;
|
||||||
const char *retval, *mangled = NULL, *canon = NULL;
|
const char *retval, *mangled = NULL, *canon = NULL;
|
||||||
struct cleanup *back_to;
|
struct cleanup *back_to;
|
||||||
@ -5390,7 +5393,7 @@ dwarf2_physname (char *name, struct die_info *die, struct dwarf2_cu *cu)
|
|||||||
complaint (&symfile_complaints,
|
complaint (&symfile_complaints,
|
||||||
_("Computed physname <%s> does not match demangled <%s> "
|
_("Computed physname <%s> does not match demangled <%s> "
|
||||||
"(from linkage <%s>) - DIE at 0x%x [in module %s]"),
|
"(from linkage <%s>) - DIE at 0x%x [in module %s]"),
|
||||||
physname, canon, mangled, die->offset, cu->objfile->name);
|
physname, canon, mangled, die->offset, objfile->name);
|
||||||
|
|
||||||
/* Prefer DW_AT_linkage_name (in the CANON form) - when it
|
/* Prefer DW_AT_linkage_name (in the CANON form) - when it
|
||||||
is available here - over computed PHYSNAME. It is safer
|
is available here - over computed PHYSNAME. It is safer
|
||||||
@ -5409,7 +5412,7 @@ dwarf2_physname (char *name, struct die_info *die, struct dwarf2_cu *cu)
|
|||||||
|
|
||||||
if (need_copy)
|
if (need_copy)
|
||||||
retval = obsavestring (retval, strlen (retval),
|
retval = obsavestring (retval, strlen (retval),
|
||||||
&cu->objfile->objfile_obstack);
|
&objfile->objfile_obstack);
|
||||||
|
|
||||||
do_cleanups (back_to);
|
do_cleanups (back_to);
|
||||||
return retval;
|
return retval;
|
||||||
@ -5420,6 +5423,7 @@ dwarf2_physname (char *name, struct die_info *die, struct dwarf2_cu *cu)
|
|||||||
static void
|
static void
|
||||||
read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
|
read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
|
||||||
{
|
{
|
||||||
|
struct objfile *objfile = cu->objfile;
|
||||||
struct attribute *import_attr;
|
struct attribute *import_attr;
|
||||||
struct die_info *imported_die, *child_die;
|
struct die_info *imported_die, *child_die;
|
||||||
struct dwarf2_cu *imported_cu;
|
struct dwarf2_cu *imported_cu;
|
||||||
@ -5526,7 +5530,7 @@ read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
|
|||||||
complaint (&symfile_complaints,
|
complaint (&symfile_complaints,
|
||||||
_("child DW_TAG_imported_declaration expected "
|
_("child DW_TAG_imported_declaration expected "
|
||||||
"- DIE at 0x%x [in module %s]"),
|
"- DIE at 0x%x [in module %s]"),
|
||||||
child_die->offset, cu->objfile->name);
|
child_die->offset, objfile->name);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5547,7 +5551,7 @@ read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
|
|||||||
complaint (&symfile_complaints,
|
complaint (&symfile_complaints,
|
||||||
_("child DW_TAG_imported_declaration has unknown "
|
_("child DW_TAG_imported_declaration has unknown "
|
||||||
"imported name - DIE at 0x%x [in module %s]"),
|
"imported name - DIE at 0x%x [in module %s]"),
|
||||||
child_die->offset, cu->objfile->name);
|
child_die->offset, objfile->name);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5561,7 +5565,7 @@ read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
|
|||||||
import_alias,
|
import_alias,
|
||||||
imported_declaration,
|
imported_declaration,
|
||||||
excludes,
|
excludes,
|
||||||
&cu->objfile->objfile_obstack);
|
&objfile->objfile_obstack);
|
||||||
|
|
||||||
do_cleanups (cleanups);
|
do_cleanups (cleanups);
|
||||||
}
|
}
|
||||||
@ -6224,7 +6228,7 @@ read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
|
|||||||
complaint (&symfile_complaints,
|
complaint (&symfile_complaints,
|
||||||
_("missing DW_AT_low_pc for DW_TAG_GNU_call_site "
|
_("missing DW_AT_low_pc for DW_TAG_GNU_call_site "
|
||||||
"DIE 0x%x [in module %s]"),
|
"DIE 0x%x [in module %s]"),
|
||||||
die->offset, cu->objfile->name);
|
die->offset, objfile->name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
pc = DW_ADDR (attr) + baseaddr;
|
pc = DW_ADDR (attr) + baseaddr;
|
||||||
@ -6240,7 +6244,7 @@ read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
|
|||||||
complaint (&symfile_complaints,
|
complaint (&symfile_complaints,
|
||||||
_("Duplicate PC %s for DW_TAG_GNU_call_site "
|
_("Duplicate PC %s for DW_TAG_GNU_call_site "
|
||||||
"DIE 0x%x [in module %s]"),
|
"DIE 0x%x [in module %s]"),
|
||||||
paddress (gdbarch, pc), die->offset, cu->objfile->name);
|
paddress (gdbarch, pc), die->offset, objfile->name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6255,7 +6259,7 @@ read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
|
|||||||
complaint (&symfile_complaints,
|
complaint (&symfile_complaints,
|
||||||
_("Tag %d is not DW_TAG_GNU_call_site_parameter in "
|
_("Tag %d is not DW_TAG_GNU_call_site_parameter in "
|
||||||
"DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
|
"DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
|
||||||
child_die->tag, child_die->offset, cu->objfile->name);
|
child_die->tag, child_die->offset, objfile->name);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6313,7 +6317,7 @@ read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
|
|||||||
complaint (&symfile_complaints,
|
complaint (&symfile_complaints,
|
||||||
_("Cannot find function owning DW_TAG_GNU_call_site "
|
_("Cannot find function owning DW_TAG_GNU_call_site "
|
||||||
"DIE 0x%x [in module %s]"),
|
"DIE 0x%x [in module %s]"),
|
||||||
die->offset, cu->objfile->name);
|
die->offset, objfile->name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6336,7 +6340,6 @@ read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
|
|||||||
}
|
}
|
||||||
else if (is_ref_attr (attr))
|
else if (is_ref_attr (attr))
|
||||||
{
|
{
|
||||||
struct objfile *objfile = cu->objfile;
|
|
||||||
struct dwarf2_cu *target_cu = cu;
|
struct dwarf2_cu *target_cu = cu;
|
||||||
struct die_info *target_die;
|
struct die_info *target_die;
|
||||||
|
|
||||||
@ -6351,7 +6354,7 @@ read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
|
|||||||
complaint (&symfile_complaints,
|
complaint (&symfile_complaints,
|
||||||
_("DW_AT_GNU_call_site_target target DIE has invalid "
|
_("DW_AT_GNU_call_site_target target DIE has invalid "
|
||||||
"physname, for referencing DIE 0x%x [in module %s]"),
|
"physname, for referencing DIE 0x%x [in module %s]"),
|
||||||
die->offset, cu->objfile->name);
|
die->offset, objfile->name);
|
||||||
else
|
else
|
||||||
SET_FIELD_PHYSNAME (call_site->target, (char *) target_physname);
|
SET_FIELD_PHYSNAME (call_site->target, (char *) target_physname);
|
||||||
}
|
}
|
||||||
@ -6364,7 +6367,7 @@ read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
|
|||||||
complaint (&symfile_complaints,
|
complaint (&symfile_complaints,
|
||||||
_("DW_AT_GNU_call_site_target target DIE has invalid "
|
_("DW_AT_GNU_call_site_target target DIE has invalid "
|
||||||
"low pc, for referencing DIE 0x%x [in module %s]"),
|
"low pc, for referencing DIE 0x%x [in module %s]"),
|
||||||
die->offset, cu->objfile->name);
|
die->offset, objfile->name);
|
||||||
else
|
else
|
||||||
SET_FIELD_PHYSADDR (call_site->target, lowpc + baseaddr);
|
SET_FIELD_PHYSADDR (call_site->target, lowpc + baseaddr);
|
||||||
}
|
}
|
||||||
@ -6373,7 +6376,7 @@ read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
|
|||||||
complaint (&symfile_complaints,
|
complaint (&symfile_complaints,
|
||||||
_("DW_TAG_GNU_call_site DW_AT_GNU_call_site_target is neither "
|
_("DW_TAG_GNU_call_site DW_AT_GNU_call_site_target is neither "
|
||||||
"block nor reference, for DIE 0x%x [in module %s]"),
|
"block nor reference, for DIE 0x%x [in module %s]"),
|
||||||
die->offset, cu->objfile->name);
|
die->offset, objfile->name);
|
||||||
|
|
||||||
call_site->per_cu = cu->per_cu;
|
call_site->per_cu = cu->per_cu;
|
||||||
|
|
||||||
@ -6402,7 +6405,7 @@ read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
|
|||||||
complaint (&symfile_complaints,
|
complaint (&symfile_complaints,
|
||||||
_("No DW_FORM_block* DW_AT_location for "
|
_("No DW_FORM_block* DW_AT_location for "
|
||||||
"DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
|
"DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
|
||||||
child_die->offset, cu->objfile->name);
|
child_die->offset, objfile->name);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
parameter->dwarf_reg = dwarf_block_to_dwarf_reg (DW_BLOCK (attr)->data,
|
parameter->dwarf_reg = dwarf_block_to_dwarf_reg (DW_BLOCK (attr)->data,
|
||||||
@ -6416,7 +6419,7 @@ read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
|
|||||||
_("Only single DW_OP_reg or DW_OP_fbreg is supported "
|
_("Only single DW_OP_reg or DW_OP_fbreg is supported "
|
||||||
"for DW_FORM_block* DW_AT_location for "
|
"for DW_FORM_block* DW_AT_location for "
|
||||||
"DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
|
"DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
|
||||||
child_die->offset, cu->objfile->name);
|
child_die->offset, objfile->name);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6426,7 +6429,7 @@ read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
|
|||||||
complaint (&symfile_complaints,
|
complaint (&symfile_complaints,
|
||||||
_("No DW_FORM_block* DW_AT_GNU_call_site_value for "
|
_("No DW_FORM_block* DW_AT_GNU_call_site_value for "
|
||||||
"DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
|
"DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
|
||||||
child_die->offset, cu->objfile->name);
|
child_die->offset, objfile->name);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
parameter->value = DW_BLOCK (attr)->data;
|
parameter->value = DW_BLOCK (attr)->data;
|
||||||
@ -6444,7 +6447,7 @@ read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
|
|||||||
complaint (&symfile_complaints,
|
complaint (&symfile_complaints,
|
||||||
_("No DW_FORM_block* DW_AT_GNU_call_site_data_value for "
|
_("No DW_FORM_block* DW_AT_GNU_call_site_data_value for "
|
||||||
"DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
|
"DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
|
||||||
child_die->offset, cu->objfile->name);
|
child_die->offset, objfile->name);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
parameter->data_value = DW_BLOCK (attr)->data;
|
parameter->data_value = DW_BLOCK (attr)->data;
|
||||||
@ -6760,6 +6763,7 @@ static void
|
|||||||
dwarf2_record_block_ranges (struct die_info *die, struct block *block,
|
dwarf2_record_block_ranges (struct die_info *die, struct block *block,
|
||||||
CORE_ADDR baseaddr, struct dwarf2_cu *cu)
|
CORE_ADDR baseaddr, struct dwarf2_cu *cu)
|
||||||
{
|
{
|
||||||
|
struct objfile *objfile = cu->objfile;
|
||||||
struct attribute *attr;
|
struct attribute *attr;
|
||||||
|
|
||||||
attr = dwarf2_attr (die, DW_AT_high_pc, cu);
|
attr = dwarf2_attr (die, DW_AT_high_pc, cu);
|
||||||
@ -6779,7 +6783,7 @@ dwarf2_record_block_ranges (struct die_info *die, struct block *block,
|
|||||||
attr = dwarf2_attr (die, DW_AT_ranges, cu);
|
attr = dwarf2_attr (die, DW_AT_ranges, cu);
|
||||||
if (attr)
|
if (attr)
|
||||||
{
|
{
|
||||||
bfd *obfd = cu->objfile->obfd;
|
bfd *obfd = objfile->obfd;
|
||||||
|
|
||||||
/* The value of the DW_AT_ranges attribute is the offset of the
|
/* The value of the DW_AT_ranges attribute is the offset of the
|
||||||
address range list in the .debug_ranges section. */
|
address range list in the .debug_ranges section. */
|
||||||
@ -7894,7 +7898,7 @@ process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
|
|||||||
TYPE_CPLUS_REALLY_JAVA (type) = cu->language == language_java;
|
TYPE_CPLUS_REALLY_JAVA (type) = cu->language == language_java;
|
||||||
}
|
}
|
||||||
|
|
||||||
quirk_gcc_member_function_pointer (type, cu->objfile);
|
quirk_gcc_member_function_pointer (type, objfile);
|
||||||
|
|
||||||
/* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
|
/* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
|
||||||
snapshots) has been known to create a die giving a declaration
|
snapshots) has been known to create a die giving a declaration
|
||||||
@ -8681,6 +8685,7 @@ read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
|
|||||||
static struct type *
|
static struct type *
|
||||||
read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
|
read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||||
{
|
{
|
||||||
|
struct objfile *objfile = cu->objfile;
|
||||||
struct type *type; /* Type that this function returns. */
|
struct type *type; /* Type that this function returns. */
|
||||||
struct type *ftype; /* Function that returns above type. */
|
struct type *ftype; /* Function that returns above type. */
|
||||||
struct attribute *attr;
|
struct attribute *attr;
|
||||||
@ -8726,7 +8731,7 @@ read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
|
|||||||
|
|
||||||
if (die->child != NULL)
|
if (die->child != NULL)
|
||||||
{
|
{
|
||||||
struct type *void_type = objfile_type (cu->objfile)->builtin_void;
|
struct type *void_type = objfile_type (objfile)->builtin_void;
|
||||||
struct die_info *child_die;
|
struct die_info *child_die;
|
||||||
int nparams, iparams;
|
int nparams, iparams;
|
||||||
|
|
||||||
@ -8853,7 +8858,7 @@ read_typedef (struct die_info *die, struct dwarf2_cu *cu)
|
|||||||
complaint (&symfile_complaints,
|
complaint (&symfile_complaints,
|
||||||
_("Self-referential DW_TAG_typedef "
|
_("Self-referential DW_TAG_typedef "
|
||||||
"- DIE at 0x%x [in module %s]"),
|
"- DIE at 0x%x [in module %s]"),
|
||||||
die->offset, cu->objfile->name);
|
die->offset, objfile->name);
|
||||||
TYPE_TARGET_TYPE (this_type) = NULL;
|
TYPE_TARGET_TYPE (this_type) = NULL;
|
||||||
}
|
}
|
||||||
return this_type;
|
return this_type;
|
||||||
@ -9501,6 +9506,7 @@ static struct partial_die_info *
|
|||||||
load_partial_dies (bfd *abfd, gdb_byte *buffer, gdb_byte *info_ptr,
|
load_partial_dies (bfd *abfd, gdb_byte *buffer, gdb_byte *info_ptr,
|
||||||
int building_psymtab, struct dwarf2_cu *cu)
|
int building_psymtab, struct dwarf2_cu *cu)
|
||||||
{
|
{
|
||||||
|
struct objfile *objfile = cu->objfile;
|
||||||
struct partial_die_info *part_die;
|
struct partial_die_info *part_die;
|
||||||
struct partial_die_info *parent_die, *last_die, *first_die = NULL;
|
struct partial_die_info *parent_die, *last_die, *first_die = NULL;
|
||||||
struct abbrev_info *abbrev;
|
struct abbrev_info *abbrev;
|
||||||
@ -9628,8 +9634,8 @@ load_partial_dies (bfd *abfd, gdb_byte *buffer, gdb_byte *info_ptr,
|
|||||||
if (building_psymtab && part_die->name != NULL)
|
if (building_psymtab && part_die->name != NULL)
|
||||||
add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
|
add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
|
||||||
VAR_DOMAIN, LOC_TYPEDEF,
|
VAR_DOMAIN, LOC_TYPEDEF,
|
||||||
&cu->objfile->static_psymbols,
|
&objfile->static_psymbols,
|
||||||
0, (CORE_ADDR) 0, cu->language, cu->objfile);
|
0, (CORE_ADDR) 0, cu->language, objfile);
|
||||||
info_ptr = locate_pdi_sibling (part_die, buffer, info_ptr, abfd, cu);
|
info_ptr = locate_pdi_sibling (part_die, buffer, info_ptr, abfd, cu);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -9646,7 +9652,7 @@ load_partial_dies (bfd *abfd, gdb_byte *buffer, gdb_byte *info_ptr,
|
|||||||
complaint (&symfile_complaints,
|
complaint (&symfile_complaints,
|
||||||
_("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
|
_("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
|
||||||
"- DIE at 0x%x [in module %s]"),
|
"- DIE at 0x%x [in module %s]"),
|
||||||
part_die->offset, cu->objfile->name);
|
part_die->offset, objfile->name);
|
||||||
|
|
||||||
/* If we're at the second level, and we're an enumerator, and
|
/* If we're at the second level, and we're an enumerator, and
|
||||||
our parent has no specification (meaning possibly lives in a
|
our parent has no specification (meaning possibly lives in a
|
||||||
@ -9666,9 +9672,9 @@ load_partial_dies (bfd *abfd, gdb_byte *buffer, gdb_byte *info_ptr,
|
|||||||
VAR_DOMAIN, LOC_CONST,
|
VAR_DOMAIN, LOC_CONST,
|
||||||
(cu->language == language_cplus
|
(cu->language == language_cplus
|
||||||
|| cu->language == language_java)
|
|| cu->language == language_java)
|
||||||
? &cu->objfile->global_psymbols
|
? &objfile->global_psymbols
|
||||||
: &cu->objfile->static_psymbols,
|
: &objfile->static_psymbols,
|
||||||
0, (CORE_ADDR) 0, cu->language, cu->objfile);
|
0, (CORE_ADDR) 0, cu->language, objfile);
|
||||||
|
|
||||||
info_ptr = locate_pdi_sibling (part_die, buffer, info_ptr, abfd, cu);
|
info_ptr = locate_pdi_sibling (part_die, buffer, info_ptr, abfd, cu);
|
||||||
continue;
|
continue;
|
||||||
@ -9778,6 +9784,7 @@ read_partial_die (struct partial_die_info *part_die,
|
|||||||
gdb_byte *buffer, gdb_byte *info_ptr,
|
gdb_byte *buffer, gdb_byte *info_ptr,
|
||||||
struct dwarf2_cu *cu)
|
struct dwarf2_cu *cu)
|
||||||
{
|
{
|
||||||
|
struct objfile *objfile = cu->objfile;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
struct attribute attr;
|
struct attribute attr;
|
||||||
int has_low_pc_attr = 0;
|
int has_low_pc_attr = 0;
|
||||||
@ -9819,7 +9826,7 @@ read_partial_die (struct partial_die_info *part_die,
|
|||||||
default:
|
default:
|
||||||
part_die->name
|
part_die->name
|
||||||
= dwarf2_canonicalize_name (DW_STRING (&attr), cu,
|
= dwarf2_canonicalize_name (DW_STRING (&attr), cu,
|
||||||
&cu->objfile->objfile_obstack);
|
&objfile->objfile_obstack);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -9925,25 +9932,25 @@ read_partial_die (struct partial_die_info *part_die,
|
|||||||
so that GDB will ignore it. */
|
so that GDB will ignore it. */
|
||||||
if (part_die->lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
|
if (part_die->lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
|
||||||
{
|
{
|
||||||
struct gdbarch *gdbarch = get_objfile_arch (cu->objfile);
|
struct gdbarch *gdbarch = get_objfile_arch (objfile);
|
||||||
|
|
||||||
complaint (&symfile_complaints,
|
complaint (&symfile_complaints,
|
||||||
_("DW_AT_low_pc %s is zero "
|
_("DW_AT_low_pc %s is zero "
|
||||||
"for DIE at 0x%x [in module %s]"),
|
"for DIE at 0x%x [in module %s]"),
|
||||||
paddress (gdbarch, part_die->lowpc),
|
paddress (gdbarch, part_die->lowpc),
|
||||||
part_die->offset, cu->objfile->name);
|
part_die->offset, objfile->name);
|
||||||
}
|
}
|
||||||
/* dwarf2_get_pc_bounds has also the strict low < high requirement. */
|
/* dwarf2_get_pc_bounds has also the strict low < high requirement. */
|
||||||
else if (part_die->lowpc >= part_die->highpc)
|
else if (part_die->lowpc >= part_die->highpc)
|
||||||
{
|
{
|
||||||
struct gdbarch *gdbarch = get_objfile_arch (cu->objfile);
|
struct gdbarch *gdbarch = get_objfile_arch (objfile);
|
||||||
|
|
||||||
complaint (&symfile_complaints,
|
complaint (&symfile_complaints,
|
||||||
_("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
|
_("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
|
||||||
"for DIE at 0x%x [in module %s]"),
|
"for DIE at 0x%x [in module %s]"),
|
||||||
paddress (gdbarch, part_die->lowpc),
|
paddress (gdbarch, part_die->lowpc),
|
||||||
paddress (gdbarch, part_die->highpc),
|
paddress (gdbarch, part_die->highpc),
|
||||||
part_die->offset, cu->objfile->name);
|
part_die->offset, objfile->name);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
part_die->has_pc_info = 1;
|
part_die->has_pc_info = 1;
|
||||||
@ -9974,6 +9981,7 @@ find_partial_die_in_comp_unit (unsigned int offset, struct dwarf2_cu *cu)
|
|||||||
static struct partial_die_info *
|
static struct partial_die_info *
|
||||||
find_partial_die (unsigned int offset, struct dwarf2_cu *cu)
|
find_partial_die (unsigned int offset, struct dwarf2_cu *cu)
|
||||||
{
|
{
|
||||||
|
struct objfile *objfile = cu->objfile;
|
||||||
struct dwarf2_per_cu_data *per_cu = NULL;
|
struct dwarf2_per_cu_data *per_cu = NULL;
|
||||||
struct partial_die_info *pd = NULL;
|
struct partial_die_info *pd = NULL;
|
||||||
|
|
||||||
@ -9992,7 +10000,7 @@ find_partial_die (unsigned int offset, struct dwarf2_cu *cu)
|
|||||||
return pd;
|
return pd;
|
||||||
}
|
}
|
||||||
|
|
||||||
per_cu = dwarf2_find_containing_comp_unit (offset, cu->objfile);
|
per_cu = dwarf2_find_containing_comp_unit (offset, objfile);
|
||||||
|
|
||||||
if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
|
if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
|
||||||
load_partial_comp_unit (per_cu);
|
load_partial_comp_unit (per_cu);
|
||||||
@ -10014,7 +10022,7 @@ find_partial_die (unsigned int offset, struct dwarf2_cu *cu)
|
|||||||
back_to = make_cleanup (null_cleanup, 0);
|
back_to = make_cleanup (null_cleanup, 0);
|
||||||
if (per_cu->cu->dwarf2_abbrevs == NULL)
|
if (per_cu->cu->dwarf2_abbrevs == NULL)
|
||||||
{
|
{
|
||||||
dwarf2_read_abbrevs (per_cu->cu->objfile->obfd, per_cu->cu);
|
dwarf2_read_abbrevs (objfile->obfd, per_cu->cu);
|
||||||
make_cleanup (dwarf2_free_abbrev_table, per_cu->cu);
|
make_cleanup (dwarf2_free_abbrev_table, per_cu->cu);
|
||||||
}
|
}
|
||||||
info_ptr = (dwarf2_per_objfile->info.buffer
|
info_ptr = (dwarf2_per_objfile->info.buffer
|
||||||
@ -10022,11 +10030,11 @@ find_partial_die (unsigned int offset, struct dwarf2_cu *cu)
|
|||||||
+ per_cu->cu->header.first_die_offset);
|
+ per_cu->cu->header.first_die_offset);
|
||||||
abbrev = peek_die_abbrev (info_ptr, &bytes_read, per_cu->cu);
|
abbrev = peek_die_abbrev (info_ptr, &bytes_read, per_cu->cu);
|
||||||
info_ptr = read_partial_die (&comp_unit_die, abbrev, bytes_read,
|
info_ptr = read_partial_die (&comp_unit_die, abbrev, bytes_read,
|
||||||
per_cu->cu->objfile->obfd,
|
objfile->obfd,
|
||||||
dwarf2_per_objfile->info.buffer, info_ptr,
|
dwarf2_per_objfile->info.buffer, info_ptr,
|
||||||
per_cu->cu);
|
per_cu->cu);
|
||||||
if (comp_unit_die.has_children)
|
if (comp_unit_die.has_children)
|
||||||
load_partial_dies (per_cu->cu->objfile->obfd,
|
load_partial_dies (objfile->obfd,
|
||||||
dwarf2_per_objfile->info.buffer, info_ptr,
|
dwarf2_per_objfile->info.buffer, info_ptr,
|
||||||
0, per_cu->cu);
|
0, per_cu->cu);
|
||||||
do_cleanups (back_to);
|
do_cleanups (back_to);
|
||||||
@ -10040,7 +10048,7 @@ find_partial_die (unsigned int offset, struct dwarf2_cu *cu)
|
|||||||
internal_error (__FILE__, __LINE__,
|
internal_error (__FILE__, __LINE__,
|
||||||
_("could not find partial DIE 0x%x "
|
_("could not find partial DIE 0x%x "
|
||||||
"in cache [from module %s]\n"),
|
"in cache [from module %s]\n"),
|
||||||
offset, bfd_get_filename (cu->objfile->obfd));
|
offset, bfd_get_filename (objfile->obfd));
|
||||||
return pd;
|
return pd;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -11286,7 +11294,7 @@ dwarf_decode_lines (struct line_header *lh, const char *comp_dir, bfd *abfd,
|
|||||||
complaint (&symfile_complaints,
|
complaint (&symfile_complaints,
|
||||||
_(".debug_line address at offset 0x%lx is 0 "
|
_(".debug_line address at offset 0x%lx is 0 "
|
||||||
"[in module %s]"),
|
"[in module %s]"),
|
||||||
line_offset, cu->objfile->name);
|
line_offset, objfile->name);
|
||||||
p_record_line = noop_record_line;
|
p_record_line = noop_record_line;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -11495,7 +11503,7 @@ dwarf_decode_lines (struct line_header *lh, const char *comp_dir, bfd *abfd,
|
|||||||
|
|
||||||
if (current_subfile->symtab == NULL)
|
if (current_subfile->symtab == NULL)
|
||||||
current_subfile->symtab = allocate_symtab (current_subfile->name,
|
current_subfile->symtab = allocate_symtab (current_subfile->name,
|
||||||
cu->objfile);
|
objfile);
|
||||||
fe->symtab = current_subfile->symtab;
|
fe->symtab = current_subfile->symtab;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -12249,6 +12257,7 @@ static struct type *
|
|||||||
lookup_die_type (struct die_info *die, struct attribute *attr,
|
lookup_die_type (struct die_info *die, struct attribute *attr,
|
||||||
struct dwarf2_cu *cu)
|
struct dwarf2_cu *cu)
|
||||||
{
|
{
|
||||||
|
struct objfile *objfile = cu->objfile;
|
||||||
struct type *this_type;
|
struct type *this_type;
|
||||||
|
|
||||||
/* First see if we have it cached. */
|
/* First see if we have it cached. */
|
||||||
@ -12270,7 +12279,7 @@ lookup_die_type (struct die_info *die, struct attribute *attr,
|
|||||||
if (sig_type == NULL)
|
if (sig_type == NULL)
|
||||||
error (_("Dwarf Error: Cannot find signatured DIE referenced from DIE "
|
error (_("Dwarf Error: Cannot find signatured DIE referenced from DIE "
|
||||||
"at 0x%x [in module %s]"),
|
"at 0x%x [in module %s]"),
|
||||||
die->offset, cu->objfile->name);
|
die->offset, objfile->name);
|
||||||
|
|
||||||
gdb_assert (sig_type->per_cu.debug_types_section);
|
gdb_assert (sig_type->per_cu.debug_types_section);
|
||||||
offset = sig_type->per_cu.offset + sig_type->type_offset;
|
offset = sig_type->per_cu.offset + sig_type->type_offset;
|
||||||
@ -12280,7 +12289,7 @@ lookup_die_type (struct die_info *die, struct attribute *attr,
|
|||||||
{
|
{
|
||||||
dump_die_for_error (die);
|
dump_die_for_error (die);
|
||||||
error (_("Dwarf Error: Bad type attribute %s [in module %s]"),
|
error (_("Dwarf Error: Bad type attribute %s [in module %s]"),
|
||||||
dwarf_attr_name (attr->name), cu->objfile->name);
|
dwarf_attr_name (attr->name), objfile->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If not cached we need to read it in. */
|
/* If not cached we need to read it in. */
|
||||||
@ -12304,14 +12313,14 @@ lookup_die_type (struct die_info *die, struct attribute *attr,
|
|||||||
|
|
||||||
/* read_type_die already issued a complaint. */
|
/* read_type_die already issued a complaint. */
|
||||||
message = xstrprintf (_("<unknown type in %s, CU 0x%x, DIE 0x%x>"),
|
message = xstrprintf (_("<unknown type in %s, CU 0x%x, DIE 0x%x>"),
|
||||||
cu->objfile->name,
|
objfile->name,
|
||||||
cu->header.offset,
|
cu->header.offset,
|
||||||
die->offset);
|
die->offset);
|
||||||
saved = obstack_copy0 (&cu->objfile->objfile_obstack,
|
saved = obstack_copy0 (&objfile->objfile_obstack,
|
||||||
message, strlen (message));
|
message, strlen (message));
|
||||||
xfree (message);
|
xfree (message);
|
||||||
|
|
||||||
this_type = init_type (TYPE_CODE_ERROR, 0, 0, saved, cu->objfile);
|
this_type = init_type (TYPE_CODE_ERROR, 0, 0, saved, objfile);
|
||||||
}
|
}
|
||||||
|
|
||||||
return this_type;
|
return this_type;
|
||||||
@ -14255,7 +14264,7 @@ dwarf2_fetch_die_location_block (unsigned int offset,
|
|||||||
die = follow_die_offset (offset, &cu);
|
die = follow_die_offset (offset, &cu);
|
||||||
if (!die)
|
if (!die)
|
||||||
error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
|
error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
|
||||||
offset, per_cu->cu->objfile->name);
|
offset, per_cu->objfile->name);
|
||||||
|
|
||||||
attr = dwarf2_attr (die, DW_AT_location, cu);
|
attr = dwarf2_attr (die, DW_AT_location, cu);
|
||||||
if (!attr)
|
if (!attr)
|
||||||
@ -14283,7 +14292,7 @@ dwarf2_fetch_die_location_block (unsigned int offset,
|
|||||||
if (!attr_form_is_block (attr))
|
if (!attr_form_is_block (attr))
|
||||||
error (_("Dwarf Error: DIE at 0x%x referenced in module %s "
|
error (_("Dwarf Error: DIE at 0x%x referenced in module %s "
|
||||||
"is neither DW_FORM_block* nor DW_FORM_exprloc"),
|
"is neither DW_FORM_block* nor DW_FORM_exprloc"),
|
||||||
offset, per_cu->cu->objfile->name);
|
offset, per_cu->objfile->name);
|
||||||
|
|
||||||
retval.data = DW_BLOCK (attr)->data;
|
retval.data = DW_BLOCK (attr)->data;
|
||||||
retval.size = DW_BLOCK (attr)->size;
|
retval.size = DW_BLOCK (attr)->size;
|
||||||
@ -15422,13 +15431,14 @@ dwarf_decode_macros (struct line_header *lh, unsigned int offset,
|
|||||||
struct dwarf2_section_info *section,
|
struct dwarf2_section_info *section,
|
||||||
int section_is_gnu)
|
int section_is_gnu)
|
||||||
{
|
{
|
||||||
|
struct objfile *objfile = dwarf2_per_objfile->objfile;
|
||||||
gdb_byte *mac_ptr, *mac_end;
|
gdb_byte *mac_ptr, *mac_end;
|
||||||
struct macro_source_file *current_file = 0;
|
struct macro_source_file *current_file = 0;
|
||||||
enum dwarf_macro_record_type macinfo_type;
|
enum dwarf_macro_record_type macinfo_type;
|
||||||
unsigned int offset_size = cu->header.offset_size;
|
unsigned int offset_size = cu->header.offset_size;
|
||||||
gdb_byte *opcode_definitions[256];
|
gdb_byte *opcode_definitions[256];
|
||||||
|
|
||||||
dwarf2_read_section (dwarf2_per_objfile->objfile, section);
|
dwarf2_read_section (objfile, section);
|
||||||
if (section->buffer == NULL)
|
if (section->buffer == NULL)
|
||||||
{
|
{
|
||||||
complaint (&symfile_complaints, _("missing %s section"),
|
complaint (&symfile_complaints, _("missing %s section"),
|
||||||
@ -15505,7 +15515,7 @@ dwarf_decode_macros (struct line_header *lh, unsigned int offset,
|
|||||||
mac_ptr += bytes_read;
|
mac_ptr += bytes_read;
|
||||||
|
|
||||||
current_file = macro_start_file (file, line, current_file,
|
current_file = macro_start_file (file, line, current_file,
|
||||||
comp_dir, lh, cu->objfile);
|
comp_dir, lh, objfile);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -15562,7 +15572,7 @@ dwarf_decode_macros (struct line_header *lh, unsigned int offset,
|
|||||||
|
|
||||||
dwarf_decode_macro_bytes (abfd, section->buffer + offset, mac_end,
|
dwarf_decode_macro_bytes (abfd, section->buffer + offset, mac_end,
|
||||||
current_file, lh, comp_dir, section, section_is_gnu,
|
current_file, lh, comp_dir, section, section_is_gnu,
|
||||||
offset_size, cu->objfile);
|
offset_size, objfile);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check if the attribute's form is a DW_FORM_block*
|
/* Check if the attribute's form is a DW_FORM_block*
|
||||||
@ -15647,16 +15657,18 @@ static void
|
|||||||
dwarf2_symbol_mark_computed (struct attribute *attr, struct symbol *sym,
|
dwarf2_symbol_mark_computed (struct attribute *attr, struct symbol *sym,
|
||||||
struct dwarf2_cu *cu)
|
struct dwarf2_cu *cu)
|
||||||
{
|
{
|
||||||
|
struct objfile *objfile = dwarf2_per_objfile->objfile;
|
||||||
|
|
||||||
if (attr_form_is_section_offset (attr)
|
if (attr_form_is_section_offset (attr)
|
||||||
/* ".debug_loc" may not exist at all, or the offset may be outside
|
/* ".debug_loc" may not exist at all, or the offset may be outside
|
||||||
the section. If so, fall through to the complaint in the
|
the section. If so, fall through to the complaint in the
|
||||||
other branch. */
|
other branch. */
|
||||||
&& DW_UNSND (attr) < dwarf2_section_size (dwarf2_per_objfile->objfile,
|
&& DW_UNSND (attr) < dwarf2_section_size (objfile,
|
||||||
&dwarf2_per_objfile->loc))
|
&dwarf2_per_objfile->loc))
|
||||||
{
|
{
|
||||||
struct dwarf2_loclist_baton *baton;
|
struct dwarf2_loclist_baton *baton;
|
||||||
|
|
||||||
baton = obstack_alloc (&cu->objfile->objfile_obstack,
|
baton = obstack_alloc (&objfile->objfile_obstack,
|
||||||
sizeof (struct dwarf2_loclist_baton));
|
sizeof (struct dwarf2_loclist_baton));
|
||||||
|
|
||||||
fill_in_loclist_baton (cu, baton, attr);
|
fill_in_loclist_baton (cu, baton, attr);
|
||||||
@ -15673,7 +15685,7 @@ dwarf2_symbol_mark_computed (struct attribute *attr, struct symbol *sym,
|
|||||||
{
|
{
|
||||||
struct dwarf2_locexpr_baton *baton;
|
struct dwarf2_locexpr_baton *baton;
|
||||||
|
|
||||||
baton = obstack_alloc (&cu->objfile->objfile_obstack,
|
baton = obstack_alloc (&objfile->objfile_obstack,
|
||||||
sizeof (struct dwarf2_locexpr_baton));
|
sizeof (struct dwarf2_locexpr_baton));
|
||||||
baton->per_cu = cu->per_cu;
|
baton->per_cu = cu->per_cu;
|
||||||
gdb_assert (baton->per_cu);
|
gdb_assert (baton->per_cu);
|
||||||
|
Reference in New Issue
Block a user