1bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// RUN: llvm-mc -triple x86_64-apple-darwin %s -filetype=obj -o - | macho-dump --dump-section-data | FileCheck %s
2bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher
3bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher.tdata
4bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher_a$tlv$init:
5bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher	.long 4
6bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher
7bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher
8bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher.tlv
9bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher	.globl _a
10bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher_a:
11bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher	.quad __tlv_bootstrap
12bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher	.quad 0
13bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher	.quad _a$tlv$init
14bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher
15bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher.text
16bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher	.globl _foo
17bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher	.align 4, 0x90
18bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher
19bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher_foo:
20bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher	 movq   _a@TLVP(%rip), %rdi
21bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher	 call	*(%rdi) # returns &a in %rax
22bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher	 ret
23bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher
24bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK: ('cputype', 16777223)
25bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK: ('cpusubtype', 3)
26bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK: ('filetype', 1)
2744fa0473ae9144a8cfb4a500ae9de17239e69d2eDaniel Dunbar// CHECK: ('num_load_commands', 3)
28bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK: ('load_commands_size', 416)
29bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK: ('flag', 0)
30bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK: ('reserved', 0)
31bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK: ('load_commands', [
32bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   # Load Command 0
33bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:  (('command', 25)
34bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('size', 312)
35bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('segment_name', '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
36bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('vm_addr', 0)
37bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('vm_size', 38)
38bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('file_offset', 448)
39bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('file_size', 38)
40bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('maxprot', 7)
41bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('initprot', 7)
42bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('num_sections', 3)
43bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('flags', 0)
44bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('sections', [
45bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     # Section 0
46bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:    (('section_name', '__text\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
47bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('segment_name', '__TEXT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
48bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('address', 0)
49bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('size', 10)
50bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('offset', 448)
51bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('alignment', 4)
52bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('reloc_offset', 488)
53bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('num_reloc', 1)
54bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('flags', 0x80000400)
55bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('reserved1', 0)
56bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('reserved2', 0)
57bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('reserved3', 0)
58bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:    ),
59bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('_relocations', [
60bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     # Relocation 0
61bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     (('word-0', 0x3),
62bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:      ('word-1', 0x9d000001)),
63bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ])
64228290c0d181b663f33680aea03e10843da5f907Rafael Espindola// CHECK:   ('_section_data', '488b3d00 000000ff 17c3')
65bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     # Section 1
66bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:    (('section_name', '__thread_data\x00\x00\x00')
67bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('segment_name', '__DATA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
68bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('address', 10)
69bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('size', 4)
70bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('offset', 458)
71bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('alignment', 0)
72bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('reloc_offset', 0)
73bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('num_reloc', 0)
74bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('flags', 0x11)
75bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('reserved1', 0)
76bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('reserved2', 0)
77bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('reserved3', 0)
78bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:    ),
79bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('_relocations', [
80bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ])
81228290c0d181b663f33680aea03e10843da5f907Rafael Espindola// CHECK:   ('_section_data', '04000000')
82bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     # Section 2
83bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:    (('section_name', '__thread_vars\x00\x00\x00')
84bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('segment_name', '__DATA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
85bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('address', 14)
86bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('size', 24)
87bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('offset', 462)
88bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('alignment', 0)
89bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('reloc_offset', 496)
90bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('num_reloc', 2)
91bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('flags', 0x13)
92bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('reserved1', 0)
93bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('reserved2', 0)
94bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('reserved3', 0)
95bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:    ),
96bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('_relocations', [
97bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     # Relocation 0
98bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     (('word-0', 0x10),
99bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:      ('word-1', 0xe000000)),
100bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     # Relocation 1
101bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     (('word-0', 0x0),
102bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:      ('word-1', 0xe000003)),
103bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ])
104228290c0d181b663f33680aea03e10843da5f907Rafael Espindola// CHECK:   ('_section_data', '00000000 00000000 00000000 00000000 00000000 00000000')
105bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ])
106bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:  ),
107bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   # Load Command 1
108bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:  (('command', 2)
109bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('size', 24)
110bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('symoff', 512)
111bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('nsyms', 4)
112bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('stroff', 576)
113bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('strsize', 40)
114bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('_string_data', '\x00_a\x00__tlv_bootstrap\x00_foo\x00_a$tlv$init\x00\x00\x00\x00')
115bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('_symbols', [
116bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     # Symbol 0
117bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:    (('n_strx', 25)
118bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('n_type', 0xe)
119bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('n_sect', 2)
120bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('n_desc', 0)
121bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('n_value', 10)
122bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('_string', '_a$tlv$init')
123bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:    ),
124bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     # Symbol 1
125bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:    (('n_strx', 1)
126bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('n_type', 0xf)
127bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('n_sect', 3)
128bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('n_desc', 0)
129bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('n_value', 14)
130bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('_string', '_a')
131bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:    ),
132bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     # Symbol 2
133bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:    (('n_strx', 20)
134bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('n_type', 0xf)
135bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('n_sect', 1)
136bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('n_desc', 0)
137bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('n_value', 0)
138bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('_string', '_foo')
139bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:    ),
140bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     # Symbol 3
141bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:    (('n_strx', 4)
142bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('n_type', 0x1)
143bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('n_sect', 0)
144bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('n_desc', 0)
145bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('n_value', 0)
146bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:     ('_string', '__tlv_bootstrap')
147bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:    ),
148bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ])
149bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:  ),
150bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   # Load Command 2
151bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:  (('command', 11)
152bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('size', 80)
153bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('ilocalsym', 0)
154bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('nlocalsym', 1)
155bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('iextdefsym', 1)
156bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('nextdefsym', 2)
157bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('iundefsym', 3)
158bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('nundefsym', 1)
159bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('tocoff', 0)
160bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('ntoc', 0)
161bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('modtaboff', 0)
162bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('nmodtab', 0)
163bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('extrefsymoff', 0)
164bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('nextrefsyms', 0)
165bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('indirectsymoff', 0)
166bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('nindirectsyms', 0)
167bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('extreloff', 0)
168bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('nextrel', 0)
169bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('locreloff', 0)
170bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('nlocrel', 0)
171bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ('_indirect_symbols', [
172bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:   ])
173bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK:  ),
174bd3ba537cdc257b7f2f7fb4ad2ea55ee1e4036f3Eric Christopher// CHECK: ])
175