Index: ELF/LinkerScript.cpp =================================================================== --- ELF/LinkerScript.cpp +++ ELF/LinkerScript.cpp @@ -636,6 +636,8 @@ continue; StringRef Name = getOutputSectionName(S); + if (Name == "") + continue; if (Config->OrphanHandling == OrphanHandlingPolicy::Error) error(toString(S) + " is being placed in '" + Name + "'"); Index: ELF/Writer.cpp =================================================================== --- ELF/Writer.cpp +++ ELF/Writer.cpp @@ -98,6 +98,8 @@ !isa(S)) { OutputSection *Out = cast(S)->getRelocatedSection()->getOutputSection(); + if (!Out) + return ""; if (S->Type == SHT_RELA) return Saver.save(".rela" + Out->Name); return Saver.save(".rel" + Out->Name); Index: test/ELF/emit-relocs-eh.s =================================================================== --- /dev/null +++ test/ELF/emit-relocs-eh.s @@ -0,0 +1,20 @@ +# REQUIRES: x86 +# RUN: llvm-mc -triple=x86_64-unknown-freebsd -filetype=obj %s -o %t1.o +# RUN: ld.lld %t1.o --emit-relocs -o %t +# RUN: llvm-readobj -t -r -s %t | FileCheck %s + +# CHECK: Section { +# CHECK: Index: 2 +# CHECK-NEXT: Name: .text +# CHECK-NEXT: Type: SHT_PROGBITS +# CHECK-NEXT: Flags [ +# CHECK-NEXT: SHF_ALLOC +# CHECK-NEXT: SHF_EXECINSTR +# CHECK-NEXT: ] + +.text +.globl _start +_start: +.cfi_startproc + nop +.cfi_endproc