forked from OSchip/llvm-project
Temporarily revert "NFC: DebugInfo: Refactor RangeSpanList to be a struct, like DebugLocStream::List"
as it was causing bot and build failures.
This reverts commit 8e04896288
.
This commit is contained in:
parent
cdb4560557
commit
a8154e5e0c
|
@ -503,10 +503,10 @@ void DwarfCompileUnit::addScopeRangeList(DIE &ScopeDIE,
|
||||||
const MCSymbol *RangeSectionSym =
|
const MCSymbol *RangeSectionSym =
|
||||||
TLOF.getDwarfRangesSection()->getBeginSymbol();
|
TLOF.getDwarfRangesSection()->getBeginSymbol();
|
||||||
if (isDwoUnit())
|
if (isDwoUnit())
|
||||||
addSectionDelta(ScopeDIE, dwarf::DW_AT_ranges, List.Label,
|
addSectionDelta(ScopeDIE, dwarf::DW_AT_ranges, List.getSym(),
|
||||||
RangeSectionSym);
|
RangeSectionSym);
|
||||||
else
|
else
|
||||||
addSectionLabel(ScopeDIE, dwarf::DW_AT_ranges, List.Label,
|
addSectionLabel(ScopeDIE, dwarf::DW_AT_ranges, List.getSym(),
|
||||||
RangeSectionSym);
|
RangeSectionSym);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2331,7 +2331,7 @@ static MCSymbol *emitRnglistsTableHeader(AsmPrinter *Asm,
|
||||||
Asm->OutStreamer->EmitLabel(Holder.getRnglistsTableBaseSym());
|
Asm->OutStreamer->EmitLabel(Holder.getRnglistsTableBaseSym());
|
||||||
|
|
||||||
for (const RangeSpanList &List : Holder.getRangeLists())
|
for (const RangeSpanList &List : Holder.getRangeLists())
|
||||||
Asm->EmitLabelDifference(List.Label, Holder.getRnglistsTableBaseSym(),
|
Asm->EmitLabelDifference(List.getSym(), Holder.getRnglistsTableBaseSym(),
|
||||||
4);
|
4);
|
||||||
|
|
||||||
return TableEnd;
|
return TableEnd;
|
||||||
|
@ -2688,11 +2688,11 @@ void DwarfDebug::emitDebugARanges() {
|
||||||
/// Emit a single range list. We handle both DWARF v5 and earlier.
|
/// Emit a single range list. We handle both DWARF v5 and earlier.
|
||||||
static void emitRangeList(DwarfDebug &DD, AsmPrinter *Asm,
|
static void emitRangeList(DwarfDebug &DD, AsmPrinter *Asm,
|
||||||
const RangeSpanList &List) {
|
const RangeSpanList &List) {
|
||||||
emitRangeList(DD, Asm, List.Label, List.Ranges, *List.CU,
|
emitRangeList(DD, Asm, List.getSym(), List.getRanges(), List.getCU(),
|
||||||
dwarf::DW_RLE_base_addressx, dwarf::DW_RLE_offset_pair,
|
dwarf::DW_RLE_base_addressx, dwarf::DW_RLE_offset_pair,
|
||||||
dwarf::DW_RLE_startx_length, dwarf::DW_RLE_end_of_list,
|
dwarf::DW_RLE_startx_length, dwarf::DW_RLE_end_of_list,
|
||||||
llvm::dwarf::RangeListEncodingString,
|
llvm::dwarf::RangeListEncodingString,
|
||||||
List.CU->getCUNode()->getRangesBaseAddress() ||
|
List.getCU().getCUNode()->getRangesBaseAddress() ||
|
||||||
DD.getDwarfVersion() >= 5,
|
DD.getDwarfVersion() >= 5,
|
||||||
[](auto) {});
|
[](auto) {});
|
||||||
}
|
}
|
||||||
|
@ -2709,9 +2709,8 @@ void DwarfDebug::emitDebugRangesImpl(const DwarfFile &Holder, MCSection *Section
|
||||||
|
|
||||||
Asm->OutStreamer->SwitchSection(Section);
|
Asm->OutStreamer->SwitchSection(Section);
|
||||||
|
|
||||||
MCSymbol *TableEnd = nullptr;
|
MCSymbol *TableEnd =
|
||||||
if (getDwarfVersion() < 5)
|
getDwarfVersion() < 5 ? nullptr : emitRnglistsTableHeader(Asm, Holder);
|
||||||
TableEnd = emitRnglistsTableHeader(Asm, Holder);
|
|
||||||
|
|
||||||
for (const RangeSpanList &List : Holder.getRangeLists())
|
for (const RangeSpanList &List : Holder.getRangeLists())
|
||||||
emitRangeList(*this, Asm, List);
|
emitRangeList(*this, Asm, List);
|
||||||
|
|
|
@ -126,6 +126,6 @@ void DwarfFile::addScopeLabel(LexicalScope *LS, DbgLabel *Label) {
|
||||||
std::pair<uint32_t, RangeSpanList *>
|
std::pair<uint32_t, RangeSpanList *>
|
||||||
DwarfFile::addRange(const DwarfCompileUnit &CU, SmallVector<RangeSpan, 2> R) {
|
DwarfFile::addRange(const DwarfCompileUnit &CU, SmallVector<RangeSpan, 2> R) {
|
||||||
CURangeLists.push_back(
|
CURangeLists.push_back(
|
||||||
RangeSpanList{Asm->createTempSymbol("debug_ranges"), &CU, std::move(R)});
|
RangeSpanList(Asm->createTempSymbol("debug_ranges"), CU, std::move(R)));
|
||||||
return std::make_pair(CURangeLists.size() - 1, &CURangeLists.back());
|
return std::make_pair(CURangeLists.size() - 1, &CURangeLists.back());
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,12 +37,21 @@ struct RangeSpan {
|
||||||
const MCSymbol *End;
|
const MCSymbol *End;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct RangeSpanList {
|
class RangeSpanList {
|
||||||
|
private:
|
||||||
// Index for locating within the debug_range section this particular span.
|
// Index for locating within the debug_range section this particular span.
|
||||||
MCSymbol *Label;
|
MCSymbol *RangeSym;
|
||||||
const DwarfCompileUnit *CU;
|
const DwarfCompileUnit *CU;
|
||||||
// List of ranges.
|
// List of ranges.
|
||||||
SmallVector<RangeSpan, 2> Ranges;
|
SmallVector<RangeSpan, 2> Ranges;
|
||||||
|
|
||||||
|
public:
|
||||||
|
RangeSpanList(MCSymbol *Sym, const DwarfCompileUnit &CU,
|
||||||
|
SmallVector<RangeSpan, 2> Ranges)
|
||||||
|
: RangeSym(Sym), CU(&CU), Ranges(std::move(Ranges)) {}
|
||||||
|
MCSymbol *getSym() const { return RangeSym; }
|
||||||
|
const DwarfCompileUnit &getCU() const { return *CU; }
|
||||||
|
const SmallVectorImpl<RangeSpan> &getRanges() const { return Ranges; }
|
||||||
};
|
};
|
||||||
|
|
||||||
class DwarfFile {
|
class DwarfFile {
|
||||||
|
|
Loading…
Reference in New Issue