Skip to content

Commit 1eda21e

Browse files
committed
[ELF][test] Make tests more tolerant to exact symbol addresses
Delete relocation-local.s and relocation-shared.s - covered by various tests llvm-svn: 371514
1 parent 973bd3e commit 1eda21e

22 files changed

+166
-234
lines changed

lld/test/ELF/Inputs/copy-in-shared.s

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@
22
.global foo
33
foo:
44
.size foo, 4
5+
.space 4
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
.data
22
.global foo
33
.type foo, @object
4-
.align 8
5-
.size foo, 8
4+
.align 32
5+
.size foo, 32
66
foo:
77
.quad 0

lld/test/ELF/compressed-debug-input.s

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
# DATA-NEXT: SHF_STRINGS (0x20)
5555
# DATA-NEXT: ]
5656
# DATA-NEXT: Address: 0x0
57-
# DATA-NEXT: Offset: 0x1060
57+
# DATA-NEXT: Offset:
5858
# DATA-NEXT: Size: 69
5959
# DATA-NEXT: Link: 0
6060
# DATA-NEXT: Info: 0

lld/test/ELF/discard-merge-unnamed.s

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
// CHECK-NEXT: }
1616
// CHECK-NEXT: Symbol {
1717
// CHECK-NEXT: Name: _DYNAMIC
18-
// CHECK-NEXT: Value: 0x2000
18+
// CHECK-NEXT: Value:
1919
// CHECK-NEXT: Size: 0
2020
// CHECK-NEXT: Binding: Local
2121
// CHECK-NEXT: Type: None

lld/test/ELF/dynamic-list-weak-archive.s

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
# REQUIRES: x86
22

3+
## A weak reference does not fetch the lazy definition. Test foo is preemptable
4+
## even in the presence of a dynamic list, so a dynamic relocation will be
5+
## produced.
6+
37
# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t1.o
4-
# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %S/Inputs/dynamic-list-weak-archive.s -o %t2.o
8+
# RUN: echo '.globl foo; foo:' | llvm-mc -filetype=obj -triple=x86_64 - -o %t2.o
59
# RUN: rm -f %t.a
610
# RUN: llvm-ar rcs %t.a %t2.o
711
# RUN: echo "{ zed; };" > %t.list
@@ -10,7 +14,7 @@
1014

1115
# CHECK: Relocations [
1216
# CHECK-NEXT: Section ({{.*}}) .rela.plt {
13-
# CHECK-NEXT: 0x3018 R_X86_64_JUMP_SLOT foo
17+
# CHECK-NEXT: R_X86_64_JUMP_SLOT foo
1418
# CHECK-NEXT: }
1519
# CHECK-NEXT: ]
1620

lld/test/ELF/gc-sections-string.s

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
// CHECK-NEXT: }
3636
// CHECK-NEXT: Symbol {
3737
// CHECK-NEXT: Name: _start
38-
// CHECK-NEXT: Value: 0x201000
38+
// CHECK-NEXT: Value:
3939
// CHECK-NEXT: Size: 0
4040
// CHECK-NEXT: Binding: Global (0x1)
4141
// CHECK-NEXT: Type: Function (0x2)

lld/test/ELF/gnu-ifunc-noplt.s

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
// REQUIRES: x86
2+
3+
/// Test -z ifunc-noplt.
4+
25
// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-freebsd %S/Inputs/shared2-x86-64.s -o %t1.o
3-
// RUN: ld.lld %t1.o --shared -o %t.so
6+
// RUN: ld.lld %t1.o --shared -soname=so -o %t.so
47
// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-freebsd %s -o %t.o
58
// RUN: ld.lld -z ifunc-noplt -z notext --hash-style=sysv %t.so %t.o -o %tout
69
// RUN: llvm-objdump -d --no-show-raw-insn %tout | FileCheck %s --check-prefix=DISASM

lld/test/ELF/gnu-ifunc-plt.s

Lines changed: 26 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
// REQUIRES: x86
2+
3+
/// For non-preemptable ifunc, place ifunc PLT entries after regular PLT entries.
4+
25
// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %S/Inputs/shared2-x86-64.s -o %t1.o
3-
// RUN: ld.lld %t1.o --shared -o %t.so
6+
// RUN: ld.lld %t1.o --shared -soname=so -o %t.so
47
// RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
58
// RUN: ld.lld --hash-style=sysv %t.so %t.o -o %tout
6-
// RUN: llvm-objdump -d %tout | FileCheck %s --check-prefix=DISASM
9+
// RUN: llvm-objdump -d --no-show-raw-insn %tout | FileCheck %s --check-prefix=DISASM
710
// RUN: llvm-objdump -s %tout | FileCheck %s --check-prefix=GOTPLT
811
// RUN: llvm-readobj -r --dynamic-table %tout | FileCheck %s
912

