1# RUN: ld64.lld -arch armv7 -r -print_atoms %s -o %t   | FileCheck %s
2# RUN: ld64.lld -arch armv7 -r -print_atoms %t -o %t2  | FileCheck %s
3#
4# Test parsing of armv7 relocations.
5#
6#
7
8--- !mach-o
9arch:            armv7
10file-type:       MH_OBJECT
11flags:           [ MH_SUBSECTIONS_VIA_SYMBOLS ]
12sections:
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
519local-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
538undefined-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#
819