Skip to content

Commit a317afa

Browse files
committed
[ELF][test] Improve -r tests for local symbols
1 parent 3e992d8 commit a317afa

File tree

2 files changed

+47
-12
lines changed

2 files changed

+47
-12
lines changed

lld/test/ELF/relocatable-discard-locals.s

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,33 +16,39 @@
1616
# DISCARD-LOCALS: 0: {{0+}} 0 NOTYPE LOCAL DEFAULT UND
1717
# DISCARD-LOCALS-NEXT: NOTYPE LOCAL DEFAULT {{.*}} .Lused
1818
# DISCARD-LOCALS-NEXT: NOTYPE LOCAL DEFAULT {{.*}} used
19+
# DISCARD-LOCALS-NEXT: NOTYPE LOCAL DEFAULT {{.*}} .L.str
1920
# DISCARD-LOCALS-NEXT: NOTYPE LOCAL DEFAULT {{.*}} unused
2021
# DISCARD-LOCALS-NEXT: NOTYPE LOCAL DEFAULT {{.*}} unused_gc
2122
# DISCARD-LOCALS-NEXT: SECTION LOCAL DEFAULT {{.*}} .text
2223
# DISCARD-LOCALS-NEXT: SECTION LOCAL DEFAULT {{.*}} text
2324
# DISCARD-LOCALS-NEXT: SECTION LOCAL DEFAULT {{.*}} gc
25+
# DISCARD-LOCALS-NEXT: SECTION LOCAL DEFAULT {{.*}} .rodata.str1.1
2426
# DISCARD-LOCALS-NEXT: NOTYPE GLOBAL DEFAULT {{.*}} _start
2527

2628
## --discard-all removes all unused regular local symbols.
2729
# DISCARD-ALL: 0: {{0+}} 0 NOTYPE LOCAL DEFAULT UND
2830
# DISCARD-ALL-NEXT: NOTYPE LOCAL DEFAULT {{.*}} .Lused
2931
# DISCARD-ALL-NEXT: NOTYPE LOCAL DEFAULT {{.*}} used
32+
# DISCARD-ALL-NEXT: NOTYPE LOCAL DEFAULT {{.*}} .L.str
3033
# DISCARD-ALL-NEXT: SECTION LOCAL DEFAULT {{.*}} .text
3134
# DISCARD-ALL-NEXT: SECTION LOCAL DEFAULT {{.*}} text
3235
# DISCARD-ALL-NEXT: SECTION LOCAL DEFAULT {{.*}} gc
36+
# DISCARD-ALL-NEXT: SECTION LOCAL DEFAULT {{.*}} .rodata.str1.1
3337
# DISCARD-ALL-NEXT: NOTYPE GLOBAL DEFAULT {{.*}} _start
3438

3539
# REL: .rela.text {
3640
# REL-NEXT: R_X86_64_PLT32 text 0xFFFFFFFFFFFFFFFC
3741
# REL-NEXT: R_X86_64_PLT32 .Lused 0xFFFFFFFFFFFFFFFC
3842
# REL-NEXT: R_X86_64_PLT32 used 0xFFFFFFFFFFFFFFFC
43+
# REL-NEXT: R_X86_64_PC32 .L.str 0xFFFFFFFFFFFFFFFC
3944
# REL-NEXT: }
4045

4146
.globl _start
4247
_start:
4348
call text@plt
4449
jmp .Lused@plt
4550
call used@plt
51+
leaq .L.str(%rip), %rdi
4652

4753
.section text,"ax"
4854
.Lunused:
@@ -54,3 +60,6 @@ used:
5460
.Lunused_gc:
5561
unused_gc:
5662
ret
63+
64+
.section .rodata.str1.1,"aMS",@progbits,1
65+
.L.str: .asciz "a"

lld/test/ELF/relocatable-local-sym.s

Lines changed: 38 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,42 @@
11
# REQUIRES: x86
2-
# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t1.o
3-
# RUN: ld.lld -r %t1.o -o %t2.o
4-
# RUN: llvm-readobj -r %t2.o | FileCheck %s
2+
## Test relocations referencing non-STT_SECTION local symbols in SHF_ALLOC and non-SHF_ALLOC sections for -r.
53

6-
# CHECK: Relocations [
7-
# CHECK-NEXT: Section ({{.*}}) .rela.text {
8-
# CHECK-NEXT: 0x3 R_X86_64_PC32 .Lstr 0xFFFFFFFFFFFFFFFC
9-
# CHECK-NEXT: }
10-
# CHECK-NEXT: ]
4+
# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o
5+
# RUN: ld.lld -r -o %t %t.o %t.o
6+
# RUN: llvm-readelf -r -x .nonalloc %t | FileCheck --check-prefix=RELA %s
117

12-
leaq .Lstr(%rip), %rdi
8+
# RUN: llvm-mc -filetype=obj -triple=i686 --defsym X86_32=1 %s -o %t1.o
9+
# RUN: ld.lld -r -o %t1 %t1.o %t1.o
10+
# RUN: llvm-readelf -r -x .nonalloc %t1 | FileCheck --check-prefix=REL %s
1311

14-
.section .rodata.str1.1,"aMS",@progbits,1
15-
.Lstr:
16-
.asciz "abc\n"
12+
# RELA: Relocation section '.rela.data' at offset {{.*}} contains 2 entries:
13+
# RELA: Offset Info Type Symbol's Value Symbol's Name + Addend
14+
# RELA-NEXT: 0000000000000000 {{.*}} R_X86_64_32 0000000000000000 ifunc + 9
15+
# RELA-NEXT: 0000000000000004 {{.*}} R_X86_64_32 0000000000000004 ifunc + 9
16+
# RELA: Relocation section '.rela.nonalloc' at offset {{.*}} contains 2 entries:
17+
# RELA: Offset Info Type Symbol's Value Symbol's Name + Addend
18+
# RELA-NEXT: 0000000000000000 {{.*}} R_X86_64_32 0000000000000000 ifunc + 9
19+
# RELA-NEXT: 0000000000000004 {{.*}} R_X86_64_32 0000000000000004 ifunc + 9
20+
# RELA: Hex dump of section '.nonalloc':
21+
# RELA-NEXT: 0x00000000 00000000 00000000 ........
22+
23+
# REL: Offset Info Type Sym. Value Symbol's Name
24+
# REL-NEXT: 00000000 {{.*}} R_386_32 00000000 ifunc
25+
# REL-NEXT: 00000004 {{.*}} R_386_32 00000004 ifunc
26+
# REL-EMPTY:
27+
# REL: Offset Info Type Sym. Value Symbol's Name
28+
# REL-NEXT: 00000000 {{.*}} R_386_32 00000000 ifunc
29+
# REL-NEXT: 00000004 {{.*}} R_386_32 00000004 ifunc
30+
# REL: Hex dump of section '.nonalloc':
31+
# REL-NEXT: 0x00000000 09000000 09000000 ........
32+
33+
resolver: ret
34+
.type ifunc, @gnu_indirect_function
35+
.set ifunc, resolver
36+
37+
.data
38+
.long ifunc+9
39+
40+
.section .nonalloc
41+
## The relocation references ifunc instead of the STT_SECTION symbol.
42+
.long ifunc+9

0 commit comments

Comments
 (0)