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

there's no section at address zero.
	(dwarf2_record_block_ranges): Ditto.
This commit is contained in:
Doug Evans 2012-07-19 16:35:48 +00:00
parent a7c3d16228
commit 0109304504
2 changed files with 31 additions and 3 deletions

View File

@ -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.

View File

@ -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);
}
}
}