aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/MC/MCDwarf.cpp
diff options
context:
space:
mode:
authorAlexander Yermolovich <ayermolo@fb.com>2022-04-21 14:07:05 -0700
committerAlexander Yermolovich <ayermolo@fb.com>2022-04-21 14:08:20 -0700
commitc87d405b22474877288b8356175061c1fb02fcba (patch)
tree41db0e6d1106e7b32aeb705e9e737c8df5275be1 /llvm/lib/MC/MCDwarf.cpp
parent365c3e85bced1fb56c2d94adc34bff7a94abe4a6 (diff)
downloadllvm-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.cpp10
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) {