* dwarf2read.c (struct partial_die_info): New member: has_pc_info.
(read_partial_die): Delete fourth argument; we return this info in the struct partial_die_info object itself now. (dwarf2_build_psymtabs_hard, scan_partial_symbols): Use the has_pc_info field of the partial die struct, rather than passing a variable by reference to read_partial_die.
This commit is contained in:
parent
9faef8a7c5
commit
0b010bcc00
2 changed files with 16 additions and 13 deletions
|
@ -1,5 +1,12 @@
|
|||
2001-07-04 Jim Blandy <jimb@redhat.com>
|
||||
|
||||
* dwarf2read.c (struct partial_die_info): New member: has_pc_info.
|
||||
(read_partial_die): Delete fourth argument; we return this info in
|
||||
the struct partial_die_info object itself now.
|
||||
(dwarf2_build_psymtabs_hard, scan_partial_symbols): Use the
|
||||
has_pc_info field of the partial die struct, rather than passing a
|
||||
variable by reference to read_partial_die.
|
||||
|
||||
* dwarf2read.c (dwarf2_build_psymtabs_hard): Remove extraneous
|
||||
code in loop condition.
|
||||
|
||||
|
|
|
@ -194,6 +194,7 @@ struct partial_die_info
|
|||
unsigned int offset;
|
||||
unsigned int abbrev;
|
||||
char *name;
|
||||
int has_pc_info;
|
||||
CORE_ADDR lowpc;
|
||||
CORE_ADDR highpc;
|
||||
struct dwarf_block *locdesc;
|
||||
|
@ -586,7 +587,7 @@ static void dwarf2_empty_abbrev_table (PTR);
|
|||
static struct abbrev_info *dwarf2_lookup_abbrev (unsigned int);
|
||||
|
||||
static char *read_partial_die (struct partial_die_info *,
|
||||
bfd *, char *, int *,
|
||||
bfd *, char *,
|
||||
const struct comp_unit_head *);
|
||||
|
||||
static char *read_full_die (struct die_info **, bfd *, char *,
|
||||
|
@ -971,7 +972,6 @@ dwarf2_build_psymtabs_hard (struct objfile *objfile, int mainline)
|
|||
struct partial_die_info comp_unit_die;
|
||||
struct partial_symtab *pst;
|
||||
struct cleanup *back_to;
|
||||
int comp_unit_has_pc_info;
|
||||
CORE_ADDR lowpc, highpc;
|
||||
|
||||
info_ptr = dwarf_info_buffer;
|
||||
|
@ -1012,7 +1012,7 @@ dwarf2_build_psymtabs_hard (struct objfile *objfile, int mainline)
|
|||
|
||||
/* Read the compilation unit die */
|
||||
info_ptr = read_partial_die (&comp_unit_die, abfd, info_ptr,
|
||||
&comp_unit_has_pc_info, &cu_header);
|
||||
&cu_header);
|
||||
|
||||
/* Set the language we're debugging */
|
||||
set_cu_language (comp_unit_die.language);
|
||||
|
@ -1047,7 +1047,7 @@ dwarf2_build_psymtabs_hard (struct objfile *objfile, int mainline)
|
|||
|
||||
/* If the compilation unit didn't have an explicit address range,
|
||||
then use the information extracted from its child dies. */
|
||||
if (!comp_unit_has_pc_info)
|
||||
if (! comp_unit_die.has_pc_info)
|
||||
{
|
||||
comp_unit_die.lowpc = lowpc;
|
||||
comp_unit_die.highpc = highpc;
|
||||
|
@ -1090,22 +1090,20 @@ scan_partial_symbols (char *info_ptr, struct objfile *objfile,
|
|||
back to that level. */
|
||||
|
||||
int nesting_level = 1;
|
||||
int has_pc_info;
|
||||
|
||||
*lowpc = ((CORE_ADDR) -1);
|
||||
*highpc = ((CORE_ADDR) 0);
|
||||
|
||||
while (nesting_level)
|
||||
{
|
||||
info_ptr = read_partial_die (&pdi, abfd, info_ptr,
|
||||
&has_pc_info, cu_header);
|
||||
info_ptr = read_partial_die (&pdi, abfd, info_ptr, cu_header);
|
||||
|
||||
if (pdi.name)
|
||||
{
|
||||
switch (pdi.tag)
|
||||
{
|
||||
case DW_TAG_subprogram:
|
||||
if (has_pc_info)
|
||||
if (pdi.has_pc_info)
|
||||
{
|
||||
if (pdi.lowpc < *lowpc)
|
||||
{
|
||||
|
@ -3123,8 +3121,7 @@ dwarf2_lookup_abbrev (unsigned int number)
|
|||
|
||||
static char *
|
||||
read_partial_die (struct partial_die_info *part_die, bfd *abfd,
|
||||
char *info_ptr, int *has_pc_info,
|
||||
const struct comp_unit_head *cu_header)
|
||||
char *info_ptr, const struct comp_unit_head *cu_header)
|
||||
{
|
||||
unsigned int abbrev_number, bytes_read, i;
|
||||
struct abbrev_info *abbrev;
|
||||
|
@ -3135,7 +3132,6 @@ read_partial_die (struct partial_die_info *part_die, bfd *abfd,
|
|||
int has_high_pc_attr = 0;
|
||||
|
||||
*part_die = zeroed_partial_die;
|
||||
*has_pc_info = 0;
|
||||
abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
|
||||
info_ptr += bytes_read;
|
||||
if (!abbrev_number)
|
||||
|
@ -3221,7 +3217,7 @@ read_partial_die (struct partial_die_info *part_die, bfd *abfd,
|
|||
int dummy;
|
||||
|
||||
spec_ptr = dwarf_info_buffer + dwarf2_get_ref_die_offset (&spec_attr);
|
||||
read_partial_die (&spec_die, abfd, spec_ptr, &dummy, cu_header);
|
||||
read_partial_die (&spec_die, abfd, spec_ptr, cu_header);
|
||||
if (spec_die.name)
|
||||
{
|
||||
part_die->name = spec_die.name;
|
||||
|
@ -3244,7 +3240,7 @@ read_partial_die (struct partial_die_info *part_die, bfd *abfd,
|
|||
&& part_die->lowpc < part_die->highpc
|
||||
&& (part_die->lowpc != 0
|
||||
|| (bfd_get_file_flags (abfd) & HAS_RELOC)))
|
||||
*has_pc_info = 1;
|
||||
part_die->has_pc_info = 1;
|
||||
return info_ptr;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue