1// RUN: llvm-mc -triple i386-apple-darwin9 %s -filetype=obj -o - | macho-dump | FileCheck %s
2
3        .reference sym_ref_A
4        .reference sym_ref_def_A
5sym_ref_def_A:
6sym_ref_def_C:
7        .reference sym_ref_def_C
8        .reference sym_ref_def_D
9        .globl sym_ref_def_D
10        .globl sym_ref_def_E
11        .reference sym_ref_def_E
12
13        .weak_reference sym_weak_ref_A
14        .weak_reference sym_weak_ref_def_A
15sym_weak_ref_def_A:
16sym_weak_ref_def_B:
17        .weak_reference sym_weak_ref_def_B
18
19        .data
20        .globl sym_weak_def_A
21        .weak_definition sym_weak_def_A
22sym_weak_def_A:
23sym_weak_def_B:
24        .weak_definition sym_weak_def_B
25        .globl sym_weak_def_B
26        .weak_definition sym_weak_def_C
27sym_weak_def_C:
28        .globl sym_weak_def_C
29
30        .lazy_reference sym_lazy_ref_A
31        .lazy_reference sym_lazy_ref_B
32sym_lazy_ref_B:
33sym_lazy_ref_C:
34        .lazy_reference sym_lazy_ref_C
35        .lazy_reference sym_lazy_ref_D
36        .globl sym_lazy_ref_D
37        .globl sym_lazy_ref_E
38        .lazy_reference sym_lazy_ref_E
39
40        .private_extern sym_private_ext_A
41        .private_extern sym_private_ext_B
42sym_private_ext_B:
43sym_private_ext_C:
44        .private_extern sym_private_ext_C
45        .private_extern sym_private_ext_D
46        .globl sym_private_ext_D
47        .globl sym_private_ext_E
48        .private_extern sym_private_ext_E
49
50        .no_dead_strip sym_no_dead_strip_A
51
52sym_symbol_resolver_A:
53	.symbol_resolver sym_symbol_resolver_A
54
55        .reference sym_ref_A
56        .desc sym_ref_A, 1
57        .desc sym_ref_A, 0x1234
58
59        .desc sym_desc_flags,0x47
60sym_desc_flags:
61
62// CHECK: ('cputype', 7)
63// CHECK: ('cpusubtype', 3)
64// CHECK: ('filetype', 1)
65// CHECK: ('num_load_commands', 3)
66// CHECK: ('load_commands_size', 296)
67// CHECK: ('flag', 0)
68// CHECK: ('load_commands', [
69// CHECK:   # Load Command 0
70// CHECK:  (('command', 1)
71// CHECK:   ('size', 192)
72// CHECK:   ('segment_name', '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
73// CHECK:   ('vm_addr', 0)
74// CHECK:   ('vm_size', 0)
75// CHECK:   ('file_offset', 324)
76// CHECK:   ('file_size', 0)
77// CHECK:   ('maxprot', 7)
78// CHECK:   ('initprot', 7)
79// CHECK:   ('num_sections', 2)
80// CHECK:   ('flags', 0)
81// CHECK:   ('sections', [
82// CHECK:     # Section 0
83// CHECK:    (('section_name', '__text\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
84// CHECK:     ('segment_name', '__TEXT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
85// CHECK:     ('address', 0)
86// CHECK:     ('size', 0)
87// CHECK:     ('offset', 324)
88// CHECK:     ('alignment', 0)
89// CHECK:     ('reloc_offset', 0)
90// CHECK:     ('num_reloc', 0)
91// CHECK:     ('flags', 0x80000000)
92// CHECK:     ('reserved1', 0)
93// CHECK:     ('reserved2', 0)
94// CHECK:    ),
95// CHECK:   ('_relocations', [
96// CHECK:   ])
97// CHECK:     # Section 1
98// CHECK:    (('section_name', '__data\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
99// CHECK:     ('segment_name', '__DATA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
100// CHECK:     ('address', 0)
101// CHECK:     ('size', 0)
102// CHECK:     ('offset', 324)
103// CHECK:     ('alignment', 0)
104// CHECK:     ('reloc_offset', 0)
105// CHECK:     ('num_reloc', 0)
106// CHECK:     ('flags', 0x0)
107// CHECK:     ('reserved1', 0)
108// CHECK:     ('reserved2', 0)
109// CHECK:    ),
110// CHECK:   ('_relocations', [
111// CHECK:   ])
112// CHECK:   ])
113// CHECK:  ),
114// CHECK:   # Load Command 1
115// CHECK:  (('command', 2)
116// CHECK:   ('size', 24)
117// CHECK:   ('symoff', 324)
118// CHECK:   ('nsyms', 24)
119// CHECK:   ('stroff', 612)
120// CHECK:   ('strsize', 388)
121// CHECK:   ('_string_data', '\x00sym_ref_A\x00sym_ref_def_D\x00sym_ref_def_E\x00sym_weak_ref_A\x00sym_weak_def_A\x00sym_weak_def_B\x00sym_weak_def_C\x00sym_lazy_ref_A\x00sym_lazy_ref_D\x00sym_lazy_ref_E\x00sym_private_ext_A\x00sym_private_ext_B\x00sym_private_ext_C\x00sym_private_ext_D\x00sym_private_ext_E\x00sym_no_dead_strip_A\x00sym_ref_def_A\x00sym_ref_def_C\x00sym_weak_ref_def_A\x00sym_weak_ref_def_B\x00sym_lazy_ref_B\x00sym_lazy_ref_C\x00sym_symbol_resolver_A\x00sym_desc_flags\x00\x00')
122// CHECK:   ('_symbols', [
123// CHECK:     # Symbol 0
124// CHECK:    (('n_strx', 254)
125// CHECK:     ('n_type', 0xe)
126// CHECK:     ('n_sect', 1)
127// CHECK:     ('n_desc', 32)
128// CHECK:     ('n_value', 0)
129// CHECK:     ('_string', 'sym_ref_def_A')
130// CHECK:    ),
131// CHECK:     # Symbol 1
132// CHECK:    (('n_strx', 268)
133// CHECK:     ('n_type', 0xe)
134// CHECK:     ('n_sect', 1)
135// CHECK:     ('n_desc', 32)
136// CHECK:     ('n_value', 0)
137// CHECK:     ('_string', 'sym_ref_def_C')
138// CHECK:    ),
139// CHECK:     # Symbol 2
140// CHECK:    (('n_strx', 282)
141// CHECK:     ('n_type', 0xe)
142// CHECK:     ('n_sect', 1)
143// CHECK:     ('n_desc', 64)
144// CHECK:     ('n_value', 0)
145// CHECK:     ('_string', 'sym_weak_ref_def_A')
146// CHECK:    ),
147// CHECK:     # Symbol 3
148// CHECK:    (('n_strx', 301)
149// CHECK:     ('n_type', 0xe)
150// CHECK:     ('n_sect', 1)
151// CHECK:     ('n_desc', 0)
152// CHECK:     ('n_value', 0)
153// CHECK:     ('_string', 'sym_weak_ref_def_B')
154// CHECK:    ),
155// CHECK:     # Symbol 4
156// CHECK:    (('n_strx', 320)
157// CHECK:     ('n_type', 0xe)
158// CHECK:     ('n_sect', 2)
159// CHECK:     ('n_desc', 32)
160// CHECK:     ('n_value', 0)
161// CHECK:     ('_string', 'sym_lazy_ref_B')
162// CHECK:    ),
163// CHECK:     # Symbol 5
164// CHECK:    (('n_strx', 335)
165// CHECK:     ('n_type', 0xe)
166// CHECK:     ('n_sect', 2)
167// CHECK:     ('n_desc', 32)
168// CHECK:     ('n_value', 0)
169// CHECK:     ('_string', 'sym_lazy_ref_C')
170// CHECK:    ),
171// CHECK:     # Symbol 6
172// CHECK:    (('n_strx', 350)
173// CHECK:     ('n_type', 0xe)
174// CHECK:     ('n_sect', 2)
175// CHECK:     ('n_desc', 256)
176// CHECK:     ('n_value', 0)
177// CHECK:     ('_string', 'sym_symbol_resolver_A')
178// CHECK:    ),
179// CHECK:     # Symbol 7
180// CHECK:    (('n_strx', 372)
181// CHECK:     ('n_type', 0xe)
182// CHECK:     ('n_sect', 2)
183// CHECK:     ('n_desc', 64)
184// CHECK:     ('n_value', 0)
185// CHECK:     ('_string', 'sym_desc_flags')
186// CHECK:    ),
187// CHECK:     # Symbol 8
188// CHECK:    (('n_strx', 162)
189// CHECK:     ('n_type', 0x1f)
190// CHECK:     ('n_sect', 2)
191// CHECK:     ('n_desc', 0)
192// CHECK:     ('n_value', 0)
193// CHECK:     ('_string', 'sym_private_ext_B')
194// CHECK:    ),
195// CHECK:     # Symbol 9
196// CHECK:    (('n_strx', 180)
197// CHECK:     ('n_type', 0x1f)
198// CHECK:     ('n_sect', 2)
199// CHECK:     ('n_desc', 0)
200// CHECK:     ('n_value', 0)
201// CHECK:     ('_string', 'sym_private_ext_C')
202// CHECK:    ),
203// CHECK:     # Symbol 10
204// CHECK:    (('n_strx', 54)
205// CHECK:     ('n_type', 0xf)
206// CHECK:     ('n_sect', 2)
207// CHECK:     ('n_desc', 128)
208// CHECK:     ('n_value', 0)
209// CHECK:     ('_string', 'sym_weak_def_A')
210// CHECK:    ),
211// CHECK:     # Symbol 11
212// CHECK:    (('n_strx', 69)
213// CHECK:     ('n_type', 0xf)
214// CHECK:     ('n_sect', 2)
215// CHECK:     ('n_desc', 128)
216// CHECK:     ('n_value', 0)
217// CHECK:     ('_string', 'sym_weak_def_B')
218// CHECK:    ),
219// CHECK:     # Symbol 12
220// CHECK:    (('n_strx', 84)
221// CHECK:     ('n_type', 0xf)
222// CHECK:     ('n_sect', 2)
223// CHECK:     ('n_desc', 128)
224// CHECK:     ('n_value', 0)
225// CHECK:     ('_string', 'sym_weak_def_C')
226// CHECK:    ),
227// CHECK:     # Symbol 13
228// CHECK:    (('n_strx', 99)
229// CHECK:     ('n_type', 0x1)
230// CHECK:     ('n_sect', 0)
231// CHECK:     ('n_desc', 33)
232// CHECK:     ('n_value', 0)
233// CHECK:     ('_string', 'sym_lazy_ref_A')
234// CHECK:    ),
235// CHECK:     # Symbol 14
236// CHECK:    (('n_strx', 114)
237// CHECK:     ('n_type', 0x1)
238// CHECK:     ('n_sect', 0)
239// CHECK:     ('n_desc', 32)
240// CHECK:     ('n_value', 0)
241// CHECK:     ('_string', 'sym_lazy_ref_D')
242// CHECK:    ),
243// CHECK:     # Symbol 15
244// CHECK:    (('n_strx', 129)
245// CHECK:     ('n_type', 0x1)
246// CHECK:     ('n_sect', 0)
247// CHECK:     ('n_desc', 33)
248// CHECK:     ('n_value', 0)
249// CHECK:     ('_string', 'sym_lazy_ref_E')
250// CHECK:    ),
251// CHECK:     # Symbol 16
252// CHECK:    (('n_strx', 234)
253// CHECK:     ('n_type', 0x1)
254// CHECK:     ('n_sect', 0)
255// CHECK:     ('n_desc', 32)
256// CHECK:     ('n_value', 0)
257// CHECK:     ('_string', 'sym_no_dead_strip_A')
258// CHECK:    ),
259// CHECK:     # Symbol 17
260// CHECK:    (('n_strx', 144)
261// CHECK:     ('n_type', 0x11)
262// CHECK:     ('n_sect', 0)
263// CHECK:     ('n_desc', 0)
264// CHECK:     ('n_value', 0)
265// CHECK:     ('_string', 'sym_private_ext_A')
266// CHECK:    ),
267// CHECK:     # Symbol 18
268// CHECK:    (('n_strx', 198)
269// CHECK:     ('n_type', 0x11)
270// CHECK:     ('n_sect', 0)
271// CHECK:     ('n_desc', 0)
272// CHECK:     ('n_value', 0)
273// CHECK:     ('_string', 'sym_private_ext_D')
274// CHECK:    ),
275// CHECK:     # Symbol 19
276// CHECK:    (('n_strx', 216)
277// CHECK:     ('n_type', 0x11)
278// CHECK:     ('n_sect', 0)
279// CHECK:     ('n_desc', 0)
280// CHECK:     ('n_value', 0)
281// CHECK:     ('_string', 'sym_private_ext_E')
282// CHECK:    ),
283// CHECK:     # Symbol 20
284// CHECK:    (('n_strx', 1)
285// CHECK:     ('n_type', 0x1)
286// CHECK:     ('n_sect', 0)
287// CHECK:     ('n_desc', 4660)
288// CHECK:     ('n_value', 0)
289// CHECK:     ('_string', 'sym_ref_A')
290// CHECK:    ),
291// CHECK:     # Symbol 21
292// CHECK:    (('n_strx', 11)
293// CHECK:     ('n_type', 0x1)
294// CHECK:     ('n_sect', 0)
295// CHECK:     ('n_desc', 32)
296// CHECK:     ('n_value', 0)
297// CHECK:     ('_string', 'sym_ref_def_D')
298// CHECK:    ),
299// CHECK:     # Symbol 22
300// CHECK:    (('n_strx', 25)
301// CHECK:     ('n_type', 0x1)
302// CHECK:     ('n_sect', 0)
303// CHECK:     ('n_desc', 32)
304// CHECK:     ('n_value', 0)
305// CHECK:     ('_string', 'sym_ref_def_E')
306// CHECK:    ),
307// CHECK:     # Symbol 23
308// CHECK:    (('n_strx', 39)
309// CHECK:     ('n_type', 0x1)
310// CHECK:     ('n_sect', 0)
311// CHECK:     ('n_desc', 64)
312// CHECK:     ('n_value', 0)
313// CHECK:     ('_string', 'sym_weak_ref_A')
314// CHECK:    ),
315// CHECK:   ])
316// CHECK:  ),
317// CHECK:   # Load Command 2
318// CHECK:  (('command', 11)
319// CHECK:   ('size', 80)
320// CHECK:   ('ilocalsym', 0)
321// CHECK:   ('nlocalsym', 8)
322// CHECK:   ('iextdefsym', 8)
323// CHECK:   ('nextdefsym', 5)
324// CHECK:   ('iundefsym', 13)
325// CHECK:   ('nundefsym', 11)
326// CHECK:   ('tocoff', 0)
327// CHECK:   ('ntoc', 0)
328// CHECK:   ('modtaboff', 0)
329// CHECK:   ('nmodtab', 0)
330// CHECK:   ('extrefsymoff', 0)
331// CHECK:   ('nextrefsyms', 0)
332// CHECK:   ('indirectsymoff', 0)
333// CHECK:   ('nindirectsyms', 0)
334// CHECK:   ('extreloff', 0)
335// CHECK:   ('nextrel', 0)
336// CHECK:   ('locreloff', 0)
337// CHECK:   ('nlocrel', 0)
338// CHECK:   ('_indirect_symbols', [
339// CHECK:   ])
340// CHECK:  ),
341// CHECK: ])
342