xref: /aosp_15_r20/external/llvm/test/MC/MachO/AArch64/darwin-ARM64-reloc.s (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llvm-mc -n -triple arm64-apple-darwin10 %s -filetype=obj -o - | llvm-readobj -r --expand-relocs | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker	.text
4*9880d681SAndroid Build Coastguard Worker_fred:
5*9880d681SAndroid Build Coastguard Worker	bl	_func
6*9880d681SAndroid Build Coastguard Worker	bl	_func + 20
7*9880d681SAndroid Build Coastguard Worker
8*9880d681SAndroid Build Coastguard Worker	adrp	x3, _data@page
9*9880d681SAndroid Build Coastguard Worker        ldr	w2, [x3, _data@pageoff]
10*9880d681SAndroid Build Coastguard Worker
11*9880d681SAndroid Build Coastguard Worker        add	x3, x3, _data@pageoff + 4
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Worker	adrp	x3, _data@page+1
14*9880d681SAndroid Build Coastguard Worker        ldr	w2, [x3, _data@pageoff + 4]
15*9880d681SAndroid Build Coastguard Worker
16*9880d681SAndroid Build Coastguard Worker	adrp	x3, _data_ext@gotpage
17*9880d681SAndroid Build Coastguard Worker        ldr	w2, [x3, _data_ext@gotpageoff]
18*9880d681SAndroid Build Coastguard Worker        adrp    x0, L_.str@PAGE
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard Worker	.data
21*9880d681SAndroid Build Coastguard Worker_data:
22*9880d681SAndroid Build Coastguard Worker        .quad _foo
23*9880d681SAndroid Build Coastguard Worker        .quad _foo + 4
24*9880d681SAndroid Build Coastguard Worker        .quad _foo - _bar
25*9880d681SAndroid Build Coastguard Worker        .quad _foo - _bar + 4
26*9880d681SAndroid Build Coastguard Worker
27*9880d681SAndroid Build Coastguard Worker        .long _foo - _bar
28*9880d681SAndroid Build Coastguard Worker
29*9880d681SAndroid Build Coastguard Worker        .quad _foo@got
30*9880d681SAndroid Build Coastguard Worker        .long _foo@got - .
31*9880d681SAndroid Build Coastguard Worker
32*9880d681SAndroid Build Coastguard Worker        .section __TEXT,__cstring,cstring_literals
33*9880d681SAndroid Build Coastguard WorkerL_.str:
34*9880d681SAndroid Build Coastguard Worker        .asciz "foo"
35*9880d681SAndroid Build Coastguard Worker
36*9880d681SAndroid Build Coastguard Worker
37*9880d681SAndroid Build Coastguard Worker; CHECK:     Relocations [
38*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  Section __text {
39*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    Relocation {
40*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Offset: 0x24
41*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       PCRel: 1
42*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Length: 2
43*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Type: ARM64_RELOC_PAGE21 (3)
44*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Symbol: L_.str
45*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     }
46*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    Relocation {
47*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Offset: 0x20
48*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       PCRel: 0
49*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Length: 2
50*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Type: ARM64_RELOC_GOT_LOAD_PAGEOFF12 (6)
51*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Symbol: _data_ext
52*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     }
53*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     Relocation {
54*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Offset: 0x1C
55*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       PCRel: 1
56*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Length: 2
57*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Type: ARM64_RELOC_GOT_LOAD_PAGE21 (5)
58*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Symbol: _data_ext
59*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     }
60*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     Relocation {
61*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Offset: 0x18
62*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       PCRel: 0
63*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Length: 2
64*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Type: ARM64_RELOC_ADDEND (10)
65*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Section: - (4)
66*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     }
67*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     Relocation {
68*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Offset: 0x18
69*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       PCRel: 0
70*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Length: 2
71*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Type: ARM64_RELOC_PAGEOFF12 (4)
72*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Symbol: _data
73*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     }
74*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     Relocation {
75*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Offset: 0x14
76*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       PCRel: 0
77*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Length: 2
78*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Type: ARM64_RELOC_ADDEND (10)
79*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Section: __text
80*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     }
81*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     Relocation {
82*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Offset: 0x14
83*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       PCRel: 1
84*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Length: 2
85*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Type: ARM64_RELOC_PAGE21 (3)
86*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Symbol: _data
87*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     }
88*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     Relocation {
89*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Offset: 0x10
90*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       PCRel: 0
91*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Length: 2
92*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Type: ARM64_RELOC_ADDEND (10)
93*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Section: - (4)
94*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     }
95*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     Relocation {
96*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Offset: 0x10
97*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       PCRel: 0
98*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Length: 2
99*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Type: ARM64_RELOC_PAGEOFF12 (4)
100*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Symbol: _data
101*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     }
102*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     Relocation {
103*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Offset: 0xC
104*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       PCRel: 0
105*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Length: 2
106*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Type: ARM64_RELOC_PAGEOFF12 (4)
107*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Symbol: _data
108*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     }
109*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     Relocation {
110*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Offset: 0x8
111*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       PCRel: 1
112*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Length: 2
113*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Type: ARM64_RELOC_PAGE21 (3)
114*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Symbol: _data
115*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     }
116*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     Relocation {
117*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Offset: 0x4
118*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       PCRel: 0
119*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Length: 2
120*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Type: ARM64_RELOC_ADDEND (10)
121*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Section: - (20)
122*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     }
123*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     Relocation {
124*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Offset: 0x4
125*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       PCRel: 1
126*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Length: 2
127*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Type: ARM64_RELOC_BRANCH26 (2)
128*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Symbol: _func
129*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     }
130*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     Relocation {
131*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Offset: 0x0
132*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       PCRel: 1
133*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Length: 2
134*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Type: ARM64_RELOC_BRANCH26 (2)
135*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Symbol: _func
136*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     }
137*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   }
138*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   Section __data {
139*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     Relocation {
140*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Offset: 0x2C
141*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       PCRel: 1
142*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Length: 2
143*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Type: ARM64_RELOC_POINTER_TO_GOT (7)
144*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Symbol: _foo
145*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     }
146*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     Relocation {
147*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Offset: 0x24
148*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       PCRel: 0
149*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Length: 3
150*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Type: ARM64_RELOC_POINTER_TO_GOT (7)
151*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Symbol: _foo
152*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     }
153*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     Relocation {
154*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Offset: 0x20
155*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       PCRel: 0
156*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Length: 2
157*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Type: ARM64_RELOC_SUBTRACTOR (1)
158*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Symbol: _bar
159*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     }
160*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     Relocation {
161*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Offset: 0x20
162*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       PCRel: 0
163*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Length: 2
164*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Type: ARM64_RELOC_UNSIGNED (0)
165*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Symbol: _foo
166*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     }
167*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     Relocation {
168*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Offset: 0x18
169*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       PCRel: 0
170*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Length: 3
171*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Type: ARM64_RELOC_SUBTRACTOR (1)
172*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Symbol: _bar
173*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     }
174*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     Relocation {
175*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Offset: 0x18
176*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       PCRel: 0
177*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Length: 3
178*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Type: ARM64_RELOC_UNSIGNED (0)
179*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Symbol: _foo
180*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     }
181*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     Relocation {
182*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Offset: 0x10
183*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       PCRel: 0
184*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Length: 3
185*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Type: ARM64_RELOC_SUBTRACTOR (1)
186*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Symbol: _bar
187*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     }
188*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     Relocation {
189*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Offset: 0x10
190*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       PCRel: 0
191*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Length: 3
192*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Type: ARM64_RELOC_UNSIGNED (0)
193*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Symbol: _foo
194*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     }
195*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     Relocation {
196*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Offset: 0x8
197*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       PCRel: 0
198*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Length: 3
199*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Type: ARM64_RELOC_UNSIGNED (0)
200*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Symbol: _foo
201*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     }
202*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     Relocation {
203*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Offset: 0x0
204*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       PCRel: 0
205*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Length: 3
206*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Type: ARM64_RELOC_UNSIGNED (0)
207*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:       Symbol: _foo
208*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:     }
209*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   }
210*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ]
211