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
288LinkEditData:    
289  NameList:        
290    - n_strx:          2
291      n_type:          0x0F
292      n_sect:          1
293      n_desc:          16
294      n_value:         4294967296
295    - n_strx:          22
296      n_type:          0x0F
297      n_sect:          1
298      n_desc:          0
299      n_value:         4294971216
300  StringTable:     
301    - ''
302    - ''
303    - __mh_execute_header
304    - _main
305DWARF:           
306  debug_abbrev:    
307    - Code:            0x00000001
308      Tag:             DW_TAG_compile_unit
309      Children:        DW_CHILDREN_yes
310      Attributes:      
311        - Attribute:       DW_AT_producer
312          Form:            DW_FORM_strp
313        - Attribute:       DW_AT_language
314          Form:            DW_FORM_data2
315        - Attribute:       DW_AT_name
316          Form:            DW_FORM_strp
317        - Attribute:       DW_AT_stmt_list
318          Form:            DW_FORM_sec_offset
319        - Attribute:       DW_AT_comp_dir
320          Form:            DW_FORM_strp
321        - Attribute:       DW_AT_low_pc
322          Form:            DW_FORM_addr
323        - Attribute:       DW_AT_high_pc
324          Form:            DW_FORM_data4
325    - Code:            0x00000002
326      Tag:             DW_TAG_subprogram
327      Children:        DW_CHILDREN_yes
328      Attributes:      
329        - Attribute:       DW_AT_low_pc
330          Form:            DW_FORM_addr
331        - Attribute:       DW_AT_high_pc
332          Form:            DW_FORM_data4
333        - Attribute:       DW_AT_frame_base
334          Form:            DW_FORM_exprloc
335        - Attribute:       DW_AT_name
336          Form:            DW_FORM_strp
337        - Attribute:       DW_AT_decl_file
338          Form:            DW_FORM_data1
339        - Attribute:       DW_AT_decl_line
340          Form:            DW_FORM_data1
341        - Attribute:       DW_AT_prototyped
342          Form:            DW_FORM_flag_present
343        - Attribute:       DW_AT_type
344          Form:            DW_FORM_ref4
345        - Attribute:       DW_AT_external
346          Form:            DW_FORM_flag_present
347    - Code:            0x00000003
348      Tag:             DW_TAG_formal_parameter
349      Children:        DW_CHILDREN_no
350      Attributes:      
351        - Attribute:       DW_AT_location
352          Form:            DW_FORM_exprloc
353        - Attribute:       DW_AT_name
354          Form:            DW_FORM_strp
355        - Attribute:       DW_AT_decl_file
356          Form:            DW_FORM_data1
357        - Attribute:       DW_AT_decl_line
358          Form:            DW_FORM_data1
359        - Attribute:       DW_AT_type
360          Form:            DW_FORM_ref4
361    - Code:            0x00000004
362      Tag:             DW_TAG_base_type
363      Children:        DW_CHILDREN_no
364      Attributes:      
365        - Attribute:       DW_AT_name
366          Form:            DW_FORM_strp
367        - Attribute:       DW_AT_encoding
368          Form:            DW_FORM_data1
369        - Attribute:       DW_AT_byte_size
370          Form:            DW_FORM_data1
371    - Code:            0x00000005
372      Tag:             DW_TAG_pointer_type
373      Children:        DW_CHILDREN_no
374      Attributes:      
375        - Attribute:       DW_AT_type
376          Form:            DW_FORM_ref4
377  debug_aranges:   
378    - Length:
379        TotalLength:     44
380      Version:         2
381      CuOffset:        0
382      AddrSize:        8
383      SegSize:         0
384      Descriptors:     
385        - Address:         0x0000000100000F50
386          Length:          52
387  debug_info:      
388    - Length:
389        TotalLength:     117
390      Version:         4
391      AbbrOffset:      0
392      AddrSize:        8
393      Entries:         
394        - AbbrCode:        0x00000001
395          Values:          
396            - Value:           0x0000000000000001
397            - Value:           0x000000000000000C
398            - Value:           0x0000000000000038
399            - Value:           0x0000000000000000
400            - Value:           0x0000000000000046
401            - Value:           0x0000000100000F50
402            - Value:           0x0000000000000034
403        - AbbrCode:        0x00000002
404          Values:          
405            - Value:           0x0000000100000F50
406            - Value:           0x0000000000000034
407            - Value:           0x0000000000000001
408              BlockData:       
409                - 0x56
410            - Value:           0x0000000000000076
411            - Value:           0x0000000000000001
412            - Value:           0x0000000000000003
413            - Value:           0x0000000000000001
414            - Value:           0x0000000000000060
415            - Value:           0x0000000000000001
416        - AbbrCode:        0x00000003
417          Values:          
418            - Value:           0x0000000000000002
419              BlockData:       
420                - 0x91
421                - 0x78
422            - Value:           0x000000000000007B
423            - Value:           0x0000000000000001
424            - Value:           0x0000000000000003
425            - Value:           0x0000000000000060
426        - AbbrCode:        0x00000003
427          Values:          
428            - Value:           0x0000000000000002
429              BlockData:       
430                - 0x91
431                - 0x70
432            - Value:           0x0000000000000080
433            - Value:           0x0000000000000001
434            - Value:           0x0000000000000003
435            - Value:           0x0000000000000067
436        - AbbrCode:        0x00000000
437          Values:          
438        - AbbrCode:        0x00000004
439          Values:          
440            - Value:           0x0000000000000085
441            - Value:           0x0000000000000005
442            - Value:           0x0000000000000004
443        - AbbrCode:        0x00000005
444          Values:          
445            - Value:           0x000000000000006C
446        - AbbrCode:        0x00000005
447          Values:          
448            - Value:           0x0000000000000071
449        - AbbrCode:        0x00000004
450          Values:          
451            - Value:           0x0000000000000089
452            - Value:           0x0000000000000006
453            - Value:           0x0000000000000001
454        - AbbrCode:        0x00000000
455          Values:          
456  debug_line:      
457    - Length:
458        TotalLength:     65
459      Version:         2
460      PrologueLength:  36
461      MinInstLength:   1
462      DefaultIsStmt:   1
463      LineBase:        251
464      LineRange:       14
465      OpcodeBase:      13
466      StandardOpcodeLengths: 
467        - 0
468        - 1
469        - 1
470        - 1
471        - 1
472        - 0
473        - 0
474        - 0
475        - 1
476        - 0
477        - 0
478        - 1
479      IncludeDirs:     
480      Files:           
481        - Name:            hello_world.c
482          DirIdx:          0
483          ModTime:         0
484          Length:          0
485      Opcodes:         
486        - Opcode:          DW_LNS_extended_op
487          ExtLen:          9
488          SubOpcode:       DW_LNE_set_address
489          Data:            4294971216
490        - Opcode:          0x14
491          Data:            4294971216
492        - Opcode:          DW_LNS_set_column
493          Data:            3
494        - Opcode:          DW_LNS_set_prologue_end
495          Data:            3
496        - Opcode:          DW_LNS_const_add_pc
497          Data:            3
498        - Opcode:          0xBB
499          Data:            3
500        - Opcode:          0xBB
501          Data:            3
502        - Opcode:          DW_LNS_advance_pc
503          Data:            11
504        - Opcode:          DW_LNS_extended_op
505          ExtLen:          1
506          SubOpcode:       DW_LNE_end_sequence
507          Data:            11
508...
509...
510
511
512#CHECK: DWARF:
513#CHECK:   debug_info:
514#CHECK:     - Length:
515#CHECK:         TotalLength:     117
516#CHECK:       Version:         4
517#CHECK:       AbbrOffset:      0
518#CHECK:       AddrSize:        8
519#CHECK:       Entries:
520#CHECK:         - AbbrCode:        0x00000001
521#CHECK:           Values:
522#CHECK:             - Value:           0x0000000000000001
523#CHECK:             - Value:           0x000000000000000C
524#CHECK:             - Value:           0x0000000000000038
525#CHECK:             - Value:           0x0000000000000000
526#CHECK:             - Value:           0x0000000000000046
527#CHECK:             - Value:           0x0000000100000F50
528#CHECK:             - Value:           0x0000000000000034
529#CHECK:         - AbbrCode:        0x00000002
530#CHECK:           Values:
531#CHECK:             - Value:           0x0000000100000F50
532#CHECK:             - Value:           0x0000000000000034
533#CHECK:             - Value:           0x0000000000000001
534#CHECK:               BlockData:
535#CHECK:                 - 0x56
536#CHECK:             - Value:           0x0000000000000076
537#CHECK:             - Value:           0x0000000000000001
538#CHECK:             - Value:           0x0000000000000003
539#CHECK:             - Value:           0x0000000000000001
540#CHECK:             - Value:           0x0000000000000060
541#CHECK:             - Value:           0x0000000000000001
542#CHECK:         - AbbrCode:        0x00000003
543#CHECK:           Values:
544#CHECK:             - Value:           0x0000000000000002
545#CHECK:               BlockData:
546#CHECK:                 - 0x91
547#CHECK:                 - 0x78
548#CHECK:             - Value:           0x000000000000007B
549#CHECK:             - Value:           0x0000000000000001
550#CHECK:             - Value:           0x0000000000000003
551#CHECK:             - Value:           0x0000000000000060
552#CHECK:         - AbbrCode:        0x00000003
553#CHECK:           Values:
554#CHECK:             - Value:           0x0000000000000002
555#CHECK:               BlockData:
556#CHECK:                 - 0x91
557#CHECK:                 - 0x70
558#CHECK:             - Value:           0x0000000000000080
559#CHECK:             - Value:           0x0000000000000001
560#CHECK:             - Value:           0x0000000000000003
561#CHECK:             - Value:           0x0000000000000067
562#CHECK:         - AbbrCode:        0x00000000
563#CHECK:           Values:
564#CHECK:         - AbbrCode:        0x00000004
565#CHECK:           Values:
566#CHECK:             - Value:           0x0000000000000085
567#CHECK:             - Value:           0x0000000000000005
568#CHECK:             - Value:           0x0000000000000004
569#CHECK:         - AbbrCode:        0x00000005
570#CHECK:           Values:
571#CHECK:             - Value:           0x000000000000006C
572#CHECK:         - AbbrCode:        0x00000005
573#CHECK:           Values:
574#CHECK:             - Value:           0x0000000000000071
575#CHECK:         - AbbrCode:        0x00000004
576#CHECK:           Values:
577#CHECK:             - Value:           0x0000000000000089
578#CHECK:             - Value:           0x0000000000000006
579#CHECK:             - Value:           0x0000000000000001
580#CHECK:         - AbbrCode:        0x00000000
581#CHECK:           Values:
582