Upload Tizen:Base source
[external/binutils.git] / ld / testsuite / ld-sh / sh64 / shdl-1.s
1 ! Test inter-file DataLabel support.
2 !
3 ! We need to test symbols that are:
4 ! * Global, defined in this file, with/without/both-with-without datalabel
5 !   references.
6 ! * The above in combinations where the reference is/is not from within
7 !   the same section.  The implementation is currently indifferent to that
8 !   fact, but it seems likely to be something that can change.
9 ! * Extern with/without/both-with-without datalabel-qualified references.
10 ! * The above with reference from same *and* other file.
11 ! * The above in combinations for where the symbol is/is not a
12 !   STO_SH5_ISA32-marked symbol.
13
14 ! There will be omissions and overlap in combinations.  Add spotted
15 ! omissions with complementary tests in other files.
16
17         .text
18         .mode SHmedia
19
20 ! For good measure, we start with a nop to get a non-zero offset within
21 ! the .text section.
22
23         .global start
24 start:
25         nop
26
27 ! Referenced from the same file, same section, is ISA32, only referenced
28 ! with datalabel qualifier.
29         .global foo
30 foo:
31         nop
32         movi (datalabel foo + 8) & 65535,r30
33
34 ! Referenced from same file, same section, both with and without
35 ! datalabel qualifier, is ISA32.
36         .global fooboth
37 fooboth:
38         nop
39         movi (datalabel fooboth + 16) & 65535,r40
40         movi (fooboth + 12) & 65535,r40
41
42 ! Same as above, but in different order.
43         .global fooboth2
44 fooboth2:
45         nop
46         movi (fooboth2 + 12) & 65535,r40
47         movi (datalabel fooboth2 + 16) & 65535,r40
48
49 ! Referenced from this file and another, same section, is ISA32.
50         .global foowithout
51 foowithout:
52         nop
53         movi (foowithout + 24) & 65535,r30
54
55 ! Same as above, different section than definition.
56
57         .global foo_other
58 foo_other:
59         nop
60         .global foo_otherboth
61 foo_otherboth:
62         nop
63         .global foo_otherboth2
64 foo_otherboth2:
65         nop
66         .global foo_otherwithout
67 foo_otherwithout:
68         nop
69
70         .section .rodata
71         .long datalabel foo_other + 4
72         .long datalabel foo_otherboth + 40
73         .long foo_otherboth + 24
74         .long foo_otherboth2 + 24
75         .long datalabel foo_otherboth2 + 40
76         .long foo_otherwithout
77
78         .text
79
80 ! Same as above, mixing references from same and other section.
81         .global foo_mix
82 foo_mix:
83         nop
84         movi (datalabel foo_mix + 8) & 65535,r30
85         .global foo_mix2
86 foo_mix2:
87         nop
88         movi (foo_mix2 + 8) & 65535,r30
89         .global foo_mixboth
90 foo_mixboth:
91         nop
92         movi (datalabel foo_mixboth + 80) & 65535,r30
93         movi (foo_mixboth + 80) & 65535,r30
94         .global foo_mixboth2
95 foo_mixboth2:
96         nop
97         movi (foo_mixboth2 + 64) & 65535,r30
98         movi (datalabel foo_mixboth2 + 64) & 65535,r30
99         .global foo_mixwithout
100 foo_mixwithout:
101         nop
102         movi (foo_mixwithout + 42) & 65535,r30
103         .global foo_mixwithout2
104 foo_mixwithout2:
105         nop
106         movi (foo_mixwithout2 + 24) & 65535,r30
107
108         .section .rodata
109         .long foo_mix + 4
110         .long datalabel foo_mix2 + 48
111         .long datalabel foo_mixboth + 400
112         .long foo_mixboth + 420
113         .long foo_mixboth2 + 248
114         .long datalabel foo_mixboth2 + 240
115         .long foo_mixwithout
116
117 ! Same as above, referencing symbol in other file (reference only from
118 ! this to other file).
119
120         .text
121         nop
122         movi (datalabel bar + 8) & 65535,r30
123
124         movi (datalabel barboth + 16) & 65535,r40
125         movi (barboth + 12) & 65535,r40
126
127         movi (barboth2 + 12) & 65535,r40
128         movi (datalabel barboth2 + 16) & 65535,r40
129
130         movi (barwithout + 24) & 65535,r30
131
132         .section .rodata
133         .long datalabel bar_other + 4
134         .long datalabel bar_otherboth + 40
135         .long bar_otherboth + 24
136         .long bar_otherboth2 + 24
137         .long datalabel bar_otherboth2 + 40
138         .long bar_otherwithout
139
140         .text
141         movi (datalabel bar_mix + 8) & 65535,r30
142         movi (bar_mix2 + 8) & 65535,r30
143         movi (datalabel bar_mixboth + 80) & 65535,r30
144         movi (bar_mixboth + 80) & 65535,r30
145         movi (bar_mixboth2 + 64) & 65535,r30
146         movi (datalabel bar_mixboth2 + 64) & 65535,r30
147         movi (bar_mixwithout + 42) & 65535,r30
148         movi (bar_mixwithout2 + 24) & 65535,r30
149
150         .section .rodata
151         .long bar_mix + 4
152         .long datalabel bar_mix2 + 48
153         .long datalabel bar_mixboth + 400
154         .long bar_mixboth + 420
155         .long bar_mixboth2 + 248
156         .long datalabel bar_mixboth2 + 240
157         .long bar_mixwithout
158
159 ! Same as above, referencing symbol in other file *and* within that file.
160
161         .text
162         movi (datalabel baz + 8) & 65535,r30
163
164         movi (datalabel bazboth + 16) & 65535,r40
165         movi (bazboth + 12) & 65535,r40
166
167         movi (bazboth2 + 12) & 65535,r40
168         movi (datalabel bazboth2 + 16) & 65535,r40
169
170         movi (bazwithout + 24) & 65535,r30
171
172         .section .rodata
173         .long datalabel baz_other + 4
174         .long datalabel baz_otherboth + 40
175         .long baz_otherboth + 24
176         .long baz_otherboth2 + 24
177         .long datalabel baz_otherboth2 + 40
178         .long baz_otherwithout
179
180         .text
181         movi (datalabel baz_mix + 8) & 65535,r30
182         movi (baz_mix2 + 8) & 65535,r30
183         movi (datalabel baz_mixboth + 80) & 65535,r30
184         movi (baz_mixboth + 80) & 65535,r30
185         movi (baz_mixboth2 + 64) & 65535,r30
186         movi (datalabel baz_mixboth2 + 64) & 65535,r30
187         movi (baz_mixwithout + 42) & 65535,r30
188         movi (baz_mixwithout2 + 24) & 65535,r30
189
190         .section .rodata
191         .long baz_mix + 4
192         .long datalabel baz_mix2 + 48
193         .long datalabel baz_mixboth + 400
194         .long baz_mixboth + 420
195         .long baz_mixboth2 + 248
196         .long datalabel baz_mixboth2 + 240
197         .long baz_mixwithout
198
199 ! Same as all of the above, but where the symbol is not an ISA32 one.
200
201         .data
202         .global dfoo
203 dfoo:
204         .long 0
205         .long (datalabel dfoo + 8)
206
207         .global dfooboth
208 dfooboth:
209         .long 0
210         .long (datalabel dfooboth + 16)
211         .long (dfooboth + 12)
212
213         .global dfooboth2
214 dfooboth2:
215         .long 0
216         .long (dfooboth2 + 12)
217         .long (datalabel dfooboth2 + 16)
218
219         .global dfoowithout
220 dfoowithout:
221         .long 0
222         .long (dfoowithout + 24)
223
224         .global dfoo_other
225 dfoo_other:
226         .long 0
227         .global dfoo_otherboth
228 dfoo_otherboth:
229         .long 0
230         .global dfoo_otherboth2
231 dfoo_otherboth2:
232         .long 0
233         .global dfoo_otherwithout
234 dfoo_otherwithout:
235         .long 0
236
237         .section .rodata
238         .long datalabel dfoo_other + 4
239         .long datalabel dfoo_otherboth + 40
240         .long dfoo_otherboth + 24
241         .long dfoo_otherboth2 + 24
242         .long datalabel dfoo_otherboth2 + 40
243         .long dfoo_otherwithout
244
245         .data
246
247 ! Same as above, mixing references from same and other section.
248         .global dfoo_mix
249 dfoo_mix:
250         .long 0
251         .long (datalabel dfoo_mix + 8)
252         .global dfoo_mix2
253 dfoo_mix2:
254         .long 0
255         .long (dfoo_mix2 + 8)
256         .global dfoo_mixboth
257 dfoo_mixboth:
258         .long 0
259         .long (datalabel dfoo_mixboth + 80)
260         .long (dfoo_mixboth + 80)
261         .global dfoo_mixboth2
262 dfoo_mixboth2:
263         .long 0
264         .long (dfoo_mixboth2 + 64)
265         .long (datalabel dfoo_mixboth2 + 64)
266         .global dfoo_mixwithout
267 dfoo_mixwithout:
268         .long 0
269         .long (dfoo_mixwithout + 42)
270         .global dfoo_mixwithout2
271 dfoo_mixwithout2:
272         .long 0
273         .long (dfoo_mixwithout2 + 24)
274
275         .section .rodata
276         .long dfoo_mix + 4
277         .long datalabel dfoo_mix2 + 48
278         .long datalabel dfoo_mixboth + 400
279         .long dfoo_mixboth + 420
280         .long dfoo_mixboth2 + 248
281         .long datalabel dfoo_mixboth2 + 240
282         .long dfoo_mixwithout
283
284 ! Same as above, referencing symbol in other file (reference only from
285 ! this to other file).
286
287         .text
288         movi (datalabel dbarboth + 16) & 65535,r40
289         movi (dbarboth + 12) & 65535,r40
290         movi (dbarboth2 + 12) & 65535,r40
291         movi (datalabel dbarboth2 + 16) & 65535,r40
292         movi (dbarwithout + 24) & 65535,r30
293
294         .data
295         .long (datalabel dbar + 8)
296         .long datalabel dbar_other + 4
297         .long datalabel dbar_otherboth + 40
298         .long dbar_otherboth + 24
299         .long dbar_otherboth2 + 24
300         .long datalabel dbar_otherboth2 + 40
301         .long dbar_otherwithout
302
303         .text
304         movi (datalabel dbar_mix + 8) & 65535,r30
305         movi (dbar_mix2 + 8) & 65535,r30
306         movi (datalabel dbar_mixboth + 80) & 65535,r30
307         movi (dbar_mixboth + 80) & 65535,r30
308         movi (dbar_mixboth2 + 64) & 65535,r30
309         movi (datalabel dbar_mixboth2 + 64) & 65535,r30
310         movi (dbar_mixwithout + 42) & 65535,r30
311         movi (dbar_mixwithout2 + 24) & 65535,r30
312
313         .data
314         .long dbar_mix + 4
315         .long datalabel dbar_mix2 + 48
316         .long datalabel dbar_mixboth + 400
317         .long dbar_mixboth + 420
318         .long dbar_mixboth2 + 248
319         .long datalabel dbar_mixboth2 + 240
320         .long dbar_mixwithout
321
322 ! Same as above, referencing symbol in other file *and* within that file.
323
324         .text
325         movi (datalabel dbazboth + 16) & 65535,r40
326         movi (dbazboth + 12) & 65535,r40
327
328         movi (dbazboth2 + 12) & 65535,r40
329         movi (datalabel dbazboth2 + 16) & 65535,r40
330
331         movi (dbazwithout + 24) & 65535,r30
332
333         .data
334         .long (datalabel dbaz + 8)
335         .long datalabel dbaz_other + 4
336         .long datalabel dbaz_otherboth + 40
337         .long dbaz_otherboth + 24
338         .long dbaz_otherboth2 + 24
339         .long datalabel dbaz_otherboth2 + 40
340         .long dbaz_otherwithout
341
342         .text
343         movi (datalabel dbaz_mix + 8) & 65535,r30
344         movi (dbaz_mix2 + 8) & 65535,r30
345         movi (datalabel dbaz_mixboth + 80) & 65535,r30
346         movi (dbaz_mixboth + 80) & 65535,r30
347         movi (dbaz_mixboth2 + 64) & 65535,r30
348         movi (datalabel dbaz_mixboth2 + 64) & 65535,r30
349         movi (dbaz_mixwithout + 42) & 65535,r30
350         movi (dbaz_mixwithout2 + 24) & 65535,r30
351
352         .data
353         .long dbaz_mix + 4
354         .long datalabel dbaz_mix2 + 48
355         .long datalabel dbaz_mixboth + 400
356         .long dbaz_mixboth + 420
357         .long dbaz_mixboth2 + 248
358         .long datalabel dbaz_mixboth2 + 240
359         .long dbaz_mixwithout