mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
Remove special handling for DW_AT_ranges support by constructing the
values with the correct behavior. llvm-svn: 196441
This commit is contained in:
parent
558333e1e1
commit
2d6d0fc3f2
@ -465,12 +465,23 @@ bool DwarfDebug::isLexicalScopeDIENull(LexicalScope *Scope) {
|
||||
return !End;
|
||||
}
|
||||
|
||||
static void addSectionLabel(AsmPrinter *Asm, Unit *U, DIE *D,
|
||||
dwarf::Attribute A, const MCSymbol *L,
|
||||
const MCSymbol *Sec) {
|
||||
if (Asm->MAI->doesDwarfUseRelocationsAcrossSections())
|
||||
U->addSectionLabel(D, A, L);
|
||||
else
|
||||
U->addSectionDelta(D, A, L, Sec);
|
||||
}
|
||||
|
||||
void DwarfDebug::addScopeRangeList(CompileUnit *TheCU, DIE *ScopeDIE,
|
||||
const SmallVectorImpl<InsnRange> &Range) {
|
||||
// Emit offset in .debug_range as a relocatable label. emitDIE will handle
|
||||
// emitting it appropriately.
|
||||
MCSymbol *RangeSym = Asm->GetTempSymbol("debug_ranges", GlobalRangeCount++);
|
||||
TheCU->addSectionLabel(ScopeDIE, dwarf::DW_AT_ranges, RangeSym);
|
||||
addSectionLabel(Asm, TheCU, ScopeDIE, dwarf::DW_AT_ranges, RangeSym,
|
||||
DwarfDebugRangeSectionSym);
|
||||
|
||||
RangeSpanList List(RangeSym);
|
||||
for (SmallVectorImpl<InsnRange>::const_iterator RI = Range.begin(),
|
||||
RE = Range.end();
|
||||
@ -724,15 +735,6 @@ unsigned DwarfDebug::getOrCreateSourceID(StringRef FileName, StringRef DirName,
|
||||
return SrcId;
|
||||
}
|
||||
|
||||
static void addSectionLabel(AsmPrinter *Asm, Unit *U, DIE *D,
|
||||
dwarf::Attribute A, const MCSymbol *L,
|
||||
const MCSymbol *Sec) {
|
||||
if (Asm->MAI->doesDwarfUseRelocationsAcrossSections())
|
||||
U->addSectionLabel(D, A, L);
|
||||
else
|
||||
U->addSectionDelta(D, A, L, Sec);
|
||||
}
|
||||
|
||||
void DwarfDebug::addGnuPubAttributes(Unit *U, DIE *D) const {
|
||||
if (!GenerateGnuPubSections)
|
||||
return;
|
||||
@ -2086,16 +2088,6 @@ void DwarfDebug::emitDIE(DIE *Die, ArrayRef<DIEAbbrev *> Abbrevs) {
|
||||
}
|
||||
break;
|
||||
}
|
||||
case dwarf::DW_AT_ranges: {
|
||||
// DW_AT_range Value encodes offset in debug_range section.
|
||||
DIELabel *V = cast<DIELabel>(Values[i]);
|
||||
|
||||
if (Asm->MAI->doesDwarfUseRelocationsAcrossSections())
|
||||
Asm->EmitSectionOffset(V->getValue(), DwarfDebugRangeSectionSym);
|
||||
else
|
||||
Asm->EmitLabelDifference(V->getValue(), DwarfDebugRangeSectionSym, 4);
|
||||
break;
|
||||
}
|
||||
case dwarf::DW_AT_location: {
|
||||
if (DIELabel *L = dyn_cast<DIELabel>(Values[i])) {
|
||||
if (Asm->MAI->doesDwarfUseRelocationsAcrossSections())
|
||||
|
Loading…
Reference in New Issue
Block a user