1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 03:02:36 +01:00

NFC: DebugInfo: Refactor debug_loc/loclist emission into a common function

(except for v4 loclists, which are sufficiently different to not fit
well in this generic implementation)

In subsequent patches I intend to refactor the DebugLoc and ranges data
structures to be more similar so I can common more of the implementation
here.
This commit is contained in:
David Blaikie 2019-12-12 16:37:52 -08:00
parent 1b96f8703a
commit ee634363a8
2 changed files with 15 additions and 21 deletions

View File

@ -2466,22 +2466,15 @@ static void emitLocList(DwarfDebug &DD, AsmPrinter *Asm, const DebugLocStream::L
});
}
// Emit locations into the .debug_loc/.debug_loclists section.
void DwarfDebug::emitDebugLoc() {
void DwarfDebug::emitDebugLocImpl(MCSection *Sec) {
if (DebugLocs.getLists().empty())
return;
Asm->OutStreamer->SwitchSection(Sec);
MCSymbol *TableEnd = nullptr;
if (getDwarfVersion() >= 5) {
Asm->OutStreamer->SwitchSection(
Asm->getObjFileLowering().getDwarfLoclistsSection());
if (getDwarfVersion() >= 5)
TableEnd = emitLoclistsTableHeader(Asm, *this);
} else {
Asm->OutStreamer->SwitchSection(
Asm->getObjFileLowering().getDwarfLocSection());
}
for (const auto &List : DebugLocs.getLists())
emitLocList(*this, Asm, List);
@ -2490,21 +2483,20 @@ void DwarfDebug::emitDebugLoc() {
Asm->OutStreamer->EmitLabel(TableEnd);
}
// Emit locations into the .debug_loc/.debug_loclists section.
void DwarfDebug::emitDebugLoc() {
emitDebugLocImpl(
getDwarfVersion() >= 5
? Asm->getObjFileLowering().getDwarfLoclistsSection()
: Asm->getObjFileLowering().getDwarfLocSection());
}
// Emit locations into the .debug_loc.dwo/.debug_loclists.dwo section.
void DwarfDebug::emitDebugLocDWO() {
if (DebugLocs.getLists().empty())
return;
if (getDwarfVersion() >= 5) {
MCSymbol *TableEnd = nullptr;
Asm->OutStreamer->SwitchSection(
emitDebugLocImpl(
Asm->getObjFileLowering().getDwarfLoclistsDWOSection());
TableEnd = emitLoclistsTableHeader(Asm, *this);
for (const auto &List : DebugLocs.getLists())
emitLocList(*this, Asm, List);
if (TableEnd)
Asm->OutStreamer->EmitLabel(TableEnd);
return;
}

View File

@ -503,6 +503,8 @@ class DwarfDebug : public DebugHandlerBase {
/// Emit variable locations into a debug loc dwo section.
void emitDebugLocDWO();
void emitDebugLocImpl(MCSection *Sec);
/// Emit address ranges into a debug aranges section.
void emitDebugARanges();