From c87d405b22474877288b8356175061c1fb02fcba Mon Sep 17 00:00:00 2001 From: Alexander Yermolovich Date: Thu, 21 Apr 2022 14:07:05 -0700 Subject: [DWARF] Add API to get data from MCDwarfLineStr This API will be used in D121876, to get finalized string data for .debug_line_str. Reviewed By: dblaikie, rafauler Differential Revision: https://reviews.llvm.org/D124052 --- llvm/lib/MC/MCDwarf.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'llvm/lib/MC/MCDwarf.cpp') diff --git a/llvm/lib/MC/MCDwarf.cpp b/llvm/lib/MC/MCDwarf.cpp index f2e92fe..0f45f2f 100644 --- a/llvm/lib/MC/MCDwarf.cpp +++ b/llvm/lib/MC/MCDwarf.cpp @@ -334,12 +334,18 @@ void MCDwarfLineStr::emitSection(MCStreamer *MCOS) { // Switch to the .debug_line_str section. MCOS->SwitchSection( MCOS->getContext().getObjectFileInfo()->getDwarfLineStrSection()); + SmallString<0> Data = getFinalizedData(); + MCOS->emitBinaryData(Data.str()); +} + +SmallString<0> MCDwarfLineStr::getFinalizedData() { // Emit the strings without perturbing the offsets we used. - LineStrings.finalizeInOrder(); + if (!LineStrings.isFinalized()) + LineStrings.finalizeInOrder(); SmallString<0> Data; Data.resize(LineStrings.getSize()); LineStrings.write((uint8_t *)Data.data()); - MCOS->emitBinaryData(Data.str()); + return Data; } void MCDwarfLineStr::emitRef(MCStreamer *MCOS, StringRef Path) { -- cgit v1.1