1# RUN: yaml2obj %s | obj2yaml | FileCheck %s
2
3--- !mach-o
4FileHeader:      
5  magic:           0xFEEDFACF
6  cputype:         0x01000007
7  cpusubtype:      0x00000003
8  filetype:        0x0000000A
9  ncmds:           5
10  sizeofcmds:      1800
11  flags:           0x00000000
12  reserved:        0x00000000
13LoadCommands:    
14  - cmd:             LC_SEGMENT_64
15    cmdsize:         72
16    segname:         __PAGEZERO
17    vmaddr:          0
18    vmsize:          4294967296
19    fileoff:         0
20    filesize:        0
21    maxprot:         0
22    initprot:        0
23    nsects:          0
24    flags:           0
25  - cmd:             LC_SEGMENT_64
26    cmdsize:         472
27    segname:         __TEXT
28    vmaddr:          4294967296
29    vmsize:          4096
30    fileoff:         0
31    filesize:        0
32    maxprot:         7
33    initprot:        5
34    nsects:          5
35    flags:           0
36    Sections:        
37      - sectname:        __text
38        segname:         __TEXT
39        addr:            0x0000000100000F50
40        size:            52
41        offset:          0x00000000
42        align:           4
43        reloff:          0x00000000
44        nreloc:          0
45        flags:           0x80000400
46        reserved1:       0x00000000
47        reserved2:       0x00000000
48        reserved3:       0x00000000
49      - sectname:        __stubs
50        segname:         __TEXT
51        addr:            0x0000000100000F84
52        size:            6
53        offset:          0x00000000
54        align:           1
55        reloff:          0x00000000
56        nreloc:          0
57        flags:           0x80000408
58        reserved1:       0x00000000
59        reserved2:       0x00000006
60        reserved3:       0x00000000
61      - sectname:        __stub_helper
62        segname:         __TEXT
63        addr:            0x0000000100000F8C
64        size:            26
65        offset:          0x00000000
66        align:           2
67        reloff:          0x00000000
68        nreloc:          0
69        flags:           0x80000400
70        reserved1:       0x00000000
71        reserved2:       0x00000000
72        reserved3:       0x00000000
73      - sectname:        __cstring
74        segname:         __TEXT
75        addr:            0x0000000100000FA6
76        size:            14
77        offset:          0x00000000
78        align:           0
79        reloff:          0x00000000
80        nreloc:          0
81        flags:           0x00000002
82        reserved1:       0x00000000
83        reserved2:       0x00000000
84        reserved3:       0x00000000
85      - sectname:        __unwind_info
86        segname:         __TEXT
87        addr:            0x0000000100000FB4
88        size:            72
89        offset:          0x00000000
90        align:           2
91        reloff:          0x00000000
92        nreloc:          0
93        flags:           0x00000000
94        reserved1:       0x00000000
95        reserved2:       0x00000000
96        reserved3:       0x00000000
97  - cmd:             LC_SEGMENT_64
98    cmdsize:         232
99    segname:         __DATA
100    vmaddr:          4294971392
101    vmsize:          4096
102    fileoff:         0
103    filesize:        0
104    maxprot:         7
105    initprot:        3
106    nsects:          2
107    flags:           0
108    Sections:        
109      - sectname:        __nl_symbol_ptr
110        segname:         __DATA
111        addr:            0x0000000100001000
112        size:            16
113        offset:          0x00000000
114        align:           3
115        reloff:          0x00000000
116        nreloc:          0
117        flags:           0x00000006
118        reserved1:       0x00000001
119        reserved2:       0x00000000
120        reserved3:       0x00000000
121      - sectname:        __la_symbol_ptr
122        segname:         __DATA
123        addr:            0x0000000100001010
124        size:            8
125        offset:          0x00000000
126        align:           3
127        reloff:          0x00000000
128        nreloc:          0
129        flags:           0x00000007
130        reserved1:       0x00000003
131        reserved2:       0x00000000
132        reserved3:       0x00000000
133  - cmd:             LC_SEGMENT_64
134    cmdsize:         72
135    segname:         __LINKEDIT
136    vmaddr:          4294975488
137    vmsize:          4096
138    fileoff:         4096
139    filesize:        60
140    maxprot:         7
141    initprot:        1
142    nsects:          0
143    flags:           0
144  - cmd:             LC_SEGMENT_64
145    cmdsize:         952
146    segname:         __DWARF
147    vmaddr:          4294979584
148    vmsize:          4096
149    fileoff:         8192
150    filesize:        764
151    maxprot:         7
152    initprot:        3
153    nsects:          11
154    flags:           0
155    Sections:        
156      - sectname:        __debug_line
157        segname:         __DWARF
158        addr:            0x0000000100003000
159        size:            69
160        offset:          0x00002000
161        align:           0
162        reloff:          0x00000000
163        nreloc:          0
164        flags:           0x00000000
165        reserved1:       0x00000000
166        reserved2:       0x00000000
167        reserved3:       0x00000000
168      - sectname:        __debug_pubnames
169        segname:         __DWARF
170        addr:            0x0000000100003045
171        size:            27
172        offset:          0x00002045
173        align:           0
174        reloff:          0x00000000
175        nreloc:          0
176        flags:           0x00000000
177        reserved1:       0x00000000
178        reserved2:       0x00000000
179        reserved3:       0x00000000
180      - sectname:        __debug_pubtypes
181        segname:         __DWARF
182        addr:            0x0000000100003060
183        size:            35
184        offset:          0x00002060
185        align:           0
186        reloff:          0x00000000
187        nreloc:          0
188        flags:           0x00000000
189        reserved1:       0x00000000
190        reserved2:       0x00000000
191        reserved3:       0x00000000
192      - sectname:        __debug_aranges
193        segname:         __DWARF
194        addr:            0x0000000100003083
195        size:            48
196        offset:          0x00002083
197        align:           0
198        reloff:          0x00000000
199        nreloc:          0
200        flags:           0x00000000
201        reserved1:       0x00000000
202        reserved2:       0x00000000
203        reserved3:       0x00000000
204      - sectname:        __debug_info
205        segname:         __DWARF
206        addr:            0x00000001000030B3
207        size:            121
208        offset:          0x000020B3
209        align:           0
210        reloff:          0x00000000
211        nreloc:          0
212        flags:           0x00000000
213        reserved1:       0x00000000
214        reserved2:       0x00000000
215        reserved3:       0x00000000
216      - sectname:        __debug_abbrev
217        segname:         __DWARF
218        addr:            0x000000010000312C
219        size:            76
220        offset:          0x0000212C
221        align:           0
222        reloff:          0x00000000
223        nreloc:          0
224        flags:           0x00000000
225        reserved1:       0x00000000
226        reserved2:       0x00000000
227        reserved3:       0x00000000
228      - sectname:        __debug_str
229        segname:         __DWARF
230        addr:            0x0000000100003178
231        size:            142
232        offset:          0x00002178
233        align:           0
234        reloff:          0x00000000
235        nreloc:          0
236        flags:           0x00000000
237        reserved1:       0x00000000
238        reserved2:       0x00000000
239        reserved3:       0x00000000
240      - sectname:        __apple_names
241        segname:         __DWARF
242        addr:            0x0000000100003206
243        size:            60
244        offset:          0x00002206
245        align:           0
246        reloff:          0x00000000
247        nreloc:          0
248        flags:           0x00000000
249        reserved1:       0x00000000
250        reserved2:       0x00000000
251        reserved3:       0x00000000
252      - sectname:        __apple_namespac
253        segname:         __DWARF
254        addr:            0x0000000100003242
255        size:            36
256        offset:          0x00002242
257        align:           0
258        reloff:          0x00000000
259        nreloc:          0
260        flags:           0x00000000
261        reserved1:       0x00000000
262        reserved2:       0x00000000
263        reserved3:       0x00000000
264      - sectname:        __apple_types
265        segname:         __DWARF
266        addr:            0x0000000100003266
267        size:            114
268        offset:          0x00002266
269        align:           0
270        reloff:          0x00000000
271        nreloc:          0
272        flags:           0x00000000
273        reserved1:       0x00000000
274        reserved2:       0x00000000
275        reserved3:       0x00000000
276      - sectname:        __apple_objc
277        segname:         __DWARF
278        addr:            0x00000001000032D8
279        size:            36
280        offset:          0x000022D8
281        align:           0
282        reloff:          0x00000000
283        nreloc:          0
284        flags:           0x00000000
285        reserved1:       0x00000000
286        reserved2:       0x00000000
287        reserved3:       0x00000000
288DWARF:           
289  debug_abbrev:     
290    - Code:            0x00000001
291      Tag:             DW_TAG_compile_unit
292      Children:        DW_CHILDREN_yes
293      Attributes:      
294        - Attribute:       DW_AT_producer
295          Form:            DW_FORM_strp
296        - Attribute:       DW_AT_language
297          Form:            DW_FORM_data2
298        - Attribute:       DW_AT_name
299          Form:            DW_FORM_strp
300        - Attribute:       DW_AT_stmt_list
301          Form:            DW_FORM_sec_offset
302        - Attribute:       DW_AT_comp_dir
303          Form:            DW_FORM_strp
304        - Attribute:       DW_AT_low_pc
305          Form:            DW_FORM_addr
306        - Attribute:       DW_AT_high_pc
307          Form:            DW_FORM_data4
308    - Code:            0x00000002
309      Tag:             DW_TAG_subprogram
310      Children:        DW_CHILDREN_yes
311      Attributes:      
312        - Attribute:       DW_AT_low_pc
313          Form:            DW_FORM_addr
314        - Attribute:       DW_AT_high_pc
315          Form:            DW_FORM_data4
316        - Attribute:       DW_AT_frame_base
317          Form:            DW_FORM_exprloc
318        - Attribute:       DW_AT_name
319          Form:            DW_FORM_strp
320        - Attribute:       DW_AT_decl_file
321          Form:            DW_FORM_data1
322        - Attribute:       DW_AT_decl_line
323          Form:            DW_FORM_data1
324        - Attribute:       DW_AT_prototyped
325          Form:            DW_FORM_flag_present
326        - Attribute:       DW_AT_type
327          Form:            DW_FORM_ref4
328        - Attribute:       DW_AT_external
329          Form:            DW_FORM_flag_present
330    - Code:            0x00000003
331      Tag:             DW_TAG_formal_parameter
332      Children:        DW_CHILDREN_no
333      Attributes:      
334        - Attribute:       DW_AT_location
335          Form:            DW_FORM_exprloc
336        - Attribute:       DW_AT_name
337          Form:            DW_FORM_strp
338        - Attribute:       DW_AT_decl_file
339          Form:            DW_FORM_data1
340        - Attribute:       DW_AT_decl_line
341          Form:            DW_FORM_data1
342        - Attribute:       DW_AT_type
343          Form:            DW_FORM_ref4
344    - Code:            0x00000004
345      Tag:             DW_TAG_base_type
346      Children:        DW_CHILDREN_no
347      Attributes:      
348        - Attribute:       DW_AT_name
349          Form:            DW_FORM_strp
350        - Attribute:       DW_AT_encoding
351          Form:            DW_FORM_data1
352        - Attribute:       DW_AT_byte_size
353          Form:            DW_FORM_data1
354    - Code:            0x00000005
355      Tag:             DW_TAG_pointer_type
356      Children:        DW_CHILDREN_no
357      Attributes:      
358        - Attribute:       DW_AT_type
359          Form:            DW_FORM_ref4
360...
361
362#CHECK: DWARF:
363#CHECK:   debug_abbrev:
364#CHECK:     - Code:            0x00000001
365#CHECK:       Tag:             DW_TAG_compile_unit
366#CHECK:       Children:        DW_CHILDREN_yes
367#CHECK:       Attributes:
368#CHECK:         - Attribute:       DW_AT_producer
369#CHECK:           Form:            DW_FORM_strp
370#CHECK:         - Attribute:       DW_AT_language
371#CHECK:           Form:            DW_FORM_data2
372#CHECK:         - Attribute:       DW_AT_name
373#CHECK:           Form:            DW_FORM_strp
374#CHECK:         - Attribute:       DW_AT_stmt_list
375#CHECK:           Form:            DW_FORM_sec_offset
376#CHECK:         - Attribute:       DW_AT_comp_dir
377#CHECK:           Form:            DW_FORM_strp
378#CHECK:         - Attribute:       DW_AT_low_pc
379#CHECK:           Form:            DW_FORM_addr
380#CHECK:         - Attribute:       DW_AT_high_pc
381#CHECK:           Form:            DW_FORM_data4
382#CHECK:     - Code:            0x00000002
383#CHECK:       Tag:             DW_TAG_subprogram
384#CHECK:       Children:        DW_CHILDREN_yes
385#CHECK:       Attributes:
386#CHECK:         - Attribute:       DW_AT_low_pc
387#CHECK:           Form:            DW_FORM_addr
388#CHECK:         - Attribute:       DW_AT_high_pc
389#CHECK:           Form:            DW_FORM_data4
390#CHECK:         - Attribute:       DW_AT_frame_base
391#CHECK:           Form:            DW_FORM_exprloc
392#CHECK:         - Attribute:       DW_AT_name
393#CHECK:           Form:            DW_FORM_strp
394#CHECK:         - Attribute:       DW_AT_decl_file
395#CHECK:           Form:            DW_FORM_data1
396#CHECK:         - Attribute:       DW_AT_decl_line
397#CHECK:           Form:            DW_FORM_data1
398#CHECK:         - Attribute:       DW_AT_prototyped
399#CHECK:           Form:            DW_FORM_flag_present
400#CHECK:         - Attribute:       DW_AT_type
401#CHECK:           Form:            DW_FORM_ref4
402#CHECK:         - Attribute:       DW_AT_external
403#CHECK:           Form:            DW_FORM_flag_present
404#CHECK:     - Code:            0x00000003
405#CHECK:       Tag:             DW_TAG_formal_parameter
406#CHECK:       Children:        DW_CHILDREN_no
407#CHECK:       Attributes:
408#CHECK:         - Attribute:       DW_AT_location
409#CHECK:           Form:            DW_FORM_exprloc
410#CHECK:         - Attribute:       DW_AT_name
411#CHECK:           Form:            DW_FORM_strp
412#CHECK:         - Attribute:       DW_AT_decl_file
413#CHECK:           Form:            DW_FORM_data1
414#CHECK:         - Attribute:       DW_AT_decl_line
415#CHECK:           Form:            DW_FORM_data1
416#CHECK:         - Attribute:       DW_AT_type
417#CHECK:           Form:            DW_FORM_ref4
418#CHECK:     - Code:            0x00000004
419#CHECK:       Tag:             DW_TAG_base_type
420#CHECK:       Children:        DW_CHILDREN_no
421#CHECK:       Attributes:
422#CHECK:         - Attribute:       DW_AT_name
423#CHECK:           Form:            DW_FORM_strp
424#CHECK:         - Attribute:       DW_AT_encoding
425#CHECK:           Form:            DW_FORM_data1
426#CHECK:         - Attribute:       DW_AT_byte_size
427#CHECK:           Form:            DW_FORM_data1
428#CHECK:     - Code:            0x00000005
429#CHECK:       Tag:             DW_TAG_pointer_type
430#CHECK:       Children:        DW_CHILDREN_no
431#CHECK:       Attributes:
432#CHECK:         - Attribute:       DW_AT_type
433#CHECK:           Form:            DW_FORM_ref4
434