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_c$tlv$init\x00_c\x00___tlv_bootstrap\x00_d$tlv$init\x00_d\x00_a\x00_b\x00_a$tlv$init\x00_b$tlv$init\x00\x00\x00')
171// CHECK:   ('_symbols', [
172// CHECK:     # Symbol 0
173// CHECK:    (('n_strx', 54)
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', 66)
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', 48)
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', 51)
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', 13)
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', 1)
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', 45)
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', 33)
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', 16)
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: ])
271