1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
@ Tests that are supposed to fail during encoding
@ for LDR group relocations.
.text
.macro ldrtest load store sym offset
\load r0, [r0, #:pc_g0:(\sym \offset)]
\load r0, [r0, #:pc_g1:(\sym \offset)]
\load r0, [r0, #:pc_g2:(\sym \offset)]
\load r0, [r0, #:sb_g0:(\sym \offset)]
\load r0, [r0, #:sb_g1:(\sym \offset)]
\load r0, [r0, #:sb_g2:(\sym \offset)]
\store r0, [r0, #:pc_g0:(\sym \offset)]
\store r0, [r0, #:pc_g1:(\sym \offset)]
\store r0, [r0, #:pc_g2:(\sym \offset)]
\store r0, [r0, #:sb_g0:(\sym \offset)]
\store r0, [r0, #:sb_g1:(\sym \offset)]
\store r0, [r0, #:sb_g2:(\sym \offset)]
.endm
@ LDR/STR/LDRB/STRB only have 12 bits available for the magnitude of the addend.
@ So these should all fail.
ldrtest ldr str f "+ 4096"
ldrtest ldrb strb f "+ 4096"
ldrtest ldr str f "- 4096"
ldrtest ldrb strb f "- 4096"
ldrtest ldr str localsym "+ 4096"
ldrtest ldrb strb localsym "+ 4096"
ldrtest ldr str localsym "- 4096"
ldrtest ldrb strb localsym "- 4096"
localsym:
mov r0, #0
|