]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/mach-o/parse-arm-relocs.yaml
Vendor import of lld trunk r233088:
[FreeBSD/FreeBSD.git] / test / mach-o / parse-arm-relocs.yaml
1 # RUN: lld -flavor darwin -arch armv7 -r -print_atoms %s -o %t   | FileCheck %s
2 # RUN: lld -flavor darwin -arch armv7 -r -print_atoms %t -o %t2  | FileCheck %s
3 #
4 # Test parsing of armv7 relocations.
5 #
6 #
7
8 --- !mach-o
9 arch:            armv7
10 file-type:       MH_OBJECT
11 flags:           [ MH_SUBSECTIONS_VIA_SYMBOLS ]
12 sections:
13   - segment:         __TEXT
14     section:         __text
15     type:            S_REGULAR
16     attributes:      [ S_ATTR_PURE_INSTRUCTIONS, S_ATTR_SOME_INSTRUCTIONS ]
17     alignment:       2
18     address:         0x0000000000000000
19     content:         [ 0x00, 0xF0, 0x4E, 0xF8, 0x00, 0xF0, 0x4E, 0xF8,
20                        0xFF, 0xF7, 0xFA, 0xFF, 0xFF, 0xF7, 0xFA, 0xFF,
21                        0xFF, 0xF7, 0xF6, 0xBF, 0x40, 0xF2, 0x72, 0x01,
22                        0xC0, 0xF2, 0x00, 0x01, 0x40, 0xF2, 0x7A, 0x02,
23                        0xC0, 0xF2, 0x00, 0x02, 0x40, 0xF2, 0x29, 0x01,
24                        0xC0, 0xF2, 0x00, 0x01, 0x79, 0x44, 0x40, 0xF2,
25                        0xA0, 0x03, 0xC0, 0xF2, 0x00, 0x03, 0x40, 0xF2,
26                        0xA8, 0x04, 0xC0, 0xF2, 0x00, 0x04, 0x40, 0xF2,
27                        0x57, 0x03, 0xC0, 0xF2, 0x00, 0x03, 0x40, 0xF2,
28                        0x00, 0x05, 0xC0, 0xF2, 0x00, 0x05, 0x40, 0xF2,
29                        0x08, 0x06, 0xC0, 0xF2, 0x00, 0x06, 0xC0, 0x46,
30                        0x10, 0x00, 0x00, 0xEB, 0x10, 0x00, 0x00, 0xEB,
31                        0xE6, 0xFF, 0xFF, 0xEB, 0xE6, 0xFF, 0xFF, 0xEB,
32                        0xE4, 0xFF, 0xFF, 0xEA, 0x20, 0x10, 0x00, 0xE3,
33                        0x00, 0x10, 0x40, 0xE3, 0x28, 0x20, 0x00, 0xE3,
34                        0x00, 0x20, 0x40, 0xE3, 0x0F, 0x10, 0x81, 0xE0,
35                        0xA0, 0x30, 0x00, 0xE3, 0x00, 0x30, 0x40, 0xE3,
36                        0xA8, 0x40, 0x00, 0xE3, 0x00, 0x40, 0x40, 0xE3,
37                        0x00, 0x50, 0x00, 0xE3, 0x00, 0x50, 0x40, 0xE3,
38                        0x08, 0x60, 0x00, 0xE3, 0x00, 0x60, 0x40, 0xE3 ]
39     relocations:
40       - offset:          0x0000009C
41         type:            ARM_RELOC_HALF
42         length:          1
43         pc-rel:          false
44         extern:          true
45         symbol:          4
46       - offset:          0x00000008
47         type:            ARM_RELOC_PAIR
48         length:          1
49         pc-rel:          false
50         extern:          false
51         symbol:          16777215
52       - offset:          0x00000098
53         type:            ARM_RELOC_HALF
54         length:          0
55         pc-rel:          false
56         extern:          true
57         symbol:          4
58       - offset:          0x00000000
59         type:            ARM_RELOC_PAIR
60         length:          0
61         pc-rel:          false
62         extern:          false
63         symbol:          16777215
64       - offset:          0x00000094
65         type:            ARM_RELOC_HALF
66         length:          1
67         pc-rel:          false
68         extern:          true
69         symbol:          4
70       - offset:          0x00000000
71         type:            ARM_RELOC_PAIR
72         length:          1
73         pc-rel:          false
74         extern:          false
75         symbol:          16777215
76       - offset:          0x00000090
77         type:            ARM_RELOC_HALF
78         length:          0
79         pc-rel:          false
80         extern:          true
81         symbol:          4
82       - offset:          0x00000000
83         type:            ARM_RELOC_PAIR
84         length:          0
85         pc-rel:          false
86         extern:          false
87         symbol:          16777215
88       - offset:          0x0000008C
89         scattered:       true
90         type:            ARM_RELOC_HALF
91         length:          1
92         pc-rel:          false
93         value:           0x000000A0
94       - offset:          0x000000A8
95         type:            ARM_RELOC_PAIR
96         length:          1
97         pc-rel:          false
98         extern:          false
99         symbol:          16777215
100       - offset:          0x00000088
101         scattered:       true
102         type:            ARM_RELOC_HALF
103         length:          0
104         pc-rel:          false
105         value:           0x000000A0
106       - offset:          0x00000000
107         type:            ARM_RELOC_PAIR
108         length:          0
109         pc-rel:          false
110         extern:          false
111         symbol:          16777215
112       - offset:          0x00000084
113         type:            ARM_RELOC_HALF
114         length:          1
115         pc-rel:          false
116         extern:          false
117         symbol:          2
118       - offset:          0x000000A0
119         type:            ARM_RELOC_PAIR
120         length:          1
121         pc-rel:          false
122         extern:          false
123         symbol:          16777215
124       - offset:          0x00000080
125         type:            ARM_RELOC_HALF
126         length:          0
127         pc-rel:          false
128         extern:          false
129         symbol:          2
130       - offset:          0x00000000
131         type:            ARM_RELOC_PAIR
132         length:          0
133         pc-rel:          false
134         extern:          false
135         symbol:          16777215
136       - offset:          0x00000078
137         scattered:       true
138         type:            ARM_RELOC_HALF_SECTDIFF
139         length:          1
140         pc-rel:          false
141         value:           0x000000A0
142       - offset:          0x00000028
143         scattered:       true
144         type:            ARM_RELOC_PAIR
145         length:          1
146         pc-rel:          false
147         value:           0x00000080
148       - offset:          0x00000074
149         scattered:       true
150         type:            ARM_RELOC_HALF_SECTDIFF
151         length:          0
152         pc-rel:          false
153         value:           0x000000A0
154       - offset:          0x00000000
155         scattered:       true
156         type:            ARM_RELOC_PAIR
157         length:          0
158         pc-rel:          false
159         value:           0x00000080
160       - offset:          0x00000070
161         scattered:       true
162         type:            ARM_RELOC_HALF_SECTDIFF
163         length:          1
164         pc-rel:          false
165         value:           0x000000A0
166       - offset:          0x00000020
167         scattered:       true
168         type:            ARM_RELOC_PAIR
169         length:          1
170         pc-rel:          false
171         value:           0x00000080
172       - offset:          0x0000006C
173         scattered:       true
174         type:            ARM_RELOC_HALF_SECTDIFF
175         length:          0
176         pc-rel:          false
177         value:           0x000000A0
178       - offset:          0x00000000
179         scattered:       true
180         type:            ARM_RELOC_PAIR
181         length:          0
182         pc-rel:          false
183         value:           0x00000080
184       - offset:          0x00000068
185         type:            ARM_RELOC_BR24
186         length:          2
187         pc-rel:          true
188         extern:          true
189         symbol:          4
190       - offset:          0x00000064
191         type:            ARM_RELOC_BR24
192         length:          2
193         pc-rel:          true
194         extern:          true
195         symbol:          4
196       - offset:          0x00000060
197         type:            ARM_RELOC_BR24
198         length:          2
199         pc-rel:          true
200         extern:          true
201         symbol:          4
202       - offset:          0x0000005C
203         scattered:       true
204         type:            ARM_RELOC_BR24
205         length:          2
206         pc-rel:          true
207         value:           0x000000A0
208       - offset:          0x00000058
209         type:            ARM_RELOC_BR24
210         length:          2
211         pc-rel:          true
212         extern:          false
213         symbol:          2
214       - offset:          0x00000052
215         type:            ARM_RELOC_HALF
216         length:          3
217         pc-rel:          false
218         extern:          true
219         symbol:          4
220       - offset:          0x00000008
221         type:            ARM_RELOC_PAIR
222         length:          3
223         pc-rel:          false
224         extern:          false
225         symbol:          16777215
226       - offset:          0x0000004E
227         type:            ARM_RELOC_HALF
228         length:          2
229         pc-rel:          false
230         extern:          true
231         symbol:          4
232       - offset:          0x00000000
233         type:            ARM_RELOC_PAIR
234         length:          2
235         pc-rel:          false
236         extern:          false
237         symbol:          16777215
238       - offset:          0x0000004A
239         type:            ARM_RELOC_HALF
240         length:          3
241         pc-rel:          false
242         extern:          true
243         symbol:          4
244       - offset:          0x00000000
245         type:            ARM_RELOC_PAIR
246         length:          3
247         pc-rel:          false
248         extern:          false
249         symbol:          16777215
250       - offset:          0x00000046
251         type:            ARM_RELOC_HALF
252         length:          2
253         pc-rel:          false
254         extern:          true
255         symbol:          4
256       - offset:          0x00000000
257         type:            ARM_RELOC_PAIR
258         length:          2
259         pc-rel:          false
260         extern:          false
261         symbol:          16777215
262       - offset:          0x00000042
263         type:            ARM_RELOC_HALF
264         length:          3
265         pc-rel:          false
266         extern:          false
267         symbol:          1
268       - offset:          0x00000057
269         type:            ARM_RELOC_PAIR
270         length:          3
271         pc-rel:          false
272         extern:          false
273         symbol:          16777215
274       - offset:          0x0000003E
275         type:            ARM_RELOC_HALF
276         length:          2
277         pc-rel:          false
278         extern:          false
279         symbol:          1
280       - offset:          0x00000000
281         type:            ARM_RELOC_PAIR
282         length:          2
283         pc-rel:          false
284         extern:          false
285         symbol:          16777215
286       - offset:          0x0000003A
287         scattered:       true
288         type:            ARM_RELOC_HALF
289         length:          3
290         pc-rel:          false
291         value:           0x000000A0
292       - offset:          0x000000A8
293         type:            ARM_RELOC_PAIR
294         length:          3
295         pc-rel:          false
296         extern:          false
297         symbol:          16777215
298       - offset:          0x00000036
299         scattered:       true
300         type:            ARM_RELOC_HALF
301         length:          2
302         pc-rel:          false
303         value:           0x000000A0
304       - offset:          0x00000000
305         type:            ARM_RELOC_PAIR
306         length:          2
307         pc-rel:          false
308         extern:          false
309         symbol:          16777215
310       - offset:          0x00000032
311         type:            ARM_RELOC_HALF
312         length:          3
313         pc-rel:          false
314         extern:          false
315         symbol:          2
316       - offset:          0x000000A0
317         type:            ARM_RELOC_PAIR
318         length:          3
319         pc-rel:          false
320         extern:          false
321         symbol:          16777215
322       - offset:          0x0000002E
323         type:            ARM_RELOC_HALF
324         length:          2
325         pc-rel:          false
326         extern:          false
327         symbol:          2
328       - offset:          0x00000000
329         type:            ARM_RELOC_PAIR
330         length:          2
331         pc-rel:          false
332         extern:          false
333         symbol:          16777215
334       - offset:          0x00000028
335         scattered:       true
336         type:            ARM_RELOC_HALF_SECTDIFF
337         length:          3
338         pc-rel:          false
339         value:           0x00000056
340       - offset:          0x00000028
341         scattered:       true
342         type:            ARM_RELOC_PAIR
343         length:          3
344         pc-rel:          false
345         value:           0x0000002E
346       - offset:          0x00000024
347         scattered:       true
348         type:            ARM_RELOC_HALF_SECTDIFF
349         length:          2
350         pc-rel:          false
351         value:           0x00000056
352       - offset:          0x00000000
353         scattered:       true
354         type:            ARM_RELOC_PAIR
355         length:          2
356         pc-rel:          false
357         value:           0x0000002E
358       - offset:          0x00000020
359         scattered:       true
360         type:            ARM_RELOC_HALF_SECTDIFF
361         length:          3
362         pc-rel:          false
363         value:           0x000000A0
364       - offset:          0x0000007A
365         scattered:       true
366         type:            ARM_RELOC_PAIR
367         length:          3
368         pc-rel:          false
369         value:           0x0000002E
370       - offset:          0x0000001C
371         scattered:       true
372         type:            ARM_RELOC_HALF_SECTDIFF
373         length:          2
374         pc-rel:          false
375         value:           0x000000A0
376       - offset:          0x00000000
377         scattered:       true
378         type:            ARM_RELOC_PAIR
379         length:          2
380         pc-rel:          false
381         value:           0x0000002E
382       - offset:          0x00000018
383         scattered:       true
384         type:            ARM_RELOC_HALF_SECTDIFF
385         length:          3
386         pc-rel:          false
387         value:           0x000000A0
388       - offset:          0x00000072
389         scattered:       true
390         type:            ARM_RELOC_PAIR
391         length:          3
392         pc-rel:          false
393         value:           0x0000002E
394       - offset:          0x00000014
395         scattered:       true
396         type:            ARM_RELOC_HALF_SECTDIFF
397         length:          2
398         pc-rel:          false
399         value:           0x000000A0
400       - offset:          0x00000000
401         scattered:       true
402         type:            ARM_RELOC_PAIR
403         length:          2
404         pc-rel:          false
405         value:           0x0000002E
406       - offset:          0x00000010
407         type:            ARM_THUMB_RELOC_BR22
408         length:          2
409         pc-rel:          true
410         extern:          true
411         symbol:          4
412       - offset:          0x0000000C
413         type:            ARM_THUMB_RELOC_BR22
414         length:          2
415         pc-rel:          true
416         extern:          true
417         symbol:          4
418       - offset:          0x00000008
419         type:            ARM_THUMB_RELOC_BR22
420         length:          2
421         pc-rel:          true
422         extern:          true
423         symbol:          4
424       - offset:          0x00000004
425         scattered:       true
426         type:            ARM_THUMB_RELOC_BR22
427         length:          2
428         pc-rel:          true
429         value:           0x000000A0
430       - offset:          0x00000000
431         type:            ARM_THUMB_RELOC_BR22
432         length:          2
433         pc-rel:          true
434         extern:          false
435         symbol:          2
436   - segment:         __DATA
437     section:         __data
438     type:            S_REGULAR
439     attributes:      [  ]
440     address:         0x00000000000000A0
441     content:         [ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
442                        0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
443                        0x04, 0x00, 0x00, 0x00, 0xA4, 0xFF, 0xFF, 0xFF, 
444                        0xA4, 0xFF, 0xFF, 0xFF, 0x45, 0xFF, 0xFF, 0xFF, 
445                        0x45, 0xFF, 0xFF, 0xFF ]
446     relocations:
447       - offset:          0x00000020
448         scattered:       true
449         type:            ARM_RELOC_SECTDIFF
450         length:          2
451         pc-rel:          false
452         value:           0x00000000
453       - offset:          0x00000000
454         scattered:       true
455         type:            ARM_RELOC_PAIR
456         length:          2
457         pc-rel:          false
458         value:           0x000000C0
459       - offset:          0x0000001C
460         scattered:       true
461         type:            ARM_RELOC_SECTDIFF
462         length:          2
463         pc-rel:          false
464         value:           0x00000000
465       - offset:          0x00000000
466         scattered:       true
467         type:            ARM_RELOC_PAIR
468         length:          2
469         pc-rel:          false
470         value:           0x000000BC
471       - offset:          0x00000018
472         scattered:       true
473         type:            ARM_RELOC_SECTDIFF
474         length:          2
475         pc-rel:          false
476         value:           0x00000058
477       - offset:          0x00000000
478         scattered:       true
479         type:            ARM_RELOC_PAIR
480         length:          2
481         pc-rel:          false
482         value:           0x000000B8
483       - offset:          0x00000014
484         scattered:       true
485         type:            ARM_RELOC_SECTDIFF
486         length:          2
487         pc-rel:          false
488         value:           0x00000058
489       - offset:          0x00000000
490         scattered:       true
491         type:            ARM_RELOC_PAIR
492         length:          2
493         pc-rel:          false
494         value:           0x000000B4
495       - offset:          0x00000010
496         type:            ARM_RELOC_VANILLA
497         length:          2
498         pc-rel:          false
499         extern:          true
500         symbol:          4
501       - offset:          0x0000000C
502         type:            ARM_RELOC_VANILLA
503         length:          2
504         pc-rel:          false
505         extern:          true
506         symbol:          4
507       - offset:          0x00000008
508         scattered:       true
509         type:            ARM_RELOC_VANILLA
510         length:          2
511         pc-rel:          false
512         value:           0x00000000
513       - offset:          0x00000004
514         type:            ARM_RELOC_VANILLA
515         length:          2
516         pc-rel:          false
517         extern:          false
518         symbol:          1
519 local-symbols:
520   - name:            _foo_thumb
521     type:            N_SECT
522     sect:            1
523     desc:            [ N_ARM_THUMB_DEF ]
524     value:           0x0000000000000000
525   - name:            _x
526     type:            N_SECT
527     sect:            2
528     value:           0x00000000000000A0
529   - name:            _t1
530     type:            N_SECT
531     sect:            1
532     desc:            [ N_ARM_THUMB_DEF ]
533     value:           0x0000000000000056
534   - name:            _foo_arm
535     type:            N_SECT
536     sect:            1
537     value:           0x0000000000000058
538 undefined-symbols:
539   - name:            _undef
540     type:            N_UNDF
541     scope:           [ N_EXT ]
542     value:           0x0000000000000000
543 ...
544
545 # CHECK:  defined-atoms:
546 # CHECK:    - name:            _x
547 # CHECK:      type:            data
548 # CHECK:      references:
549 # CHECK:        - kind:            pointer32
550 # CHECK:          offset:          4
551 # CHECK:          target:          _foo_thumb
552 # CHECK-NOT:      addend:
553 # CHECK:        - kind:            pointer32
554 # CHECK:          offset:          8
555 # CHECK:          target:          _foo_thumb
556 # CHECK:          addend:          4
557 # CHECK:        - kind:            pointer32
558 # CHECK:          offset:          12
559 # CHECK:          target:          _undef
560 # CHECK-NOT:      addend:
561 # CHECK:        - kind:            pointer32
562 # CHECK:          offset:          16
563 # CHECK:          target:          _undef
564 # CHECK:          addend:          4
565 # CHECK:        - kind:            delta32
566 # CHECK:          offset:          20
567 # CHECK:          target:          _foo_arm
568 # CHECK-NOT:      addend:
569 # CHECK:        - kind:            delta32
570 # CHECK:          offset:          24
571 # CHECK:          target:          _foo_arm
572 # CHECK:          addend:          4
573 # CHECK:        - kind:            delta32
574 # CHECK:          offset:          28
575 # CHECK:          target:          _foo_thumb
576 # CHECK-NOT:      addend:
577 # CHECK:        - kind:            delta32
578 # CHECK:          offset:          32
579 # CHECK:          target:          _foo_thumb
580 # CHECK:          addend:          4
581 # CHECK:    - name:            _foo_thumb
582 # CHECK:      references:
583 # CHECK:        - kind:            modeThumbCode
584 # CHECK:          offset:          0
585 # CHECK:        - kind:            thumb_bl22
586 # CHECK:          offset:          0
587 # CHECK:          target:          _x
588 # CHECK-NOT:      addend:
589 # CHECK:        - kind:            thumb_bl22
590 # CHECK:          offset:          4
591 # CHECK:          target:          _x
592 # CHECK:          addend:          4
593 # CHECK:        - kind:            thumb_bl22
594 # CHECK:          offset:          8
595 # CHECK:          target:          _undef
596 # CHECK-NOT:      addend:
597 # CHECK:        - kind:            thumb_bl22
598 # CHECK:          offset:          12
599 # CHECK:          target:          _undef
600 # CHECK:          addend:          4
601 # CHECK:        - kind:            thumb_b22
602 # CHECK:          offset:          16
603 # CHECK:          target:          _undef
604 # CHECK-NOT:      addend:
605 # CHECK:        - kind:            thumb_movw_funcRel
606 # CHECK:          offset:          20
607 # CHECK:          target:          _x
608 # CHECK:          addend:          -46
609 # CHECK:        - kind:            thumb_movt_funcRel
610 # CHECK:          offset:          24
611 # CHECK:          target:          _x
612 # CHECK:          addend:          -46
613 # CHECK:        - kind:            thumb_movw_funcRel
614 # CHECK:          offset:          28
615 # CHECK:          target:          _x
616 # CHECK:          addend:          -38
617 # CHECK:        - kind:            thumb_movt_funcRel
618 # CHECK:          offset:          32
619 # CHECK:          target:          _x
620 # CHECK:          addend:          -38
621 # CHECK:        - kind:            thumb_movw_funcRel
622 # CHECK:          offset:          36
623 # CHECK:          target:          _t1
624 # CHECK:          addend:          -46
625 # CHECK:        - kind:            thumb_movt_funcRel
626 # CHECK:          offset:          40
627 # CHECK:          target:          _t1
628 # CHECK:          addend:          -46
629 # CHECK:        - kind:            thumb_movw
630 # CHECK:          offset:          46
631 # CHECK:          target:          _x
632 # CHECK-NOT:      addend:
633 # CHECK:        - kind:            thumb_movt
634 # CHECK:          offset:          50
635 # CHECK:          target:          _x
636 # CHECK-NOT:      addend:
637 # CHECK:        - kind:            thumb_movw
638 # CHECK:          offset:          54
639 # CHECK:          target:          _x
640 # CHECK:          addend:          8
641 # CHECK:        - kind:            thumb_movt
642 # CHECK:          offset:          58
643 # CHECK:          target:          _x
644 # CHECK:          addend:          8
645 # CHECK:        - kind:            thumb_movw
646 # CHECK:          offset:          62
647 # CHECK:          target:          _t1
648 # CHECK-NOT:      addend:
649 # CHECK:        - kind:            thumb_movt
650 # CHECK:          offset:          66
651 # CHECK:          target:          _t1
652 # CHECK-NOT:      addend:
653 # CHECK:        - kind:            thumb_movw
654 # CHECK:          offset:          70
655 # CHECK:          target:          _undef
656 # CHECK-NOT:      addend:
657 # CHECK:        - kind:            thumb_movt
658 # CHECK:          offset:          74
659 # CHECK:          target:          _undef
660 # CHECK-NOT:      addend:
661 # CHECK:        - kind:            thumb_movw
662 # CHECK:          offset:          78
663 # CHECK:          target:          _undef
664 # CHECK:          addend:          8
665 # CHECK:        - kind:            thumb_movt
666 # CHECK:          offset:          82
667 # CHECK:          target:          _undef
668 # CHECK:          addend:          8
669 # CHECK:    - name:            _t1
670 # CHECK:      content:         [ C0, 46 ]
671 # CHECK:      references:
672 # CHECK:        - kind:            modeThumbCode
673 # CHECK:          offset:          0
674 # CHECK:    - name:            _foo_arm
675 # CHECK:      references:
676 # CHECK-NOT:    - kind:            modeThumbCode
677 # CHECK:        - kind:            arm_bl24
678 # CHECK:          offset:          0
679 # CHECK:          target:          _x
680 # CHECK-NOT:      addend:
681 # CHECK:        - kind:            arm_bl24
682 # CHECK:          offset:          4
683 # CHECK:          target:          _x
684 # CHECK:          addend:          4
685 # CHECK:        - kind:            arm_bl24
686 # CHECK:          offset:          8
687 # CHECK:          target:          _undef
688 # CHECK-NOT:      addend:
689 # CHECK:        - kind:            arm_bl24
690 # CHECK:          offset:          12
691 # CHECK:          target:          _undef
692 # CHECK:          addend:          4
693 # CHECK:        - kind:            arm_b24
694 # CHECK:          offset:          16
695 # CHECK:          target:          _undef
696 # CHECK-NOT:      addend:
697 # CHECK:        - kind:            arm_movw_funcRel
698 # CHECK:          offset:          20
699 # CHECK:          target:          _x
700 # CHECK:          addend:          -40
701 # CHECK:        - kind:            arm_movt_funcRel
702 # CHECK:          offset:          24
703 # CHECK:          target:          _x
704 # CHECK:          addend:          -40
705 # CHECK:        - kind:            arm_movw_funcRel
706 # CHECK:          offset:          28
707 # CHECK:          target:          _x
708 # CHECK:          addend:          -32
709 # CHECK:        - kind:            arm_movt_funcRel
710 # CHECK:          offset:          32
711 # CHECK:          target:          _x
712 # CHECK:          addend:          -32
713 # CHECK:        - kind:            arm_movw
714 # CHECK:          offset:          40
715 # CHECK:          target:          _x
716 # CHECK-NOT:      addend:
717 # CHECK:        - kind:            arm_movt
718 # CHECK:          offset:          44
719 # CHECK:          target:          _x
720 # CHECK-NOT:      addend:
721 # CHECK:        - kind:            arm_movw
722 # CHECK:          offset:          48
723 # CHECK:          target:          _x
724 # CHECK:          addend:          8
725 # CHECK:        - kind:            arm_movt
726 # CHECK:          offset:          52
727 # CHECK:          target:          _x
728 # CHECK:          addend:          8
729 # CHECK:        - kind:            arm_movw
730 # CHECK:          offset:          56
731 # CHECK:          target:          _undef
732 # CHECK-NOT:      addend:
733 # CHECK:        - kind:            arm_movt
734 # CHECK:          offset:          60
735 # CHECK:          target:          _undef
736 # CHECK-NOT:      addend:
737 # CHECK:        - kind:            arm_movw
738 # CHECK:          offset:          64
739 # CHECK:          target:          _undef
740 # CHECK:          addend:          8
741 # CHECK:        - kind:            arm_movt
742 # CHECK:          offset:          68
743 # CHECK:          target:          _undef
744 # CHECK:          addend:          8
745 # CHECK:  undefined-atoms: 
746 # CHECK:    - name:            _undef
747
748
749
750
751 #       .align  2
752 #       .code   16
753 #  .thumb_func  _foo_thumb
754 #_foo_thumb:
755 #  bl    _x
756 #  bl    _x+4
757 #  bl    _undef
758 #  bl    _undef+4
759 #  b     _undef
760 #  movw r1, :lower16:(_x-L1)
761 #  movt r1, :upper16:(_x-L1)
762 #  movw r2, :lower16:(_x+8-L1)
763 #  movt r2, :upper16:(_x+8-L1)
764 #  movw r1, :lower16:(_t1-L1)
765 #  movt r1, :upper16:(_t1-L1)
766 #       add     r1, pc
767 #L1:
768 #       movw    r3, :lower16:_x
769 #       movt    r3, :upper16:_x
770 #       movw    r4, :lower16:_x+8
771 #       movt    r4, :upper16:_x+8
772 #       movw    r3, :lower16:_t1
773 #       movt    r3, :upper16:_t1
774 #       movw    r5, :lower16:_undef
775 #       movt    r5, :upper16:_undef
776 #       movw    r6, :lower16:_undef+8
777 #       movt    r6, :upper16:_undef+8
778 #
779 #  .thumb_func  _t1
780 #_t1:
781 #  nop
782 #
783 #
784 #       .code   32
785 #  .align 2  
786 #_foo_arm:
787 #  bl    _x
788 #  bl    _x+4
789 #  bl    _undef
790 #  bl    _undef+4
791 #  b     _undef
792 #  movw r1, :lower16:(_x-L2)
793 #  movt r1, :upper16:(_x-L2)
794 #  movw r2, :lower16:(_x+8-L2)
795 #  movt r2, :upper16:(_x+8-L2)
796 #       add     r1, pc
797 #L2:
798 #       movw    r3, :lower16:_x
799 #       movt    r3, :upper16:_x
800 #       movw    r4, :lower16:_x+8
801 #       movt    r4, :upper16:_x+8
802 #       movw    r5, :lower16:_undef
803 #       movt    r5, :upper16:_undef
804 #       movw    r6, :lower16:_undef+8
805 #       movt    r6, :upper16:_undef+8
806 #  
807 #
808 #  .data
809 #_x:  .long 0
810 #    .long _foo_thumb
811 #    .long _foo_thumb+4
812 #    .long _undef
813 #    .long _undef+4
814 #    .long _foo_arm - .
815 #    .long _foo_arm+4- .
816 #    .long _foo_thumb - .
817 #    .long _foo_thumb+4 - .
818 #