1@ Tests that are meant to fail during encoding of LDRS group relocations. 2 3 .text 4 5 .macro ldrtest2 load sym offset 6 7 \load r0, [r0, #:pc_g1:(\sym \offset)] 8 \load r0, [r0, #:pc_g2:(\sym \offset)] 9 \load r0, [r0, #:sb_g0:(\sym \offset)] 10 \load r0, [r0, #:sb_g1:(\sym \offset)] 11 \load r0, [r0, #:sb_g2:(\sym \offset)] 12 13 .endm 14 15 .macro ldrtest load store sym offset 16 17 ldrtest2 \load \sym \offset 18 19 \store r0, [r0, #:pc_g1:(\sym \offset)] 20 \store r0, [r0, #:pc_g2:(\sym \offset)] 21 \store r0, [r0, #:sb_g0:(\sym \offset)] 22 \store r0, [r0, #:sb_g1:(\sym \offset)] 23 \store r0, [r0, #:sb_g2:(\sym \offset)] 24 25 .endm 26 27@ LDRD/STRD/LDRH/STRH/LDRSH/LDRSB only have 8 bits available for the 28@ magnitude of the addend. So these should all (just) fail. 29 30 ldrtest ldrd strd f "+ 256" 31 ldrtest ldrh strh f "+ 256" 32 ldrtest2 ldrsh f "+ 256" 33 ldrtest2 ldrsb f "+ 256" 34 35 ldrtest ldrd strd f "- 256" 36 ldrtest ldrh strh f "- 256" 37 ldrtest2 ldrsh f "- 256" 38 ldrtest2 ldrsb f "- 256" 39 40@ The same as the above, but for a local symbol. 41 42 ldrtest ldrd strd localsym "+ 256" 43 ldrtest ldrh strh localsym "+ 256" 44 ldrtest2 ldrsh localsym "+ 256" 45 ldrtest2 ldrsb localsym "+ 256" 46 47 ldrtest ldrd strd localsym "- 256" 48 ldrtest ldrh strh localsym "- 256" 49 ldrtest2 ldrsh localsym "- 256" 50 ldrtest2 ldrsb localsym "- 256" 51 52localsym: 53 mov r0, #0 54 55