@@ -34,37 +37,37 @@
3437
// DISASM: Disassembly of section .text:
3538
// DISASM-EMPTY:
3639
// DISASM-NEXT: foo:
37-
// DISASM-NEXT: 201000: c3 retq
40+
// DISASM-NEXT: 201000: retq
3841
// DISASM: bar:
39-
// DISASM-NEXT: 201001: c3 retq
42+
// DISASM-NEXT: 201001: retq
4043
// DISASM: _start:
41-
// DISASM-NEXT: 201002: e8 49 00 00 00 callq 73
42-
// DISASM-NEXT: 201007: e8 54 00 00 00 callq 84
43-
// DISASM-NEXT: 20100c: e8 1f 00 00 00 callq 31
44-
// DISASM-NEXT: 201011: e8 2a 00 00 00 callq 42
44+
// DISASM-NEXT: 201002: callq 73
45+
// DISASM-NEXT: 201007: callq 84
46+
// DISASM-NEXT: callq {{.*}} <bar2@plt>
47+
// DISASM-NEXT: callq {{.*}} <zed2@plt>
4548
// DISASM-EMPTY:
4649
// DISASM-NEXT: Disassembly of section .plt:
4750
// DISASM-EMPTY:
4851
// DISASM-NEXT: .plt:
49-
// DISASM-NEXT: 201020: ff 35 e2 1f 00 00 pushq 8162(%rip)
50-
// DISASM-NEXT: 201026: ff 25 e4 1f 00 00 jmpq *8164(%rip)
51-
// DISASM-NEXT: 20102c: 0f 1f 40 00 nopl (%rax)
52+
// DISASM-NEXT: 201020: pushq 8162(%rip)
53+
// DISASM-NEXT: 201026: jmpq *8164(%rip)
54+
// DISASM-NEXT: 20102c: nopl (%rax)
5255
// DISASM-EMPTY:
5356
// DISASM-NEXT: bar2@plt:
54-
// DISASM-NEXT: 201030: ff 25 e2 1f 00 00 jmpq *8162(%rip)
55-
// DISASM-NEXT: 201036: 68 00 00 00 00 pushq $0
56-
// DISASM-NEXT: 20103b: e9 e0 ff ff ff jmp -32 <.plt>
57+
// DISASM-NEXT: 201030: jmpq *8162(%rip)
58+
// DISASM-NEXT: 201036: pushq $0
59+
// DISASM-NEXT: 20103b: jmp -32 <.plt>
5760
// DISASM-EMPTY:
5861
// DISASM-NEXT: zed2@plt:
59-
// DISASM-NEXT: 201040: ff 25 da 1f 00 00 jmpq *8154(%rip)
60-
// DISASM-NEXT: 201046: 68 01 00 00 00 pushq $1
61-
// DISASM-NEXT: 20104b: e9 d0 ff ff ff jmp -48 <.plt>
62-
// DISASM-NEXT: 201050: ff 25 d2 1f 00 00 jmpq *8146(%rip)
63-
// DISASM-NEXT: 201056: 68 00 00 00 00 pushq $0
64-
// DISASM-NEXT: 20105b: e9 e0 ff ff ff jmp -32 <zed2@plt>
65-
// DISASM-NEXT: 201060: ff 25 ca 1f 00 00 jmpq *8138(%rip)
66-
// DISASM-NEXT: 201066: 68 01 00 00 00 pushq $1
67-
// DISASM-NEXT: 20106b: e9 d0 ff ff ff jmp -48 <zed2@plt>
62+
// DISASM-NEXT: 201040: jmpq *8154(%rip)
63+
// DISASM-NEXT: 201046: pushq $1
64+
// DISASM-NEXT: 20104b: jmp -48 <.plt>
65+
// DISASM-NEXT: 201050: jmpq *8146(%rip)
66+
// DISASM-NEXT: 201056: pushq $0
67+
// DISASM-NEXT: 20105b: jmp -32 <zed2@plt>
68+
// DISASM-NEXT: 201060: jmpq *8138(%rip)
69+
// DISASM-NEXT: 201066: pushq $1
70+
// DISASM-NEXT: 20106b: jmp -48 <zed2@plt>
6871

6972
.text
7073
.type foo STT_GNU_IFUNC

lld/test/ELF/gnu-ifunc-shared.s

