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:
parent
1b96f8703a
commit
ee634363a8
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user