xref: /llvm-project/lld/test/ELF/arm-plt-reloc.s (revision 9ea44c6894270546d6d88ef0d3abcf1e1876acae)
1// REQUIRES: arm
2// RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %p/Inputs/arm-plt-reloc.s -o %t1
3// RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %s -o %t2
4// RUN: ld.lld %t1 %t2 -o %t
5// RUN: llvm-objdump --no-print-imm-hex --triple=armv7a-none-linux-gnueabi -d --no-show-raw-insn %t | FileCheck %s
6// RUN: ld.lld -shared %t1 %t2 -o %t3
7// RUN: llvm-objdump --no-print-imm-hex --triple=armv7a-none-linux-gnueabi -d --no-show-raw-insn %t3 | FileCheck --check-prefix=DSO %s
8// RUN: llvm-readobj -S -r %t3 | FileCheck -check-prefix=DSOREL %s
9
10// RUN: llvm-mc -filetype=obj -triple=armv7aeb-none-linux-gnueabi %p/Inputs/arm-plt-reloc.s -o %t1.be
11// RUN: llvm-mc -filetype=obj -triple=armv7aeb-none-linux-gnueabi %s -o %t2.be
12// RUN: ld.lld %t1.be %t2.be -o %t.be
13// RUN: llvm-objdump --no-print-imm-hex --triple=armv7aeb-none-linux-gnueabi -d --no-show-raw-insn %t.be | FileCheck %s
14// RUN: ld.lld -shared %t1.be %t2.be -o %t3.be
15// RUN: llvm-objdump --no-print-imm-hex --triple=armv7aeb-none-linux-gnueabi -d --no-show-raw-insn %t3.be | FileCheck --check-prefix=DSO %s
16// RUN: llvm-readobj -S -r %t3.be | FileCheck -check-prefix=DSOREL %s
17
18// RUN: ld.lld --be8 %t1.be %t2.be -o %t.be
19// RUN: llvm-objdump --no-print-imm-hex --triple=armv7aeb-none-linux-gnueabi -d --no-show-raw-insn %t.be | FileCheck %s
20// RUN: ld.lld --be8 -shared %t1.be %t2.be -o %t3.be
21// RUN: llvm-objdump --no-print-imm-hex --triple=armv7aeb-none-linux-gnueabi -d --no-show-raw-insn %t3.be | FileCheck --check-prefix=DSO %s
22// RUN: llvm-readobj -S -r %t3.be | FileCheck -check-prefix=DSOREL %s
23//
24// Test PLT entry generation
25 .syntax unified
26 .text
27 .align 2
28 .globl _start
29 .type  _start,%function
30_start:
31 b func1
32 bl func2
33 beq func3
34
35// Executable, expect no PLT
36// CHECK: Disassembly of section .text:
37// CHECK-EMPTY:
38// CHECK-NEXT: <func1>:
39// CHECK-NEXT:   200b4:       bx      lr
40// CHECK: <func2>:
41// CHECK-NEXT:   200b8:       bx      lr
42// CHECK: <func3>:
43// CHECK-NEXT:   200bc:       bx      lr
44// CHECK: <_start>:
45// CHECK-NEXT:   200c0:       b       0x200b4 <func1>
46// CHECK-NEXT:   200c4:       bl      0x200b8 <func2>
47// CHECK-NEXT:   200c8:       beq     0x200bc <func3>
48
49// Expect PLT entries as symbols can be preempted
50// The .got.plt and .plt displacement is small so we can use small PLT entries.
51// DSO: Disassembly of section .text:
52// DSO-EMPTY:
53// DSO-NEXT: <func1>:
54// DSO-NEXT:     10214:       bx      lr
55// DSO: <func2>:
56// DSO-NEXT:     10218:       bx      lr
57// DSO: <func3>:
58// DSO-NEXT:     1021c:       bx      lr
59// DSO: <_start>:
60// DSO-NEXT:     10220:       b       0x10250
61// DSO-NEXT:     10224:       bl      0x10260
62// DSO-NEXT:     10228:       beq     0x10270
63// DSO-EMPTY:
64// DSO-NEXT: Disassembly of section .plt:
65// DSO-EMPTY:
66// DSO-NEXT: <.plt>:
67// DSO-NEXT:     10230:       str     lr, [sp, #-4]!
68// (0x10234 + 8) + (0 RoR 12) + (32 RoR 20 = 0x20000) + 164 = 0x302e0 = .got.plt[2]
69// DSO-NEXT:     10234:       add     lr, pc, #0, #12
70// DSO-NEXT:     10238:       add     lr, lr, #32, #20
71// DSO-NEXT:     1023c:       ldr     pc, [lr, #164]!
72// DSO-NEXT:     10240:       d4 d4 d4 d4     .word   0xd4d4d4d4
73// DSO-NEXT:     10244:       d4 d4 d4 d4     .word   0xd4d4d4d4
74// DSO-NEXT:     10248:       d4 d4 d4 d4     .word   0xd4d4d4d4
75// DSO-NEXT:     1024c:       d4 d4 d4 d4     .word   0xd4d4d4d4
76// (0x10250 + 8) + (0 RoR 12) + (32 RoR 20 = 0x20000) + 140 = 0x302e4
77// DSO-NEXT:     10250:       add     r12, pc, #0, #12
78// DSO-NEXT:     10254:       add     r12, r12, #32, #20
79// DSO-NEXT:     10258:       ldr     pc, [r12, #140]!
80// DSO-NEXT:     1025c:       d4 d4 d4 d4     .word   0xd4d4d4d4
81// (0x10260 + 8) + (0 RoR 12) + (32 RoR 20 = 0x20000) + 128 = 0x302e8
82// DSO-NEXT:     10260:       add     r12, pc, #0, #12
83// DSO-NEXT:     10264:       add     r12, r12, #32, #20
84// DSO-NEXT:     10268:       ldr     pc, [r12, #128]!
85// DSO-NEXT:     1026c:       d4 d4 d4 d4     .word   0xd4d4d4d4
86// (0x10270 + 8) + (0 RoR 12) + (32 RoR 20 = 0x20000) + 116 = 0x302ec
87// DSO-NEXT:     10270:       add     r12, pc, #0, #12
88// DSO-NEXT:     10274:       add     r12, r12, #32, #20
89// DSO-NEXT:     10278:       ldr     pc, [r12, #116]!
90// DSO-NEXT:     1027c:       d4 d4 d4 d4     .word   0xd4d4d4d4
91
92
93// DSOREL:    Name: .got.plt
94// DSOREL-NEXT:    Type: SHT_PROGBITS
95// DSOREL-NEXT:    Flags [
96// DSOREL-NEXT:      SHF_ALLOC
97// DSOREL-NEXT:      SHF_WRITE
98// DSOREL-NEXT:    ]
99// DSOREL-NEXT:    Address: 0x302D8
100// DSOREL-NEXT:    Offset:
101// DSOREL-NEXT:    Size: 24
102// DSOREL-NEXT:    Link:
103// DSOREL-NEXT:    Info:
104// DSOREL-NEXT:    AddressAlignment: 4
105// DSOREL-NEXT:    EntrySize:
106// DSOREL:  Relocations [
107// DSOREL-NEXT:  Section {{.*}} .rel.plt {
108// DSOREL-NEXT:    0x302E4 R_ARM_JUMP_SLOT func1
109// DSOREL-NEXT:    0x302E8 R_ARM_JUMP_SLOT func2
110// DSOREL-NEXT:    0x302EC R_ARM_JUMP_SLOT func3
111
112// Test a large separation between the .plt and .got.plt
113// The .got.plt and .plt displacement is large but still within the range
114// of the short plt sequence.
115// RUN: echo "SECTIONS { \
116// RUN:       .text 0x1000 : { *(.text) } \
117// RUN:       .plt  0x2000 : { *(.plt) *(.plt.*) } \
118// RUN:       .got.plt 0x1100000 : { *(.got.plt) } \
119// RUN:       }" > %t.script
120// RUN: ld.lld --hash-style=sysv --script %t.script -shared %t1 %t2 -o %t4
121// RUN: llvm-objdump --no-print-imm-hex --triple=armv7a-none-linux-gnueabi -d --no-show-raw-insn %t4 | FileCheck --check-prefix=CHECKHIGH %s
122// RUN: llvm-readobj -S -r %t4 | FileCheck --check-prefix=DSORELHIGH %s
123
124// RUN: ld.lld --hash-style=sysv --script %t.script -shared %t1.be %t2.be -o %t4.be
125// RUN: llvm-objdump --no-print-imm-hex --triple=armv7aeb-none-linux-gnueabi -d --no-show-raw-insn %t4.be | FileCheck --check-prefix=CHECKHIGH %s
126// RUN: llvm-readobj -S -r %t4.be | FileCheck --check-prefix=DSORELHIGH %s
127// RUN: ld.lld --be8 --hash-style=sysv --script %t.script -shared %t1.be %t2.be -o %t4.be
128// RUN: llvm-objdump --no-print-imm-hex --triple=armv7aeb-none-linux-gnueabi -d --no-show-raw-insn %t4.be | FileCheck --check-prefix=CHECKHIGH %s
129// RUN: llvm-readobj -S -r %t4.be | FileCheck --check-prefix=DSORELHIGH %s
130
131// CHECKHIGH: Disassembly of section .text:
132// CHECKHIGH-EMPTY:
133// CHECKHIGH-NEXT: <func1>:
134// CHECKHIGH-NEXT:     1000:       bx      lr
135// CHECKHIGH: <func2>:
136// CHECKHIGH-NEXT:     1004:       bx      lr
137// CHECKHIGH: <func3>:
138// CHECKHIGH-NEXT:     1008:       bx      lr
139// CHECKHIGH: <_start>:
140// CHECKHIGH-NEXT:     100c:       b       0x2020
141// CHECKHIGH-NEXT:     1010:       bl      0x2030
142// CHECKHIGH-NEXT:     1014:       beq     0x2040
143// CHECKHIGH-EMPTY:
144// CHECKHIGH-NEXT: Disassembly of section .plt:
145// CHECKHIGH-EMPTY:
146// CHECKHIGH-NEXT: <.plt>:
147// CHECKHIGH-NEXT:     2000:       str     lr, [sp, #-4]!
148// CHECKHIGH-NEXT:     2004:       add     lr, pc, #16, #12
149// CHECKHIGH-NEXT:     2008:       add     lr, lr, #1036288
150// CHECKHIGH-NEXT:     200c:       ldr     pc, [lr, #4092]!
151// CHECKHIGH-NEXT:     2010:       d4 d4 d4 d4     .word   0xd4d4d4d4
152// CHECKHIGH-NEXT:     2014:       d4 d4 d4 d4     .word   0xd4d4d4d4
153// CHECKHIGH-NEXT:     2018:       d4 d4 d4 d4     .word   0xd4d4d4d4
154// CHECKHIGH-NEXT:     201c:       d4 d4 d4 d4     .word   0xd4d4d4d4
155// CHECKHIGH-NEXT:     2020:       add     r12, pc, #16, #12
156// CHECKHIGH-NEXT:     2024:       add     r12, r12, #1036288
157// CHECKHIGH-NEXT:     2028:       ldr     pc, [r12, #4068]!
158// CHECKHIGH-NEXT:     202c:       d4 d4 d4 d4     .word   0xd4d4d4d4
159// CHECKHIGH-NEXT:     2030:       add     r12, pc, #16, #12
160// CHECKHIGH-NEXT:     2034:       add     r12, r12, #1036288
161// CHECKHIGH-NEXT:     2038:       ldr     pc, [r12, #4056]!
162// CHECKHIGH-NEXT:     203c:       d4 d4 d4 d4     .word   0xd4d4d4d4
163// CHECKHIGH-NEXT:     2040:       add     r12, pc, #16, #12
164// CHECKHIGH-NEXT:     2044:       add     r12, r12, #1036288
165// CHECKHIGH-NEXT:     2048:       ldr     pc, [r12, #4044]!
166// CHECKHIGH-NEXT:     204c:       d4 d4 d4 d4     .word   0xd4d4d4d4
167
168// DSORELHIGH:     Name: .got.plt
169// DSORELHIGH-NEXT:     Type: SHT_PROGBITS
170// DSORELHIGH-NEXT:     Flags [
171// DSORELHIGH-NEXT:       SHF_ALLOC
172// DSORELHIGH-NEXT:       SHF_WRITE
173// DSORELHIGH-NEXT:     ]
174// DSORELHIGH-NEXT:     Address: 0x1100000
175// DSORELHIGH: Relocations [
176// DSORELHIGH-NEXT:   Section {{.*}} .rel.plt {
177// DSORELHIGH-NEXT:     0x110000C R_ARM_JUMP_SLOT func1
178// DSORELHIGH-NEXT:     0x1100010 R_ARM_JUMP_SLOT func2
179// DSORELHIGH-NEXT:     0x1100014 R_ARM_JUMP_SLOT func3
180
181// Test a very large separation between the .plt and .got.plt so we must use
182// large plt entries that do not have any range restriction.
183// RUN: echo "SECTIONS { \
184// RUN:       .text 0x1000 : { *(.text) } \
185// RUN:       .plt  0x2000 : { *(.plt) *(.plt.*) } \
186// RUN:       .got.plt 0x11111100 : { *(.got.plt) } \
187// RUN:       }" > %t2.script
188// RUN: ld.lld --hash-style=sysv --script %t2.script -shared %t1 %t2 -o %t5
189// RUN: llvm-objdump --no-print-imm-hex --triple=armv7a-none-linux-gnueabi -d --no-show-raw-insn %t5 | FileCheck --check-prefix=CHECKLONG %s
190// RUN: llvm-readobj -S -r %t5 | FileCheck --check-prefix=DSORELLONG %s
191
192// RUN: ld.lld --hash-style=sysv --script %t2.script -shared %t1.be %t2.be -o %t5.be
193// RUN: llvm-objdump --no-print-imm-hex --triple=armv7aeb-none-linux-gnueabi -d --no-show-raw-insn %t5.be | FileCheck --check-prefix=CHECKLONG-EB %s
194// RUN: llvm-readobj -S -r %t5.be | FileCheck --check-prefix=DSORELLONG %s
195// RUN: ld.lld --be8 --hash-style=sysv --script %t2.script -shared %t1.be %t2.be -o %t5.be
196// RUN: llvm-objdump --no-print-imm-hex --triple=armv7aeb-none-linux-gnueabi -d --no-show-raw-insn %t5.be | FileCheck --check-prefix=CHECKLONG-EB %s
197// RUN: llvm-readobj -S -r %t5.be | FileCheck --check-prefix=DSORELLONG %s
198
199// CHECKLONG: Disassembly of section .text:
200// CHECKLONG-EMPTY:
201// CHECKLONG-NEXT: <func1>:
202// CHECKLONG-NEXT:     1000:       bx      lr
203// CHECKLONG: <func2>:
204// CHECKLONG-NEXT:     1004:       bx      lr
205// CHECKLONG: <func3>:
206// CHECKLONG-NEXT:     1008:       bx      lr
207// CHECKLONG: <_start>:
208// CHECKLONG-NEXT:     100c:       b       0x2020
209// CHECKLONG-NEXT:     1010:       bl      0x2030
210// CHECKLONG-NEXT:     1014:       beq     0x2040
211// CHECKLONG-EMPTY:
212// CHECKLONG-NEXT: Disassembly of section .plt:
213// CHECKLONG-EMPTY:
214// CHECKLONG-NEXT: <.plt>:
215// CHECKLONG-NEXT:     2000:       str     lr, [sp, #-4]!
216// CHECKLONG-NEXT:     2004:       ldr     lr, [pc, #4]
217// CHECKLONG-NEXT:     2008:       add     lr, pc, lr
218// CHECKLONG-NEXT:     200c:       ldr     pc, [lr, #8]!
219// CHECKLONG-NEXT:     2010:       f0 f0 10 11     .word   0x1110f0f0
220// CHECKLONG-NEXT:     2014:       d4 d4 d4 d4     .word   0xd4d4d4d4
221// CHECKLONG-NEXT:     2018:       d4 d4 d4 d4     .word   0xd4d4d4d4
222// CHECKLONG-NEXT:     201c:       d4 d4 d4 d4     .word   0xd4d4d4d4
223// CHECKLONG-NEXT:     2020:       ldr     r12, [pc, #4]
224// CHECKLONG-NEXT:     2024:       add     r12, r12, pc
225// CHECKLONG-NEXT:     2028:       ldr     pc, [r12]
226// CHECKLONG-NEXT:     202c:       e0 f0 10 11     .word   0x1110f0e0
227// CHECKLONG-NEXT:     2030:       ldr     r12, [pc, #4]
228// CHECKLONG-NEXT:     2034:       add     r12, r12, pc
229// CHECKLONG-NEXT:     2038:       ldr     pc, [r12]
230// CHECKLONG-NEXT:     203c:       d4 f0 10 11     .word   0x1110f0d4
231// CHECKLONG-NEXT:     2040:       ldr     r12, [pc, #4]
232// CHECKLONG-NEXT:     2044:       add     r12, r12, pc
233// CHECKLONG-NEXT:     2048:       ldr     pc, [r12]
234// CHECKLONG-NEXT:     204c:       c8 f0 10 11     .word   0x1110f0c8
235
236// CHECKLONG-EB: Disassembly of section .text:
237// CHECKLONG-EB-EMPTY:
238// CHECKLONG-EB-NEXT: <func1>:
239// CHECKLONG-EB-NEXT:     1000:       bx      lr
240// CHECKLONG-EB: <func2>:
241// CHECKLONG-EB-NEXT:                 bx      lr
242// CHECKLONG-EB: <func3>:
243// CHECKLONG-EB-NEXT:                 bx      lr
244// CHECKLONG-EB: <_start>:
245// CHECKLONG-EB-NEXT:                 b       0x2020
246// CHECKLONG-EB-NEXT:                 bl      0x2030
247// CHECKLONG-EB-NEXT:                 beq     0x2040
248// CHECKLONG-EB-EMPTY:
249// CHECKLONG-EB-NEXT: Disassembly of section .plt:
250// CHECKLONG-EB-EMPTY:
251// CHECKLONG-EB-NEXT: <.plt>:
252// CHECKLONG-EB-NEXT:     2000:       str     lr, [sp, #-4]!
253// CHECKLONG-EB-NEXT:                 ldr     lr, [pc, #4]
254// CHECKLONG-EB-NEXT:                 add     lr, pc, lr
255// CHECKLONG-EB-NEXT:                 ldr     pc, [lr, #8]!
256// CHECKLONG-EB-NEXT:                 11 10 f0 f0     .word   0x1110f0f0
257// CHECKLONG-EB-NEXT:                 d4 d4 d4 d4     .word   0xd4d4d4d4
258// CHECKLONG-EB-NEXT:                 d4 d4 d4 d4     .word   0xd4d4d4d4
259// CHECKLONG-EB-NEXT:                 d4 d4 d4 d4     .word   0xd4d4d4d4
260// CHECKLONG-EB-NEXT:     2020:       ldr     r12, [pc, #4]
261// CHECKLONG-EB-NEXT:                 add     r12, r12, pc
262// CHECKLONG-EB-NEXT:                 ldr     pc, [r12]
263// CHECKLONG-EB-NEXT:                 11 10 f0 e0     .word   0x1110f0e0
264// CHECKLONG-EB-NEXT:     2030:       ldr     r12, [pc, #4]
265// CHECKLONG-EB-NEXT:                 add     r12, r12, pc
266// CHECKLONG-EB-NEXT:                 ldr     pc, [r12]
267// CHECKLONG-EB-NEXT:                 11 10 f0 d4     .word   0x1110f0d4
268// CHECKLONG-EB-NEXT:     2040:       ldr     r12, [pc, #4]
269// CHECKLONG-EB-NEXT:                 add     r12, r12, pc
270// CHECKLONG-EB-NEXT:                 ldr     pc, [r12]
271// CHECKLONG-EB-NEXT:                11 10 f0 c8     .word   0x1110f0c8
272
273// DSORELLONG: Name: .got.plt
274// DSORELLONG-NEXT:     Type: SHT_PROGBITS
275// DSORELLONG-NEXT:     Flags [
276// DSORELLONG-NEXT:       SHF_ALLOC
277// DSORELLONG-NEXT:       SHF_WRITE
278// DSORELLONG-NEXT:     ]
279// DSORELLONG-NEXT:     Address: 0x11111100
280// DSORELLONG: Relocations [
281// DSORELLONG-NEXT:   Section {{.*}} .rel.plt {
282// DSORELLONG-NEXT:     0x1111110C R_ARM_JUMP_SLOT func1
283// DSORELLONG-NEXT:     0x11111110 R_ARM_JUMP_SLOT func2
284// DSORELLONG-NEXT:     0x11111114 R_ARM_JUMP_SLOT func3
285
286// Test a separation between the .plt and .got.plt that is part in range of
287// short table entries and part needing long entries. We use the long entries
288// only when we need to.
289// RUN: echo "SECTIONS { \
290// RUN:       .text 0x1000 : { *(.text) } \
291// RUN:       .plt  0x2000 : { *(.plt) *(.plt.*) } \
292// RUN:       .got.plt 0x8002020 : { *(.got.plt) } \
293// RUN:       }" > %t3.script
294// RUN: ld.lld --hash-style=sysv --script %t3.script -shared %t1 %t2 -o %t6
295// RUN: llvm-objdump --no-print-imm-hex --triple=armv7a-none-linux-gnueabi -d --no-show-raw-insn %t6 | FileCheck --check-prefix=CHECKMIX %s
296// RUN: llvm-readobj -S -r %t6 | FileCheck --check-prefix=DSORELMIX %s
297
298// RUN: ld.lld --hash-style=sysv --script %t3.script -shared %t1.be %t2.be -o %t6.be
299// RUN: llvm-objdump --no-print-imm-hex --triple=armv7aeb-none-linux-gnueabi -d --no-show-raw-insn %t6.be | FileCheck --check-prefix=CHECKMIX-EB %s
300// RUN: llvm-readobj -S -r %t6.be | FileCheck --check-prefix=DSORELMIX %s
301// RUN: ld.lld --be8 --hash-style=sysv --script %t3.script -shared %t1.be %t2.be -o %t6.be
302// RUN: llvm-objdump --no-print-imm-hex --triple=armv7a-none-linux-gnueabi -d --no-show-raw-insn %t6.be | FileCheck --check-prefix=CHECKMIX-EB %s
303// RUN: llvm-readobj -S -r %t6.be | FileCheck --check-prefix=DSORELMIX %s
304
305// CHECKMIX: Disassembly of section .text:
306// CHECKMIX-EMPTY:
307// CHECKMIX-NEXT: <func1>:
308// CHECKMIX-NEXT:     1000:       bx      lr
309// CHECKMIX: <func2>:
310// CHECKMIX-NEXT:     1004:       bx      lr
311// CHECKMIX: <func3>:
312// CHECKMIX-NEXT:     1008:       bx      lr
313// CHECKMIX: <_start>:
314// CHECKMIX-NEXT:     100c:       b       0x2020
315// CHECKMIX-NEXT:     1010:       bl      0x2030
316// CHECKMIX-NEXT:     1014:       beq     0x2040
317// CHECKMIX-EMPTY:
318// CHECKMIX-NEXT: Disassembly of section .plt:
319// CHECKMIX-EMPTY:
320// CHECKMIX-NEXT: <.plt>:
321// CHECKMIX-NEXT:     2000:       str     lr, [sp, #-4]!
322// CHECKMIX-NEXT:     2004:       ldr     lr, [pc, #4]
323// CHECKMIX-NEXT:     2008:       add     lr, pc, lr
324// CHECKMIX-NEXT:     200c:       ldr     pc, [lr, #8]!
325// CHECKMIX-NEXT:     2010:     10 00 00 08     .word   0x08000010
326// CHECKMIX-NEXT:     2014:     d4 d4 d4 d4     .word   0xd4d4d4d4
327// CHECKMIX-NEXT:     2018:     d4 d4 d4 d4     .word   0xd4d4d4d4
328// CHECKMIX-NEXT:     201c:     d4 d4 d4 d4     .word   0xd4d4d4d4
329// CHECKMIX-NEXT:     2020:       ldr     r12, [pc, #4]
330// CHECKMIX-NEXT:     2024:       add     r12, r12, pc
331// CHECKMIX-NEXT:     2028:       ldr     pc, [r12]
332// CHECKMIX-NEXT:     202c:     00 00 00 08     .word   0x08000000
333// CHECKMIX-NEXT:     2030:       add     r12, pc, #133169152
334// CHECKMIX-NEXT:     2034:       add     r12, r12, #1044480
335// CHECKMIX-NEXT:     2038:       ldr     pc, [r12, #4088]!
336// CHECKMIX-NEXT:     203c:     d4 d4 d4 d4     .word   0xd4d4d4d4
337// CHECKMIX-NEXT:     2040:       add     r12, pc, #133169152
338// CHECKMIX-NEXT:     2044:       add     r12, r12, #1044480
339// CHECKMIX-NEXT:     2048:       ldr     pc, [r12, #4076]!
340// CHECKMIX-NEXT:     204c:     d4 d4 d4 d4     .word   0xd4d4d4d4
341
342// CHECKMIX-EB: Disassembly of section .text:
343// CHECKMIX-EB-EMPTY:
344// CHECKMIX-EB-NEXT: <func1>:
345// CHECKMIX-EB-NEXT:     1000:       bx      lr
346// CHECKMIX-EB: <func2>:
347// CHECKMIX-EB-NEXT:                 bx      lr
348// CHECKMIX-EB: <func3>:
349// CHECKMIX-EB-NEXT:                 bx      lr
350// CHECKMIX-EB: <_start>:
351// CHECKMIX-EB-NEXT:                 b       0x2020
352// CHECKMIX-EB-NEXT:                 bl      0x2030
353// CHECKMIX-EB-NEXT:                 beq     0x2040
354// CHECKMIX-EB-EMPTY:
355// CHECKMIX-EB-NEXT: Disassembly of section .plt:
356// CHECKMIX-EB-EMPTY:
357// CHECKMIX-EB-NEXT: <.plt>:
358// CHECKMIX-EB-NEXT:     2000:       str     lr, [sp, #-4]!
359// CHECKMIX-EB-NEXT:                 ldr     lr, [pc, #4]
360// CHECKMIX-EB-NEXT:                 add     lr, pc, lr
361// CHECKMIX-EB-NEXT:                 ldr     pc, [lr, #8]!
362// CHECKMIX-EB-NEXT:                 08 00 00 10     .word   0x08000010
363// CHECKMIX-EB-NEXT:                 d4 d4 d4 d4     .word   0xd4d4d4d4
364// CHECKMIX-EB-NEXT:                 d4 d4 d4 d4     .word   0xd4d4d4d4
365// CHECKMIX-EB-NEXT:                 d4 d4 d4 d4     .word   0xd4d4d4d4
366// CHECKMIX-EB-NEXT:     2020:       ldr     r12, [pc, #4]
367// CHECKMIX-EB-NEXT:                 add     r12, r12, pc
368// CHECKMIX-EB-NEXT:                 ldr     pc, [r12]
369// CHECKMIX-EB-NEXT:                 08 00 00 00     .word   0x08000000
370// CHECKMIX-EB-NEXT:     2030:       add     r12, pc, #133169152
371// CHECKMIX-EB-NEXT:                 add     r12, r12, #1044480
372// CHECKMIX-EB-NEXT:                 ldr     pc, [r12, #4088]!
373// CHECKMIX-EB-NEXT:                 d4 d4 d4 d4     .word   0xd4d4d4d4
374// CHECKMIX-EB-NEXT:     2040:       add     r12, pc, #133169152
375// CHECKMIX-EB-NEXT:                 add     r12, r12, #1044480
376// CHECKMIX-EB-NEXT:                 ldr     pc, [r12, #4076]!
377// CHECKMIX-EB-NEXT:                 d4 d4 d4 d4     .word   0xd4d4d4d4
378
379// DSORELMIX:    Name: .got.plt
380// DSORELMIX-NEXT:     Type: SHT_PROGBITS
381// DSORELMIX-NEXT:     Flags [
382// DSORELMIX-NEXT:       SHF_ALLOC
383// DSORELMIX-NEXT:       SHF_WRITE
384// DSORELMIX-NEXT:     ]
385// DSORELMIX-NEXT:     Address: 0x8002020
386// DSORELMIX:   Section {{.*}} .rel.plt {
387// DSORELMIX-NEXT:     0x800202C R_ARM_JUMP_SLOT func1
388// DSORELMIX-NEXT:     0x8002030 R_ARM_JUMP_SLOT func2
389// DSORELMIX-NEXT:     0x8002034 R_ARM_JUMP_SLOT func3
390
391