Lines changed: 26 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,53 @@
11
// REQUIRES: x86
2+
3+
/// For non-preemptable ifunc, place ifunc PLT entries after regular PLT entries.
4+
25
// RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
3-
// RUN: ld.lld --hash-style=sysv --shared -o %t.so %t.o
4-
// RUN: llvm-objdump -d %t.so | FileCheck %s --check-prefix=DISASM
6+
// RUN: ld.lld --shared -o %t.so %t.o
7+
// RUN: llvm-objdump -d --no-show-raw-insn %t.so | FileCheck %s --check-prefix=DISASM
58
// RUN: llvm-readobj -r %t.so | FileCheck %s
69

710
// Check that an IRELATIVE relocation is used for a non-preemptible ifunc
811
// handler and a JUMP_SLOT is used for a preemptible ifunc
912
// DISASM: Disassembly of section .text:
1013
// DISASM-EMPTY:
1114
// DISASM-NEXT: fct:
12-
// DISASM-NEXT: 1000: c3 retq
15+
// DISASM-NEXT: 1000: retq
1316
// DISASM: fct2:
14-
// DISASM-NEXT: 1001: c3 retq
17+
// DISASM-NEXT: 1001: retq
1518
// DISASM: f1:
16-
// DISASM-NEXT: 1002: e8 49 00 00 00 callq 73
17-
// DISASM-NEXT: 1007: e8 24 00 00 00 callq 36
18-
// DISASM-NEXT: 100c: e8 2f 00 00 00 callq 47
19-
// DISASM-NEXT: 1011: c3 retq
19+
// DISASM-NEXT: 1002: callq 73
20+
// DISASM-NEXT: 1007: callq 36
21+
// DISASM-NEXT: 100c: callq 47
22+
// DISASM-NEXT: 1011: retq
2023
// DISASM: f2:
21-
// DISASM-NEXT: 1012: c3 retq
24+
// DISASM-NEXT: 1012: retq
2225
// DISASM-EMPTY:
2326
// DISASM-NEXT: Disassembly of section .plt:
2427
// DISASM-EMPTY:
2528
// DISASM-NEXT: .plt:
26-
// DISASM-NEXT: 1020: ff 35 e2 1f 00 00 pushq 8162(%rip)
27-
// DISASM-NEXT: 1026: ff 25 e4 1f 00 00 jmpq *8164(%rip)
28-
// DISASM-NEXT: 102c: 0f 1f 40 00 nopl (%rax)
29+
// DISASM-NEXT: 1020: pushq 8162(%rip)
30+
// DISASM-NEXT: 1026: jmpq *8164(%rip)
31+
// DISASM-NEXT: 102c: nopl (%rax)
2932
// DISASM-EMPTY:
3033
// DISASM-NEXT: fct2@plt:
31-
// DISASM-NEXT: 1030: ff 25 e2 1f 00 00 jmpq *8162(%rip)
32-
// DISASM-NEXT: 1036: 68 00 00 00 00 pushq $0
33-
// DISASM-NEXT: 103b: e9 e0 ff ff ff jmp -32 <.plt>
34+
// DISASM-NEXT: 1030: jmpq *8162(%rip)
35+
// DISASM-NEXT: 1036: pushq $0
36+
// DISASM-NEXT: 103b: jmp -32 <.plt>
3437
// DISASM-EMPTY:
3538
// DISASM-NEXT: f2@plt:
36-
// DISASM-NEXT: 1040: ff 25 da 1f 00 00 jmpq *8154(%rip)
37-
// DISASM-NEXT: 1046: 68 01 00 00 00 pushq $1
38-
// DISASM-NEXT: 104b: e9 d0 ff ff ff jmp -48 <.plt>
39-
// DISASM-NEXT: 1050: ff 25 d2 1f 00 00 jmpq *8146(%rip)
40-
// DISASM-NEXT: 1056: 68 00 00 00 00 pushq $0
41-
// DISASM-NEXT: 105b: e9 e0 ff ff ff jmp -32 <f2@plt>
39+
// DISASM-NEXT: 1040: jmpq *8154(%rip)
40+
// DISASM-NEXT: 1046: pushq $1
41+
// DISASM-NEXT: 104b: jmp -48 <.plt>
42+
// DISASM-NEXT: 1050: jmpq *8146(%rip)
43+
// DISASM-NEXT: 1056: pushq $0
44+
// DISASM-NEXT: 105b: jmp -32 <f2@plt>
4245

