diff --git a/llvm/lib/MC/MCAssembler.cpp b/llvm/lib/MC/MCAssembler.cpp index 7a42108ceaf3..4735f6c3c55e 100644 --- a/llvm/lib/MC/MCAssembler.cpp +++ b/llvm/lib/MC/MCAssembler.cpp @@ -575,8 +575,8 @@ void MCAssembler::writeSectionData(const MCSection *Sec, // into a virtual section. This is to support clients which use standard // directives to fill the contents of virtual sections. const MCDataFragment &DF = cast(F); - assert(DF.fixup_begin() == DF.fixup_end() && - "Cannot have fixups in virtual section!"); + if (DF.fixup_begin() != DF.fixup_end()) + report_fatal_error("cannot have fixups in virtual section!"); for (unsigned i = 0, e = DF.getContents().size(); i != e; ++i) if (DF.getContents()[i]) { if (auto *ELFSec = dyn_cast(Sec)) diff --git a/llvm/test/MC/X86/reloc-bss.s b/llvm/test/MC/X86/reloc-bss.s new file mode 100644 index 000000000000..3cf26d8b28e5 --- /dev/null +++ b/llvm/test/MC/X86/reloc-bss.s @@ -0,0 +1,9 @@ +# RUN: not llvm-mc -filetype=obj -triple=x86_64-linux-gnu %s 2>&1 | FileCheck %s +# CHECK: LLVM ERROR: cannot have fixups in virtual section! + +.section .init_array,"awT",@nobits + +.hidden patatino +.globl patatino +patatino: + movl __init_array_start, %eax