diff options
Diffstat (limited to 'llvm/lib/MC/MCCodeView.cpp')
-rw-r--r-- | llvm/lib/MC/MCCodeView.cpp | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/llvm/lib/MC/MCCodeView.cpp b/llvm/lib/MC/MCCodeView.cpp index 1f98251..7d528a5 100644 --- a/llvm/lib/MC/MCCodeView.cpp +++ b/llvm/lib/MC/MCCodeView.cpp @@ -26,8 +26,10 @@ using namespace llvm; using namespace llvm::codeview; void CodeViewContext::finish() { - if (StrTabFragment) - StrTabFragment->setContents(StrTab); + if (!StrTabFragment) + return; + assert(StrTabFragment->getKind() == MCFragment::FT_Data); + StrTabFragment->setVarContents(StrTab); } /// This is a valid number for use with .cv_loc if we've already seen a .cv_file @@ -166,8 +168,9 @@ void CodeViewContext::emitStringTable(MCObjectStreamer &OS) { // somewhere else. If somebody wants two string tables in their .s file, one // will just be empty. if (!StrTabFragment) { - StrTabFragment = Ctx.allocFragment<MCFragment>(); - OS.insert(StrTabFragment); + OS.newFragment(); + StrTabFragment = OS.getCurrentFragment(); + OS.newFragment(); } OS.emitValueToAlignment(Align(4), 0); @@ -603,7 +606,7 @@ void CodeViewContext::encodeInlineLineTable(const MCAssembler &Asm, compressAnnotation(BinaryAnnotationsOpCode::ChangeCodeLength, Buffer); compressAnnotation(std::min(EndSymLength, LocAfterLength), Buffer); - Frag.setContents(Buffer); + Frag.setVarContents(Buffer); } void CodeViewContext::encodeDefRange(const MCAssembler &Asm, @@ -691,6 +694,6 @@ void CodeViewContext::encodeDefRange(const MCAssembler &Asm, } } - Frag.setContents(Contents); - Frag.setFixups(Fixups); + Frag.setVarContents(Contents); + Frag.setVarFixups(Fixups); } |