66 lines · plain
1# REQUIRES: x862## Test that -r keeps local symbols which are used in relocations even when3## --discard-{locals,all} is given.4 5# RUN: llvm-mc -filetype=obj -triple=x86_64 -save-temp-labels %s -o %t.o6 7# RUN: ld.lld -r --discard-locals %t.o -o %tlocal.ro8# RUN: llvm-readelf -s %tlocal.ro | FileCheck --check-prefix=DISCARD-LOCALS %s9# RUN: llvm-readobj -r %tlocal.ro | FileCheck --check-prefix=REL %s10 11# RUN: ld.lld -r --discard-all %t.o -o %tall.ro12# RUN: llvm-readelf -s %tall.ro | FileCheck --check-prefix=DISCARD-ALL %s13# RUN: llvm-readobj -r %tall.ro | FileCheck --check-prefix=REL %s14 15## --discard-locals removes unused local symbols which start with ".L"16# DISCARD-LOCALS: 0: {{0+}} 0 NOTYPE LOCAL DEFAULT UND17# DISCARD-LOCALS-NEXT: NOTYPE LOCAL DEFAULT {{.*}} .Lused18# DISCARD-LOCALS-NEXT: NOTYPE LOCAL DEFAULT {{.*}} used19# DISCARD-LOCALS-NEXT: NOTYPE LOCAL DEFAULT {{.*}} .L.str20# DISCARD-LOCALS-NEXT: NOTYPE LOCAL DEFAULT {{.*}} unused21# DISCARD-LOCALS-NEXT: NOTYPE LOCAL DEFAULT {{.*}} unused_gc22# DISCARD-LOCALS-NEXT: SECTION LOCAL DEFAULT {{.*}} .text23# DISCARD-LOCALS-NEXT: SECTION LOCAL DEFAULT {{.*}} text24# DISCARD-LOCALS-NEXT: SECTION LOCAL DEFAULT {{.*}} gc25# DISCARD-LOCALS-NEXT: SECTION LOCAL DEFAULT {{.*}} .rodata.str1.126# DISCARD-LOCALS-NEXT: NOTYPE GLOBAL DEFAULT {{.*}} _start27 28## --discard-all removes all unused regular local symbols.29# DISCARD-ALL: 0: {{0+}} 0 NOTYPE LOCAL DEFAULT UND30# DISCARD-ALL-NEXT: NOTYPE LOCAL DEFAULT {{.*}} .Lused31# DISCARD-ALL-NEXT: NOTYPE LOCAL DEFAULT {{.*}} used32# DISCARD-ALL-NEXT: NOTYPE LOCAL DEFAULT {{.*}} .L.str33# DISCARD-ALL-NEXT: SECTION LOCAL DEFAULT {{.*}} .text34# DISCARD-ALL-NEXT: SECTION LOCAL DEFAULT {{.*}} text35# DISCARD-ALL-NEXT: SECTION LOCAL DEFAULT {{.*}} gc36# DISCARD-ALL-NEXT: SECTION LOCAL DEFAULT {{.*}} .rodata.str1.137# DISCARD-ALL-NEXT: NOTYPE GLOBAL DEFAULT {{.*}} _start38 39# REL: .rela.text {40# REL-NEXT: R_X86_64_PLT32 text 0xFFFFFFFFFFFFFFFC41# REL-NEXT: R_X86_64_PLT32 .Lused 0xFFFFFFFFFFFFFFFC42# REL-NEXT: R_X86_64_PLT32 used 0xFFFFFFFFFFFFFFFC43# REL-NEXT: R_X86_64_PC32 .L.str 0xFFFFFFFFFFFFFFFC44# REL-NEXT: }45 46.globl _start47_start:48 call text@plt49 jmp .Lused@plt50 call used@plt51 leaq .L.str(%rip), %rdi52 53.section text,"ax"54.Lunused:55.Lused:56unused:57used:58 59.section gc,"ax"60.Lunused_gc:61unused_gc:62 ret63 64.section .rodata.str1.1,"aMS",@progbits,165.L.str: .asciz "a"66