forked from OSchip/llvm-project
Don't crash if we have a DIE that has a DW_AT_ranges attribute and yet the SymbolFileDWARF doesn't have a DebugRanges. If this happens print a nice error message to prompt the user to file a bug and attach the offending DWARF file so we can get the correct compiler fixed.
<rdar://problem/24458016> llvm-svn: 260626
This commit is contained in:
parent
b80a5811ce
commit
9ddad935b9
|
@ -482,11 +482,19 @@ DWARFDebugInfoEntry::GetDIENamesAndRanges
|
|||
case DW_AT_ranges:
|
||||
{
|
||||
const DWARFDebugRanges* debug_ranges = dwarf2Data->DebugRanges();
|
||||
debug_ranges->FindRanges(form_value.Unsigned(), ranges);
|
||||
// All DW_AT_ranges are relative to the base address of the
|
||||
// compile unit. We add the compile unit base address to make
|
||||
// sure all the addresses are properly fixed up.
|
||||
ranges.Slide(cu->GetBaseAddress());
|
||||
if (debug_ranges)
|
||||
{
|
||||
debug_ranges->FindRanges(form_value.Unsigned(), ranges);
|
||||
// All DW_AT_ranges are relative to the base address of the
|
||||
// compile unit. We add the compile unit base address to make
|
||||
// sure all the addresses are properly fixed up.
|
||||
ranges.Slide(cu->GetBaseAddress());
|
||||
}
|
||||
else
|
||||
{
|
||||
cu->GetSymbolFileDWARF()->GetObjectFile()->GetModule()->ReportError ("{0x%8.8x}: DIE has DW_AT_ranges(0x%" PRIx64 ") attribute yet DWARF has no .debug_ranges, please file a bug and attach the file at the start of this error message",
|
||||
m_offset, form_value.Unsigned());
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
Loading…
Reference in New Issue