| # 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)) } |
| } |
| } |