summaryrefslogtreecommitdiffstats
path: root/gas/testsuite/gas/arm/group-reloc-ldr.s
blob: 389042d70aff3abec0def8eb8c808f909197209c (plain)
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
40
41
@ Tests 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 (just) work.

	ldrtest ldr str f "+ 4095"
	ldrtest ldrb strb f "+ 4095"
	ldrtest ldr str f "- 4095"
	ldrtest ldrb strb f "- 4095"

@ The same as the above, but for a local symbol.  These should not be
@ resolved by the assembler but instead left to the linker.

	ldrtest ldr str localsym "+ 4095"
	ldrtest ldrb strb localsym "+ 4095"
	ldrtest ldr str localsym "- 4095"
	ldrtest ldrb strb localsym "- 4095"

localsym:
	mov	r0, #0

OpenPOWER on IntegriCloud