From 3f981cdde90fada6a6aa0f6ebe2f53105b80d523 Mon Sep 17 00:00:00 2001 From: Lang Hames Date: Sun, 8 Mar 2020 21:41:10 -0700 Subject: [PATCH] [MC] Allow Stackmap sections after DWARF in MachO. Summary: Mixing stackmaps and DWARF in a single file triggers an assertion in MCMachOStreamer as stackmap sections are emitted in AsmPrinter::emitEndOfAsmFile after the DWARF sections have already been emitted. Since it should be safe to emit stackmap sections after DWARF sections this patch relaxes the assertion to allow that. Reviewers: aprantl, dblaikie, echristo Subscribers: hiraditya, ributzka, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D75836 --- llvm/lib/MC/MCMachOStreamer.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/llvm/lib/MC/MCMachOStreamer.cpp b/llvm/lib/MC/MCMachOStreamer.cpp index e69beb7..cc62a22 100644 --- a/llvm/lib/MC/MCMachOStreamer.cpp +++ b/llvm/lib/MC/MCMachOStreamer.cpp @@ -155,7 +155,9 @@ void MCMachOStreamer::ChangeSection(MCSection *Section, if (SegName == "__DWARF") CreatedADWARFSection = true; else if (Created && DWARFMustBeAtTheEnd && !canGoAfterDWARF(MSec)) - assert(!CreatedADWARFSection && "Creating regular section after DWARF"); + assert((!CreatedADWARFSection || + Section == getContext().getObjectFileInfo()->getStackMapSection()) + && "Creating regular section after DWARF"); // Output a linker-local symbol so we don't need section-relative local // relocations. The linker hates us when we do that. -- 2.7.4