Update test to use llvm-readobj. NFC.
[oota-llvm.git] / test / MC / MachO / tls.s
1 // RUN: llvm-mc -triple x86_64-apple-darwin %s -filetype=obj -o - | macho-dump --dump-section-data | FileCheck %s
2
3         .section        __TEXT,__text,regular,pure_instructions
4         .section        __DATA,__thread_data,thread_local_regular
5         .globl  _c$tlv$init
6         .align  2
7 _c$tlv$init:
8         .long   4
9
10         .section        __DATA,__thread_vars,thread_local_variables
11         .globl  _c
12 _c:
13         .quad   ___tlv_bootstrap
14         .quad   0
15         .quad   _c$tlv$init
16
17         .section        __DATA,__thread_data,thread_local_regular
18         .globl  _d$tlv$init
19         .align  2
20 _d$tlv$init:
21         .long   5
22
23         .section        __DATA,__thread_vars,thread_local_variables
24         .globl  _d
25 _d:
26         .quad   ___tlv_bootstrap
27         .quad   0
28         .quad   _d$tlv$init
29
30 .tbss _a$tlv$init, 4, 2
31
32         .globl  _a
33 _a:
34         .quad   ___tlv_bootstrap
35         .quad   0
36         .quad   _a$tlv$init
37
38 .tbss _b$tlv$init, 4, 2
39
40         .globl  _b
41 _b:
42         .quad   ___tlv_bootstrap
43         .quad   0
44         .quad   _b$tlv$init
45
46 .subsections_via_symbols
47
48 // CHECK: ('cputype', 16777223)
49 // CHECK: ('cpusubtype', 3)
50 // CHECK: ('filetype', 1)
51 // CHECK: ('num_load_commands', 3)
52 // CHECK: ('load_commands_size', 496)
53 // CHECK: ('flag', 8192)
54 // CHECK: ('reserved', 0)
55 // CHECK: ('load_commands', [
56 // CHECK:   # Load Command 0
57 // CHECK:  (('command', 25)
58 // CHECK:   ('size', 392)
59 // CHECK:   ('segment_name', '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
60 // CHECK:   ('vm_addr', 0)
61 // CHECK:   ('vm_size', 112)
62 // CHECK:   ('file_offset', 528)
63 // CHECK:   ('file_size', 104)
64 // CHECK:   ('maxprot', 7)
65 // CHECK:   ('initprot', 7)
66 // CHECK:   ('num_sections', 4)
67 // CHECK:   ('flags', 0)
68 // CHECK:   ('sections', [
69 // CHECK:     # Section 0
70 // CHECK:    (('section_name', '__text\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
71 // CHECK:     ('segment_name', '__TEXT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
72 // CHECK:     ('address', 0)
73 // CHECK:     ('size', 0)
74 // CHECK:     ('offset', 528)
75 // CHECK:     ('alignment', 0)
76 // CHECK:     ('reloc_offset', 0)
77 // CHECK:     ('num_reloc', 0)
78 // CHECK:     ('flags', 0x80000000)
79 // CHECK:     ('reserved1', 0)
80 // CHECK:     ('reserved2', 0)
81 // CHECK:     ('reserved3', 0)
82 // CHECK:    ),
83 // CHECK:   ('_relocations', [
84 // CHECK:   ])
85 // CHECK:   ('_section_data', '')
86 // CHECK:     # Section 1
87 // CHECK:    (('section_name', '__thread_data\x00\x00\x00')
88 // CHECK:     ('segment_name', '__DATA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
89 // CHECK:     ('address', 0)
90 // CHECK:     ('size', 8)
91 // CHECK:     ('offset', 528)
92 // CHECK:     ('alignment', 2)
93 // CHECK:     ('reloc_offset', 0)
94 // CHECK:     ('num_reloc', 0)
95 // CHECK:     ('flags', 0x11)
96 // CHECK:     ('reserved1', 0)
97 // CHECK:     ('reserved2', 0)
98 // CHECK:     ('reserved3', 0)
99 // CHECK:    ),
100 // CHECK:   ('_relocations', [
101 // CHECK:   ])
102 // CHECK:   ('_section_data', '04000000 05000000')
103 // CHECK:     # Section 2
104 // CHECK:    (('section_name', '__thread_vars\x00\x00\x00')
105 // CHECK:     ('segment_name', '__DATA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
106 // CHECK:     ('address', 8)
107 // CHECK:     ('size', 96)
108 // CHECK:     ('offset', 536)
109 // CHECK:     ('alignment', 0)
110 // CHECK:     ('reloc_offset', 632)
111 // CHECK:     ('num_reloc', 8)
112 // CHECK:     ('flags', 0x13)
113 // CHECK:     ('reserved1', 0)
114 // CHECK:     ('reserved2', 0)
115 // CHECK:     ('reserved3', 0)
116 // CHECK:    ),
117 // CHECK:   ('_relocations', [
118 // CHECK:     # Relocation 0
119 // CHECK:     (('word-0', 0x58),
120 // CHECK:      ('word-1', 0xe000001)),
121 // CHECK:     # Relocation 1
122 // CHECK:     (('word-0', 0x48),
123 // CHECK:      ('word-1', 0xe000008)),
124 // CHECK:     # Relocation 2
125 // CHECK:     (('word-0', 0x40),
126 // CHECK:      ('word-1', 0xe000000)),
127 // CHECK:     # Relocation 3
128 // CHECK:     (('word-0', 0x30),
129 // CHECK:      ('word-1', 0xe000008)),
130 // CHECK:     # Relocation 4
131 // CHECK:     (('word-0', 0x28),
132 // CHECK:      ('word-1', 0xe000007)),
133 // CHECK:     # Relocation 5
134 // CHECK:     (('word-0', 0x18),
135 // CHECK:      ('word-1', 0xe000008)),
136 // CHECK:     # Relocation 6
137 // CHECK:     (('word-0', 0x10),
138 // CHECK:      ('word-1', 0xe000005)),
139 // CHECK:     # Relocation 7
140 // CHECK:     (('word-0', 0x0),
141 // CHECK:      ('word-1', 0xe000008)),
142 // CHECK:   ])
143 // CHECK:   ('_section_data', '00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000')
144 // CHECK:     # Section 3
145 // CHECK:    (('section_name', '__thread_bss\x00\x00\x00\x00')
146 // CHECK:     ('segment_name', '__DATA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
147 // CHECK:     ('address', 104)
148 // CHECK:     ('size', 8)
149 // CHECK:     ('offset', 0)
150 // CHECK:     ('alignment', 2)
151 // CHECK:     ('reloc_offset', 0)
152 // CHECK:     ('num_reloc', 0)
153 // CHECK:     ('flags', 0x12)
154 // CHECK:     ('reserved1', 0)
155 // CHECK:     ('reserved2', 0)
156 // CHECK:     ('reserved3', 0)
157 // CHECK:    ),
158 // CHECK:   ('_relocations', [
159 // CHECK:   ])
160 // CHECK:   ('_section_data', 'cffaedfe 07000001')
161 // CHECK:   ])
162 // CHECK:  ),
163 // CHECK:   # Load Command 1
164 // CHECK:  (('command', 2)
165 // CHECK:   ('size', 24)
166 // CHECK:   ('symoff', 696)
167 // CHECK:   ('nsyms', 9)
168 // CHECK:   ('stroff', 840)
169 // CHECK:   ('strsize', 80)
170 // CHECK:   ('_string_data', '\x00_d$tlv$init\x00_c$tlv$init\x00_b$tlv$init\x00_a$tlv$init\x00___tlv_bootstrap\x00_d\x00_c\x00_b\x00_a\x00\x00\x00')
171 // CHECK:   ('_symbols', [
172 // CHECK:     # Symbol 0
173 // CHECK:    (('n_strx', 37)
174 // CHECK:     ('n_type', 0xe)
175 // CHECK:     ('n_sect', 4)
176 // CHECK:     ('n_desc', 0)
177 // CHECK:     ('n_value', 104)
178 // CHECK:     ('_string', '_a$tlv$init')
179 // CHECK:    ),
180 // CHECK:     # Symbol 1
181 // CHECK:    (('n_strx', 25)
182 // CHECK:     ('n_type', 0xe)
183 // CHECK:     ('n_sect', 4)
184 // CHECK:     ('n_desc', 0)
185 // CHECK:     ('n_value', 108)
186 // CHECK:     ('_string', '_b$tlv$init')
187 // CHECK:    ),
188 // CHECK:     # Symbol 2
189 // CHECK:    (('n_strx', 75)
190 // CHECK:     ('n_type', 0xf)
191 // CHECK:     ('n_sect', 3)
192 // CHECK:     ('n_desc', 0)
193 // CHECK:     ('n_value', 56)
194 // CHECK:     ('_string', '_a')
195 // CHECK:    ),
196 // CHECK:     # Symbol 3
197 // CHECK:    (('n_strx', 72)
198 // CHECK:     ('n_type', 0xf)
199 // CHECK:     ('n_sect', 3)
200 // CHECK:     ('n_desc', 0)
201 // CHECK:     ('n_value', 80)
202 // CHECK:     ('_string', '_b')
203 // CHECK:    ),
204 // CHECK:     # Symbol 4
205 // CHECK:    (('n_strx', 69)
206 // CHECK:     ('n_type', 0xf)
207 // CHECK:     ('n_sect', 3)
208 // CHECK:     ('n_desc', 0)
209 // CHECK:     ('n_value', 8)
210 // CHECK:     ('_string', '_c')
211 // CHECK:    ),
212 // CHECK:     # Symbol 5
213 // CHECK:    (('n_strx', 13)
214 // CHECK:     ('n_type', 0xf)
215 // CHECK:     ('n_sect', 2)
216 // CHECK:     ('n_desc', 0)
217 // CHECK:     ('n_value', 0)
218 // CHECK:     ('_string', '_c$tlv$init')
219 // CHECK:    ),
220 // CHECK:     # Symbol 6
221 // CHECK:    (('n_strx', 66)
222 // CHECK:     ('n_type', 0xf)
223 // CHECK:     ('n_sect', 3)
224 // CHECK:     ('n_desc', 0)
225 // CHECK:     ('n_value', 32)
226 // CHECK:     ('_string', '_d')
227 // CHECK:    ),
228 // CHECK:     # Symbol 7
229 // CHECK:    (('n_strx', 1)
230 // CHECK:     ('n_type', 0xf)
231 // CHECK:     ('n_sect', 2)
232 // CHECK:     ('n_desc', 0)
233 // CHECK:     ('n_value', 4)
234 // CHECK:     ('_string', '_d$tlv$init')
235 // CHECK:    ),
236 // CHECK:     # Symbol 8
237 // CHECK:    (('n_strx', 49)
238 // CHECK:     ('n_type', 0x1)
239 // CHECK:     ('n_sect', 0)
240 // CHECK:     ('n_desc', 0)
241 // CHECK:     ('n_value', 0)
242 // CHECK:     ('_string', '___tlv_bootstrap')
243 // CHECK:    ),
244 // CHECK:   ])
245 // CHECK:  ),
246 // CHECK:   # Load Command 2
247 // CHECK:  (('command', 11)
248 // CHECK:   ('size', 80)
249 // CHECK:   ('ilocalsym', 0)
250 // CHECK:   ('nlocalsym', 2)
251 // CHECK:   ('iextdefsym', 2)
252 // CHECK:   ('nextdefsym', 6)
253 // CHECK:   ('iundefsym', 8)
254 // CHECK:   ('nundefsym', 1)
255 // CHECK:   ('tocoff', 0)
256 // CHECK:   ('ntoc', 0)
257 // CHECK:   ('modtaboff', 0)
258 // CHECK:   ('nmodtab', 0)
259 // CHECK:   ('extrefsymoff', 0)
260 // CHECK:   ('nextrefsyms', 0)
261 // CHECK:   ('indirectsymoff', 0)
262 // CHECK:   ('nindirectsyms', 0)
263 // CHECK:   ('extreloff', 0)
264 // CHECK:   ('nextrel', 0)
265 // CHECK:   ('locreloff', 0)
266 // CHECK:   ('nlocrel', 0)
267 // CHECK:   ('_indirect_symbols', [
268 // CHECK:   ])
269 // CHECK:  ),
270 // CHECK: ])