4346
// CHECK: Relocations [
44-
// CHECK-NEXT: Section (4) .rela.dyn {
47+
// CHECK-NEXT: Section (5) .rela.dyn {
4548
// CHECK-NEXT: 0x3028 R_X86_64_IRELATIVE - 0x1000
4649
// CHECK-NEXT: }
47-
// CHECK-NEXT: Section (5) .rela.plt {
50+
// CHECK-NEXT: Section (6) .rela.plt {
4851
// CHECK-NEXT: 0x3018 R_X86_64_JUMP_SLOT fct2 0x0
4952
// CHECK-NEXT: 0x3020 R_X86_64_JUMP_SLOT f2 0x0
5053
// CHECK-NEXT: }

lld/test/ELF/local-got-shared.s

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// REQUIRES: x86
22
// RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
3-
// RUN: ld.lld --hash-style=sysv %t.o -o %t -shared
3+
// RUN: ld.lld %t.o -o %t -shared
44
// RUN: llvm-readobj -S -r -d %t | FileCheck %s
5-
// RUN: llvm-objdump -d %t | FileCheck --check-prefix=DISASM %s
5+
// RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck --check-prefix=DISASM %s
66

77
bar:
88
call foo@gotpcrel
@@ -12,26 +12,26 @@ bar:
1212
foo:
1313
nop
1414

15-
// 0x20A0 - 0x1000 - 5 = 4251
15+
// 0x20B0 - 0x1000 - 5 = 4267
1616
// DISASM: bar:
17-
// DISASM-NEXT: 1000: {{.*}} callq 4251
17+
// DISASM-NEXT: 1000: callq 4267
1818

1919
// DISASM: foo:
20-
// DISASM-NEXT: 1005: {{.*}} nop
20+
// DISASM-NEXT: 1005: nop
2121

2222
// CHECK: Name: .got
2323
// CHECK-NEXT: Type: SHT_PROGBITS
2424
// CHECK-NEXT: Flags [
2525
// CHECK-NEXT: SHF_ALLOC
2626
// CHECK-NEXT: SHF_WRITE
2727
// CHECK-NEXT: ]
28-
// CHECK-NEXT: Address: 0x20A0
28+
// CHECK-NEXT: Address: 0x20B0
2929
// CHECK-NEXT: Offset:
3030
// CHECK-NEXT: Size: 8
3131

3232
// CHECK: Relocations [
3333
// CHECK-NEXT: Section ({{.*}}) .rela.dyn {
34-
// CHECK-NEXT: 0x20A0 R_X86_64_RELATIVE - 0x1005
34+
// CHECK-NEXT: 0x20B0 R_X86_64_RELATIVE - 0x1005
3535
// CHECK-NEXT: }
3636
// CHECK-NEXT: ]
3737
// CHECK: 0x000000006FFFFFF9 RELACOUNT 1

lld/test/ELF/local-got.s

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
// REQUIRES: x86
22
// RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
33
// RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %p/Inputs/shared.s -o %t2.o
4-
// RUN: ld.lld -shared %t2.o -o %t2.so
5-
// RUN: ld.lld --hash-style=sysv %t.o %t2.so -o %t
4+
// RUN: ld.lld -shared %t2.o -soname=so -o %t2.so
5+
// RUN: ld.lld %t.o %t2.so -o %t
66
// RUN: llvm-readobj -S -r --section-data %t | FileCheck %s
7-
// RUN: llvm-objdump -d %t | FileCheck --check-prefix=DISASM %s
7+
// RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck --check-prefix=DISASM %s
88

99
.globl _start
1010
_start:
@@ -15,35 +15,34 @@ _start:
1515
foo:
1616
nop
1717

18-
// 0x2020B0 - 0x201000 - 5 = 4251
19-
// 0x2020B8 - 0x201005 - 5 = 4254
18+
// 0x2020C0 - 0x201000 - 5 = 4283
19+
// 0x2020C8 - 0x201005 - 5 = 4286
2020
// DISASM: _start:
21-
// DISASM-NEXT: 201000: {{.*}} callq 4267
22-
// DISASM-NEXT: 201005: {{.*}} callq 4270
23-
24-
// DISASM: foo:
25-
// DISASM-NEXT: 20100a: {{.*}} nop
21+
// DISASM-NEXT: 201000: callq 4283
22+
// DISASM-NEXT: 201005: callq 4286
23+
24+
// DISASM: foo:
25+
// DISASM-NEXT: 20100a: nop
2626

