[ELF] - Do not segfault when using --gc-sections with linker script

Patch fixes PR32024.

Sections that were not marked as Live has null output section.
Previously we tried to access that field and segfaulted.

Differential revision: https://reviews.llvm.org/D30188

llvm-svn: 295727
This commit is contained in:
George Rimar 2017-02-21 15:46:43 +00:00
parent cc43087afc
commit 78ef645f94
2 changed files with 21 additions and 0 deletions

View File

@ -503,6 +503,8 @@ template <class ELFT> void LinkerScript<ELFT>::process(BaseCommand &Base) {
continue;
auto *IB = static_cast<InputSectionBase<ELFT> *>(ID);
if (!IB->Live)
continue;
switchTo(IB->OutSec);
if (auto *I = dyn_cast<InputSection<ELFT>>(IB))
output(I);

View File

@ -0,0 +1,19 @@
# REQUIRES: x86
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
# RUN: echo "SECTIONS { .text : { *(.text*) } }" > %t.script
# RUN: ld.lld %t --gc-sections --script %t.script -o %t1
# RUN: llvm-objdump -section-headers %t1 | FileCheck %s
# CHECK: Sections:
# CHECK-NEXT: Name Size
# CHECK: .text 00000001
.section .text.foo, "ax"
.global _start
_start:
nop
.section .text.bar, "ax"
.global bar
bar:
nop