diff options
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 34 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h | 2 |
2 files changed, 15 insertions, 21 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index 098b5a91d6e..aa33659cd06 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -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; - MCSymbol *TableEnd = nullptr; - if (getDwarfVersion() >= 5) { - - Asm->OutStreamer->SwitchSection( - Asm->getObjFileLowering().getDwarfLoclistsSection()); + Asm->OutStreamer->SwitchSection(Sec); + MCSymbol *TableEnd = nullptr; + 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; } diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h index bdd1b255c02..8fc0ac82ff0 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h @@ -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(); |