2727
// CHECK: Name: .got
2828
// CHECK-NEXT: Type: SHT_PROGBITS
2929
// CHECK-NEXT: Flags [
3030
// CHECK-NEXT: SHF_ALLOC
3131
// CHECK-NEXT: SHF_WRITE
3232
// CHECK-NEXT: ]
33-
// CHECK-NEXT: Address: 0x2020B0
33+
// CHECK-NEXT: Address: 0x2020C0
3434
// CHECK-NEXT: Offset:
3535
// CHECK-NEXT: Size: 16
3636
// CHECK-NEXT: Link: 0
3737
// CHECK-NEXT: Info: 0
3838
// CHECK-NEXT: AddressAlignment: 8
3939
// CHECK-NEXT: EntrySize: 0
4040
// CHECK-NEXT: SectionData (
41-
// 0x20200a in little endian
4241
// CHECK-NEXT: 0000: 00000000 00000000 0A102000 00000000
4342
// CHECK-NEXT: )
4443

4544
// CHECK: Relocations [
4645
// CHECK-NEXT: Section ({{.*}}) .rela.dyn {
47-
// CHECK-NEXT: 0x2020B0 R_X86_64_GLOB_DAT bar 0x0
46+
// CHECK-NEXT: 0x2020C0 R_X86_64_GLOB_DAT bar 0x0
4847
// CHECK-NEXT: }
4948
// CHECK-NEXT: ]

lld/test/ELF/pre_init_fini_array.s

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// REQUIRES: x86
22
// RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
33
// RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %p/Inputs/shared.s -o %t2
4-
// RUN: ld.lld %t2 -o %t2.so -shared
4+
// RUN: ld.lld %t2 -o %t2.so -shared -soname=so
55
// RUN: ld.lld %t %t2.so -o %t2
66
// RUN: llvm-readobj -r --symbols --sections --dynamic-table %t2 | FileCheck %s
77
// RUN: llvm-objdump -d %t2 | FileCheck --check-prefix=DISASM %s
@@ -63,7 +63,7 @@ _start:
6363
// CHECK-NEXT: ]
6464

6565
// CHECK: Name: __fini_array_end
66-
// CHECK-NEXT: Value: 0x20201B
66+
// CHECK-NEXT: Value:
6767
// CHECK-NEXT: Size: 0
6868
// CHECK-NEXT: Binding: Local
6969
// CHECK-NEXT: Type: None
@@ -85,7 +85,7 @@ _start:
8585
// CHECK-NEXT: }
8686
// CHECK-NEXT: Symbol {
8787
// CHECK-NEXT: Name: __init_array_end
88-
// CHECK-NEXT: Value: 0x202008
88+
// CHECK-NEXT: Value:
8989
// CHECK-NEXT: Size: 0
9090
// CHECK-NEXT: Binding: Local
9191
// CHECK-NEXT: Type: None
@@ -107,7 +107,7 @@ _start:
107107
// CHECK-NEXT: }
108108
// CHECK-NEXT: Symbol {
109109
// CHECK-NEXT: Name: __preinit_array_end
110-
// CHECK-NEXT: Value: 0x202011
110+
// CHECK-NEXT: Value:
111111
// CHECK-NEXT: Size: 0
112112
// CHECK-NEXT: Binding: Local
113113
// CHECK-NEXT: Type: None
@@ -136,17 +136,10 @@ _start:
136136
// CHECK: FINI_ARRAY [[FINI_ADDR]]
137137
// CHECK: FINI_ARRAYSZ [[FINI_SIZE]] (bytes)
138138

139-
140-
// 0x202008 - (0x201000 + 5) = 4099
141-
// 0x202011 - (0x201005 + 5) = 4103
142-
// 0x202000 - (0x20100a + 5) = 4081
143-
// 0x202008 - (0x20100f + 5) = 4084
144-
// 0x202011 - (0x201014 + 5) = 4088
145-
// 0x20201B - (0x201019 + 5) = 4093
146139
// DISASM: _start:
147-
// DISASM-NEXT: 201000: e8 {{.*}} callq 4099
148-
// DISASM-NEXT: 201005: e8 {{.*}} callq 4103
149-
// DISASM-NEXT: 20100a: e8 {{.*}} callq 4081
150-
// DISASM-NEXT: 20100f: e8 {{.*}} callq 4084
151-
// DISASM-NEXT: 201014: e8 {{.*}} callq 4088
152-
// DISASM-NEXT: 201019: e8 {{.*}} callq 4093
140+
// DISASM-NEXT: callq {{.*}} <__preinit_array_start>
141+
// DISASM-NEXT: callq {{.*}} <__fini_array_start>
142+
// DISASM-NEXT: callq {{.*}} <__init_array_start>
143+
// DISASM-NEXT: callq {{.*}} <__preinit_array_start>
144+
// DISASM-NEXT: callq {{.*}} <__fini_array_start>
145+
// DISASM-NEXT: callq {{.*}} <__fini_array_end>

0 commit comments

Comments
 (0)