diff options
Diffstat (limited to 'llvm/lib/MC/MCStreamer.cpp')
-rw-r--r-- | llvm/lib/MC/MCStreamer.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/llvm/lib/MC/MCStreamer.cpp b/llvm/lib/MC/MCStreamer.cpp index 4b5ae3c..4f2ec51 100644 --- a/llvm/lib/MC/MCStreamer.cpp +++ b/llvm/lib/MC/MCStreamer.cpp @@ -991,6 +991,29 @@ void MCStreamer::Finish(SMLoc EndLoc) { finishImpl(); } +void MCStreamer::maybeEmitDwarf64Mark() { + if (Context.getDwarfFormat() != dwarf::DWARF64) + return; + AddComment("DWARF64 Mark"); + emitInt32(dwarf::DW_LENGTH_DWARF64); +} + +void MCStreamer::emitDwarfUnitLength(uint64_t Length, const Twine &Comment) { + assert(Context.getDwarfFormat() == dwarf::DWARF64 || + Length <= dwarf::DW_LENGTH_lo_reserved); + maybeEmitDwarf64Mark(); + AddComment(Comment); + emitIntValue(Length, dwarf::getDwarfOffsetByteSize(Context.getDwarfFormat())); +} + +void MCStreamer::emitDwarfUnitLength(const MCSymbol *Hi, const MCSymbol *Lo, + const Twine &Comment) { + maybeEmitDwarf64Mark(); + AddComment(Comment); + emitAbsoluteSymbolDiff( + Hi, Lo, dwarf::getDwarfOffsetByteSize(Context.getDwarfFormat())); +} + void MCStreamer::emitAssignment(MCSymbol *Symbol, const MCExpr *Value) { visitUsedExpr(*Value); Symbol->setVariableValue(Value); |