This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
PATCH: minor cleanup to dwarf2read.c
- To: gdb-patches at sources dot redhat dot com
- Subject: PATCH: minor cleanup to dwarf2read.c
- From: Jim Blandy <jimb at zwingli dot cygnus dot com>
- Date: Wed, 4 Jul 2001 11:12:29 -0500 (EST)
(I'm reading dwarf2read over to try to get a handle on what we need
for C++, and so I can do a decent job evaluating Daniel's patch. As
I'm doing this, I'm fixing minor things I see (and ignoring larger
problems). If this ends up producing gratuitous conflicts with
Daniel's changes, I'll take care of cleaning it up.)
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.
Index: gdb/dwarf2read.c
===================================================================
RCS file: /cvs/src/src/gdb/dwarf2read.c,v
retrieving revision 1.26
diff -c -r1.26 dwarf2read.c
*** gdb/dwarf2read.c 2001/07/02 17:43:07 1.26
--- gdb/dwarf2read.c 2001/07/04 15:58:14
***************
*** 194,199 ****
--- 194,200 ----
unsigned int offset;
unsigned int abbrev;
char *name;
+ int has_pc_info;
CORE_ADDR lowpc;
CORE_ADDR highpc;
struct dwarf_block *locdesc;
***************
*** 586,592 ****
static struct abbrev_info *dwarf2_lookup_abbrev (unsigned int);
static char *read_partial_die (struct partial_die_info *,
! bfd *, char *, int *,
const struct comp_unit_head *);
static char *read_full_die (struct die_info **, bfd *, char *,
--- 587,593 ----
static struct abbrev_info *dwarf2_lookup_abbrev (unsigned int);
static char *read_partial_die (struct partial_die_info *,
! bfd *, char *,
const struct comp_unit_head *);
static char *read_full_die (struct die_info **, bfd *, char *,
***************
*** 971,977 ****
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;
--- 972,977 ----
***************
*** 1013,1019 ****
/* Read the compilation unit die */
info_ptr = read_partial_die (&comp_unit_die, abfd, info_ptr,
! &comp_unit_has_pc_info, &cu_header);
/* Set the language we're debugging */
set_cu_language (comp_unit_die.language);
--- 1013,1019 ----
/* Read the compilation unit die */
info_ptr = read_partial_die (&comp_unit_die, abfd, info_ptr,
! &cu_header);
/* Set the language we're debugging */
set_cu_language (comp_unit_die.language);
***************
*** 1048,1054 ****
/* 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)
{
comp_unit_die.lowpc = lowpc;
comp_unit_die.highpc = highpc;
--- 1048,1054 ----
/* If the compilation unit didn't have an explicit address range,
then use the information extracted from its child dies. */
! if (! comp_unit_die.has_pc_info)
{
comp_unit_die.lowpc = lowpc;
comp_unit_die.highpc = highpc;
***************
*** 1091,1112 ****
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);
if (pdi.name)
{
switch (pdi.tag)
{
case DW_TAG_subprogram:
! if (has_pc_info)
{
if (pdi.lowpc < *lowpc)
{
--- 1091,1110 ----
back to that level. */
int nesting_level = 1;
*lowpc = ((CORE_ADDR) -1);
*highpc = ((CORE_ADDR) 0);
while (nesting_level)
{
! info_ptr = read_partial_die (&pdi, abfd, info_ptr, cu_header);
if (pdi.name)
{
switch (pdi.tag)
{
case DW_TAG_subprogram:
! if (pdi.has_pc_info)
{
if (pdi.lowpc < *lowpc)
{
***************
*** 3124,3131 ****
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)
{
unsigned int abbrev_number, bytes_read, i;
struct abbrev_info *abbrev;
--- 3122,3128 ----
static char *
read_partial_die (struct partial_die_info *part_die, bfd *abfd,
! char *info_ptr, const struct comp_unit_head *cu_header)
{
unsigned int abbrev_number, bytes_read, i;
struct abbrev_info *abbrev;
***************
*** 3136,3142 ****
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)
--- 3133,3138 ----
***************
*** 3222,3228 ****
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);
if (spec_die.name)
{
part_die->name = spec_die.name;
--- 3218,3224 ----
int dummy;
spec_ptr = dwarf_info_buffer + dwarf2_get_ref_die_offset (&spec_attr);
! read_partial_die (&spec_die, abfd, spec_ptr, cu_header);
if (spec_die.name)
{
part_die->name = spec_die.name;
***************
*** 3245,3251 ****
&& part_die->lowpc < part_die->highpc
&& (part_die->lowpc != 0
|| (bfd_get_file_flags (abfd) & HAS_RELOC)))
! *has_pc_info = 1;
return info_ptr;
}
--- 3241,3247 ----
&& part_die->lowpc < part_die->highpc
&& (part_die->lowpc != 0
|| (bfd_get_file_flags (abfd) & HAS_RELOC)))
! part_die->has_pc_info = 1;
return info_ptr;
}