[memprof] Remove an unused using directive (#117004)
[llvm-project.git] / lld / test / ELF / arm-plt-reloc.s
blobbfd51467e7425c735b0dc4335bd881f45dfd04b5
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
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
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
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
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>
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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