Skip to content

Commit 3cecf17

Browse files
committed
[ELF] Refactor merge-* tests
1 parent dc4c8de commit 3cecf17

File tree

7 files changed

+112
-298
lines changed

7 files changed

+112
-298
lines changed

lld/test/ELF/merge-addr.s

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# REQUIRES: x86
2+
# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o
3+
# RUN: ld.lld %t.o -o %t.so -shared --section-start cst4=0x800 --section-start str=0x1000
4+
# RUN: llvm-readelf -r -S %t.so | FileCheck %s
5+
# RUN: llvm-objdump -s %t.so | FileCheck %s --check-prefix=OBJDUMP
6+
7+
# RUN: ld.lld %t.o -o %t0.so -O0 -shared --section-start cst4=0x800 --section-start str=0x1000
8+
# RUN: llvm-objdump -s %t0.so | FileCheck %s --check-prefix=OBJDUMP0
9+
# RUN: ld.lld %t.o -o %t2.so -O2 -shared --section-start cst4=0x800 --section-start str=0x1000
10+
# RUN: llvm-objdump -s %t2.so | FileCheck %s --check-prefix=OBJDUMP2
11+
12+
# CHECK: Name Type Address Off Size ES Flg Lk Inf Al
13+
# CHECK: cst4 PROGBITS 0000000000000800 000800 000004 04 AM 0 0 1
14+
# CHECK-NEXT: str PROGBITS 0000000000001000 001000 000009 01 AMS 0 0 1
15+
16+
# CHECK: Relocation section '.rela.dyn'
17+
# CHECK-NEXT: Offset Info Type Symbol's Value Symbol's Name + Addend
18+
# CHECK-NEXT: R_X86_64_RELATIVE 802
19+
# CHECK-NEXT: R_X86_64_RELATIVE 1000
20+
# CHECK-NEXT: R_X86_64_RELATIVE 1006
21+
# CHECK-NEXT: R_X86_64_RELATIVE 1002
22+
# CHECK-EMPTY:
23+
24+
# OBJDUMP: Contents of section str:
25+
# OBJDUMP-NEXT: 1000 61006162 63006263 00 a.abc.bc.
26+
# OBJDUMP: Contents of section .data:
27+
# OBJDUMP-NEXT: 00000000 00000000 00000000 00000000 ................
28+
# OBJDUMP-NEXT: 00000000 00000000 ........
29+
# OBJDUMP: Contents of section .bar:
30+
# OBJDUMP-NEXT: 0000 00080000 00000000 00080000 00000000 ................
31+
32+
# OBJDUMP0: Contents of section cst4:
33+
# OBJDUMP0-NEXT: 0800 2a000000 2a000000 *...*...
34+
# OBJDUMP0-NEXT: Contents of section str:
35+
# OBJDUMP0-NEXT: 1000 61626300 61006263 00626300 abc.a.bc.bc.
36+
37+
# OBJDUMP2: Contents of section cst4:
38+
# OBJDUMP2-NEXT: 0800 2a000000 *...
39+
# OBJDUMP2-NEXT: Contents of section str:
40+
# OBJDUMP2-NEXT: 1000 61626300 6100 abc.a.
41+
42+
.section cst4,"aM",@progbits,4
43+
.long 42
44+
.long 42
45+
46+
.section str,"aMS",@progbits,1
47+
abc:
48+
.asciz "abc"
49+
a:
50+
.asciz "a"
51+
bc:
52+
.asciz "bc"
53+
.asciz "bc"
54+
55+
.data
56+
.quad cst4 + 6
57+
.quad a
58+
.quad bc
59+
.quad abc
60+
61+
.section .bar
62+
.quad cst4
63+
.quad cst4 + 4

lld/test/ELF/merge-reloc.s

Lines changed: 49 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -1,91 +1,57 @@
11
# REQUIRES: x86
22
# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
3-
# RUN: ld.lld %t.o -r -o %t-rel
4-
# RUN: llvm-readobj -S --section-data %t-rel | FileCheck %s
3+
# RUN: ld.lld %t.o -r -o %t.ro
4+
# RUN: llvm-readelf -S %t.ro | FileCheck %s
5+
# RUN: llvm-objdump -s %t.ro | FileCheck %s --check-prefix=OBJDUMP
56

6-
# When linker generates a relocatable object it does string merging in the same
7-
# way as for regular link. It should keep SHF_MERGE flag and set proper sh_entsize
8-
# value so that final link can perform the final merging optimization.
7+
# RUN: ld.lld %t.o -o %t
8+
# RUN: llvm-readelf -S %t | FileCheck %s --check-prefix=CHECK-PDE
99

