| # REQUIRES: x86 | |
| # RUN: rm -rf %t && split-file %s %t && cd %t | |
| # RUN: llvm-mc -filetype=obj -triple=x86_64 a.s -o a.o | |
| # RUN: ld.lld a.o --gc-sections --script nokeep.t -o a | |
| # RUN: llvm-objdump --section-headers a | FileCheck --check-prefix=NOKEEP %s | |
| # RUN: ld.lld a.o --gc-sections --script keep.t -o a | |
| # RUN: llvm-objdump --section-headers a | FileCheck --check-prefix=KEEP %s | |
| # NOKEEP: Sections: | |
| # NOKEEP-NEXT: Idx Name Size | |
| # NOKEEP-NEXT: 0 00000000 | |
| # NOKEEP-NEXT: 1 .text 00000004 | |
| # NOKEEP-NEXT: 2 .keep1 00000000 | |
| # KEEP: Sections: | |
| # KEEP-NEXT: Idx Name Size | |
| # KEEP-NEXT: 0 00000000 | |
| # KEEP-NEXT: 1 .text 00000004 | |
| # KEEP-NEXT: 2 .keep1 00000004 | |
| # KEEP-NEXT: 3 .keep2 00000004 | |
| #--- a.s | |
| .global _start | |
| _start: | |
| .long 1 | |
| .section .keep1, "a" | |
| keep1: | |
| .long 2 | |
| .section .keep2, "a" | |
| keep2: | |
| .long 3 | |
| #--- nokeep.t | |
| SECTIONS { | |
| .text : { *(.text) } | |
| OVERLAY 0x1000 : AT ( 0x4000 ) { | |
| .keep1 { *(.keep1) } | |
| .keep2 { *(.keep2) } | |
| } | |
| } | |
| #--- keep.t | |
| SECTIONS { | |
| .text : { *(.text) } | |
| OVERLAY 0x1000 : AT ( 0x4000 ) { | |
| .keep1 { KEEP(*(.keep1)) } | |
| .keep2 { KEEP(*(.keep2)) } | |
| } | |
| } |