Files
clang-p2996/lld/test/ELF/linkerscript/sections-gc2.s
Rafael Espindola 692b2f88d3 Fully precise gc handling of __start and __stop symbols.
This puts us at parity with bfd, which could already gc this case.

I noticed the sections not being gced when linking a modified freebsd
kernel. A section that was not gced and not mentioned in the linker
script would end up breaking the expected layout. Since fixing the gc
is relatively simple and an improvement, that seems better than trying
to hack the orphan placement code.

There are 173 input section in the entire link whose names are valid C
identifiers, so this is probably not too performance critical.

llvm-svn: 297049
2017-03-06 18:48:18 +00:00

32 lines
854 B
ArmAsm

# REQUIRES: x86
# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
# RUN: echo "SECTIONS { \
# RUN: used_in_reloc : { *(used_in_reloc) } \
# RUN: used_in_script : { *(used_in_script) } \
# RUN: .text : { *(.text) } \
# RUN: }" > %t.script
# RUN: ld.lld -T %t.script -o %t.so %t.o --gc-sections
# RUN: llvm-objdump -h %t.so | FileCheck %s
# CHECK: Idx Name Size Address Type
# CHECK-NEXT: 0
# CHECK-NEXT: used_in_reloc
# CHECK-NEXT: .text
# CHECK-NEXT: .comment
# CHECK-NEXT: .symtab
# CHECK-NEXT: .shstrtab
# CHECK-NEXT: .strtab
.global _start
_start:
.quad __start_used_in_reloc
.section unused,"a"
.quad 0
.section used_in_script,"a"
.quad __start_used_in_script
.section used_in_reloc,"a"
.quad 0