10-
# CHECK: Section {
11-
# CHECK: Index:
12-
# CHECK: Name: .rodata.1 (
13-
# CHECK-NEXT: Type: SHT_PROGBITS
14-
# CHECK-NEXT: Flags [
15-
# CHECK-NEXT: SHF_ALLOC
16-
# CHECK-NEXT: SHF_MERGE
17-
# CHECK-NEXT: ]
18-
# CHECK-NEXT: Address:
19-
# CHECK-NEXT: Offset:
20-
# CHECK-NEXT: Size: 4
21-
# CHECK-NEXT: Link: 0
22-
# CHECK-NEXT: Info: 0
23-
# CHECK-NEXT: AddressAlignment: 4
24-
# CHECK-NEXT: EntrySize: 4
25-
# CHECK-NEXT: SectionData (
26-
# CHECK-NEXT: 0000: 42000000
27-
# CHECK-NEXT: )
28-
# CHECK-NEXT: }
29-
# CHECK: Section {
30-
# CHECK: Index:
31-
# CHECK: Name: .rodata.2 (
32-
# CHECK-NEXT: Type: SHT_PROGBITS
33-
# CHECK-NEXT: Flags [
34-
# CHECK-NEXT: SHF_ALLOC
35-
# CHECK-NEXT: SHF_MERGE
36-
# CHECK-NEXT: ]
37-
# CHECK-NEXT: Address:
38-
# CHECK-NEXT: Offset:
39-
# CHECK-NEXT: Size: 8
40-
# CHECK-NEXT: Link: 0
41-
# CHECK-NEXT: Info: 0
42-
# CHECK-NEXT: AddressAlignment: 8
43-
# CHECK-NEXT: EntrySize: 8
44-
# CHECK-NEXT: SectionData (
45-
# CHECK-NEXT: 0000: 42000000 42000000
46-
# CHECK-NEXT: )
47-
# CHECK-NEXT: }
48-
# CHECK: Section {
49-
# CHECK: Index:
50-
# CHECK: Name: .data
51-
# CHECK-NEXT: Type: SHT_PROGBITS
52-
# CHECK-NEXT: Flags [
53-
# CHECK-NEXT: SHF_ALLOC
54-
# CHECK-NEXT: SHF_WRITE
55-
# CHECK-NEXT: ]
56-
# CHECK-NEXT: Address:
57-
# CHECK-NEXT: Offset:
58-
# CHECK-NEXT: Size: 16
59-
# CHECK-NEXT: Link: 0
60-
# CHECK-NEXT: Info: 0
61-
# CHECK-NEXT: AddressAlignment: 1
62-
# CHECK-NEXT: EntrySize: 0
63-
# CHECK-NEXT: SectionData (
64-
# CHECK-NEXT: 0000: 42000000 42000000 42000000 42000000
65-
# CHECK-NEXT: )
66-
# CHECK-NEXT: }
10+
# CHECK: [Nr] Name Type Address Off Size ES Flg Lk Inf Al
11+
# CHECK-NEXT: [ 0] NULL 0000000000000000 000000 000000 00 0 0 0
12+
# CHECK-NEXT: [ 1] .text PROGBITS 0000000000000000 000040 000000 00 AX 0 0 4
13+
# CHECK-NEXT: [ 2] .rodata.1 PROGBITS 0000000000000000 000040 000004 04 AM 0 0 4
14+
# CHECK-NEXT: [ 3] .rodata.2 PROGBITS 0000000000000000 000048 000008 08 AM 0 0 8
15+
# CHECK-NEXT: [ 4] .rodata.cst8 PROGBITS 0000000000000000 000050 000010 00 AM 0 0 1
16+
# CHECK-NEXT: [ 5] .rela.rodata.cst8 RELA 0000000000000000 000068 000030 18 I 9 4 8
17+
# CHECK-NEXT: [ 6] .cst4 PROGBITS 0000000000000000 000060 000008 00 AM 0 0 1
18+
# CHECK-NEXT: [ 7] .rela.cst4 RELA 0000000000000000 000098 000030 18 I 9 6 8
19+
20+
# OBJDUMP: Contents of section .rodata.1:
21+
# OBJDUMP-NEXT: 0000 42000000 B...
22+
# OBJDUMP-NEXT: Contents of section .rodata.2:
23+
# OBJDUMP-NEXT: 0000 42000000 42000000 B...B...
24+
# OBJDUMP-NEXT: Contents of section .rodata.cst8:
25+
# OBJDUMP-NEXT: 0000 00000000 00000000 00000000 00000000 ................
26+
# OBJDUMP: Contents of section .cst4:
27+
# OBJDUMP-NEXT: 0000 00000000 00000000 ........
28+
29+
# CHECK-PDE: [ 2] .cst4 PROGBITS 0000000000200140 000140 000008 00 AM 0 0 1
6730

68-
.section .rodata.1,"aM",@progbits,4
69-
.align 4
70-
.global foo
7131
foo:
72-
.long 0x42
73-
.long 0x42
74-
.long 0x42
7532

76-
.section .rodata.2,"aM",@progbits,8
77-
.align 8
78-
.global bar
79-
bar:
80-
.long 0x42
81-
.long 0x42
82-
.long 0x42
83-
.long 0x42
33+
.section .rodata.1,"aM",@progbits,4
34+
.align 4
35+
.long 0x42
36+
.long 0x42
37+
.long 0x42
38+
39+
.section .rodata.2,"aM",@progbits,8
40+
.align 8
41+
.long 0x42
42+
.long 0x42
43+
.long 0x42
44+
.long 0x42
45+
46+
## Test that we keep a SHT_REL[A] section which relocates a SHF_MERGE section
47+
## in -r mode. The relocated SHF_MERGE section is handled as non-mergeable.
48+
.section .rodata.cst8,"aM",@progbits,8,unique,0
49+
.quad foo
50+
51+
.section .rodata.cst8,"aM",@progbits,8,unique,1
52+
.quad foo
8453

85-
.data
86-
.global gar
87-
zed:
88-
.long 0x42
89-
.long 0x42
90-
.long 0x42
91-
.long 0x42
54+
.section .cst4,"aM",@progbits,4,unique,0
55+
.long foo
56+
.section .cst4,"aM",@progbits,4,unique,1
57+
.long foo

lld/test/ELF/merge-relocatable.s

Lines changed: 0 additions & 23 deletions
This file was deleted.

lld/test/ELF/merge-shared-str.s

Lines changed: 0 additions & 28 deletions
This file was deleted.

lld/test/ELF/merge-shared.s

Lines changed: 0 additions & 26 deletions
This file was deleted.

lld/test/ELF/merge-string.s

Lines changed: 0 additions & 105 deletions
This file was deleted.

0 commit comments

Comments
 (0)