diff options
author | Alexander Yermolovich <ayermolo@fb.com> | 2022-04-21 14:07:05 -0700 |
---|---|---|
committer | Alexander Yermolovich <ayermolo@fb.com> | 2022-04-21 14:08:20 -0700 |
commit | c87d405b22474877288b8356175061c1fb02fcba (patch) | |
tree | 41db0e6d1106e7b32aeb705e9e737c8df5275be1 /llvm/lib/MC/MCDwarf.cpp | |
parent | 365c3e85bced1fb56c2d94adc34bff7a94abe4a6 (diff) | |
download | llvm-c87d405b22474877288b8356175061c1fb02fcba.zip llvm-c87d405b22474877288b8356175061c1fb02fcba.tar.gz llvm-c87d405b22474877288b8356175061c1fb02fcba.tar.bz2 |
[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
Diffstat (limited to 'llvm/lib/MC/MCDwarf.cpp')
-rw-r--r-- | llvm/lib/MC/MCDwarf.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
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) { |