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
29 .type _start,%function
35 // Executable
, expect no PLT
36 // CHECK
: Disassembly of section
.text:
38 // CHECK-NEXT
: <func1
>:
39 // CHECK-NEXT
: 200b4
: bx
lr
41 // CHECK-NEXT
: 200b8
: bx
lr
43 // CHECK-NEXT
: 200bc: bx
lr
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:
54 // DSO-NEXT
: 10214: bx
lr
56 // DSO-NEXT
: 10218: bx
lr
58 // DSO-NEXT
: 1021c
: bx
lr
60 // DSO-NEXT
: 10220: b 0x10250
61 // DSO-NEXT
: 10224: bl 0x10260
62 // DSO-NEXT
: 10228: beq 0x10270
64 // DSO-NEXT
: Disassembly of section
.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
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:
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
144 // CHECKHIGH-NEXT
: Disassembly of section
.plt:
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:
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
212 // CHECKLONG-NEXT
: Disassembly of section
.plt:
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:
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
318 // CHECKMIX-NEXT
: Disassembly of section
.plt:
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
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