ARM64: initial backend import
[oota-llvm.git] / test / MC / MachO / ARM64 / darwin-ARM64-reloc.s
1 ; RUN: llvm-mc -n -triple arm64-apple-darwin10 %s -filetype=obj -o - | macho-dump --dump-section-data | FileCheck %s
2
3         .text
4 _fred:
5         bl      _func
6         bl      _func + 20
7
8         adrp    x3, _data@page
9         ldr     w2, [x3, _data@pageoff]
10
11         add     x3, x3, _data@pageoff + 4
12
13         adrp    x3, _data@page+1
14         ldr     w2, [x3, _data@pageoff + 4]
15
16         adrp    x3, _data_ext@gotpage
17         ldr     w2, [x3, _data_ext@gotpageoff]
18
19         .data
20 _data:
21         .quad _foo
22         .quad _foo + 4
23         .quad _foo - _bar
24         .quad _foo - _bar + 4
25
26         .long _foo - _bar
27
28         .quad _foo@got
29         .long _foo@got - .
30
31
32 ; CHECK: ('cputype', 16777228)
33 ; CHECK: ('cpusubtype', 0)
34 ; CHECK: ('filetype', 1)
35 ; CHECK: ('num_load_commands', 3)
36 ; CHECK: ('load_commands_size', 336)
37 ; CHECK: ('flag', 0)
38 ; CHECK: ('reserved', 0)
39 ; CHECK: ('load_commands', [
40 ; CHECK:   # Load Command 0
41 ; CHECK:  (('command', 25)
42 ; CHECK:   ('size', 232)
43 ; CHECK:   ('segment_name', '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
44 ; CHECK:   ('vm_addr', 0)
45 ; CHECK:   ('vm_size', 84)
46 ; CHECK:   ('file_offset', 368)
47 ; CHECK:   ('file_size', 84)
48 ; CHECK:   ('maxprot', 7)
49 ; CHECK:   ('initprot', 7)
50 ; CHECK:   ('num_sections', 2)
51 ; CHECK:   ('flags', 0)
52 ; CHECK:   ('sections', [
53 ; CHECK:     # Section 0
54 ; CHECK:    (('section_name', '__text\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
55 ; CHECK:     ('segment_name', '__TEXT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
56 ; CHECK:     ('address', 0)
57 ; CHECK:     ('size', 36)
58 ; CHECK:     ('offset', 368)
59 ; CHECK:     ('alignment', 0)
60 ; CHECK:     ('reloc_offset', 452)
61 ; CHECK:     ('num_reloc', 13)
62 ; CHECK:     ('flags', 0x80000400)
63 ; CHECK:     ('reserved1', 0)
64 ; CHECK:     ('reserved2', 0)
65 ; CHECK:     ('reserved3', 0)
66 ; CHECK:    ),
67 ; CHECK:   ('_relocations', [
68 ; CHECK:     # Relocation 0
69 ; CHECK:     (('word-0', 0x20),
70 ; CHECK:      ('word-1', 0x6c000005)),
71 ; CHECK:     # Relocation 1
72 ; CHECK:     (('word-0', 0x1c),
73 ; CHECK:      ('word-1', 0x5d000005)),
74 ; CHECK:     # Relocation 2
75 ; CHECK:     (('word-0', 0x18),
76 ; CHECK:      ('word-1', 0xa4000004)),
77 ; CHECK:     # Relocation 3
78 ; CHECK:     (('word-0', 0x18),
79 ; CHECK:      ('word-1', 0x4c000002)),
80 ; CHECK:     # Relocation 4
81 ; CHECK:     (('word-0', 0x14),
82 ; CHECK:      ('word-1', 0xa4000001)),
83 ; CHECK:     # Relocation 5
84 ; CHECK:     (('word-0', 0x14),
85 ; CHECK:      ('word-1', 0x3d000002)),
86 ; CHECK:     # Relocation 6
87 ; CHECK:     (('word-0', 0x10),
88 ; CHECK:      ('word-1', 0xa4000004)),
89 ; CHECK:     # Relocation 7
90 ; CHECK:     (('word-0', 0x10),
91 ; CHECK:      ('word-1', 0x4c000002)),
92 ; CHECK:     # Relocation 8
93 ; CHECK:     (('word-0', 0xc),
94 ; CHECK:      ('word-1', 0x4c000002)),
95 ; CHECK:     # Relocation 9
96 ; CHECK:     (('word-0', 0x8),
97 ; CHECK:      ('word-1', 0x3d000002)),
98 ; CHECK:     # Relocation 10
99 ; CHECK:     (('word-0', 0x4),
100 ; CHECK:      ('word-1', 0xa4000014)),
101 ; CHECK:     # Relocation 11
102 ; CHECK:     (('word-0', 0x4),
103 ; CHECK:      ('word-1', 0x2d000007)),
104 ; CHECK:     # Relocation 12
105 ; CHECK:     (('word-0', 0x0),
106 ; CHECK:      ('word-1', 0x2d000007)),
107 ; CHECK:   ])
108 ; CHECK:   ('_section_data', '00000094 00000094 03000090 620040b9 63000091 03000090 620040b9 03000090 620040b9')
109 ; CHECK:     # Section 1
110 ; CHECK:    (('section_name', '__data\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
111 ; CHECK:     ('segment_name', '__DATA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
112 ; CHECK:     ('address', 36)
113 ; CHECK:     ('size', 48)
114 ; CHECK:     ('offset', 404)
115 ; CHECK:     ('alignment', 0)
116 ; CHECK:     ('reloc_offset', 556)
117 ; CHECK:     ('num_reloc', 10)
118 ; CHECK:     ('flags', 0x0)
119 ; CHECK:     ('reserved1', 0)
120 ; CHECK:     ('reserved2', 0)
121 ; CHECK:     ('reserved3', 0)
122 ; CHECK:    ),
123 ; CHECK:   ('_relocations', [
124 ; CHECK:     # Relocation 0
125 ; CHECK:     (('word-0', 0x2c),
126 ; CHECK:      ('word-1', 0x7d000006)),
127 ; CHECK:     # Relocation 1
128 ; CHECK:     (('word-0', 0x24),
129 ; CHECK:      ('word-1', 0x7e000006)),
130 ; CHECK:     # Relocation 2
131 ; CHECK:     (('word-0', 0x20),
132 ; CHECK:      ('word-1', 0x1c000004)),
133 ; CHECK:     # Relocation 3
134 ; CHECK:     (('word-0', 0x20),
135 ; CHECK:      ('word-1', 0xc000006)),
136 ; CHECK:     # Relocation 4
137 ; CHECK:     (('word-0', 0x18),
138 ; CHECK:      ('word-1', 0x1e000004)),
139 ; CHECK:     # Relocation 5
140 ; CHECK:     (('word-0', 0x18),
141 ; CHECK:      ('word-1', 0xe000006)),
142 ; CHECK:     # Relocation 6
143 ; CHECK:     (('word-0', 0x10),
144 ; CHECK:      ('word-1', 0x1e000004)),
145 ; CHECK:     # Relocation 7
146 ; CHECK:     (('word-0', 0x10),
147 ; CHECK:      ('word-1', 0xe000006)),
148 ; CHECK:     # Relocation 8
149 ; CHECK:     (('word-0', 0x8),
150 ; CHECK:      ('word-1', 0xe000006)),
151 ; CHECK:     # Relocation 9
152 ; CHECK:     (('word-0', 0x0),
153 ; CHECK:      ('word-1', 0xe000006)),
154 ; CHECK:   ])
155 ; CHECK:   ('_section_data', '00000000 00000000 04000000 00000000 00000000 00000000 04000000 00000000 00000000 00000000 00000000 d4ffffff')
156 ; CHECK:   ])
157 ; CHECK:  ),