Browse Source

* dwarf2read.c (dwarf2_ranges_read): Ignore ranges starting at zero if

there's no section at address zero.
	(dwarf2_record_block_ranges): Ditto.
cygwin-64bit-branch
Doug Evans 14 years ago
parent
commit
0109304504
  1. 6
      gdb/ChangeLog
  2. 28
      gdb/dwarf2read.c

6
gdb/ChangeLog

@ -1,3 +1,9 @@
2012-07-19 Doug Evans <dje@google.com>
* dwarf2read.c (dwarf2_ranges_read): Ignore ranges starting at zero if
there's no section at address zero.
(dwarf2_record_block_ranges): Ditto.
2012-07-19 Yao Qi <yao@codesourcery.com>
* command.h, remote.c: Fix a typo in comment.

28
gdb/dwarf2read.c

@ -9284,6 +9284,17 @@ dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
range_beginning += base;
range_end += base;
/* A not-uncommon case of bad debug info.
Don't pollute the addrmap with bad data. */
if (range_beginning + baseaddr == 0
&& !dwarf2_per_objfile->has_section_at_zero)
{
complaint (&symfile_complaints,
_(".debug_ranges entry has start address of zero"
" [in module %s]"), objfile->name);
continue;
}
if (ranges_pst != NULL)
addrmap_set_empty (objfile->psymtabs_addrmap,
range_beginning + baseaddr,
@ -9599,9 +9610,20 @@ dwarf2_record_block_ranges (struct die_info *die, struct block *block,
if (start == end)
continue;
record_block_range (block,
baseaddr + base + start,
baseaddr + base + end - 1);
start += base + baseaddr;
end += base + baseaddr;
/* A not-uncommon case of bad debug info.
Don't pollute the addrmap with bad data. */
if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
{
complaint (&symfile_complaints,
_(".debug_ranges entry has start address of zero"
" [in module %s]"), objfile->name);
continue;
}
record_block_range (block, start, end - 1);
}
}
}

Loading…
Cancel
Save