# RUN: yaml2obj %s | obj2yaml | FileCheck %s

--- !mach-o
FileHeader:      
  magic:           0xFEEDFACF
  cputype:         0x01000007
  cpusubtype:      0x00000003
  filetype:        0x0000000A
  ncmds:           7
  sizeofcmds:      1848
  flags:           0x00000000
  reserved:        0x00000000
LoadCommands:    
  - cmd:             LC_UUID
    cmdsize:         24
    uuid:            B4D48511-37F4-3ED4-AFA7-1683DCE69AC4
  - cmd:             LC_SYMTAB
    cmdsize:         24
    symoff:          4096
    nsyms:           2
    stroff:          4128
    strsize:         28
  - cmd:             LC_SEGMENT_64
    cmdsize:         72
    segname:         __PAGEZERO
    vmaddr:          0
    vmsize:          4294967296
    fileoff:         0
    filesize:        0
    maxprot:         0
    initprot:        0
    nsects:          0
    flags:           0
  - cmd:             LC_SEGMENT_64
    cmdsize:         472
    segname:         __TEXT
    vmaddr:          4294967296
    vmsize:          4096
    fileoff:         0
    filesize:        0
    maxprot:         7
    initprot:        5
    nsects:          5
    flags:           0
    Sections:        
      - sectname:        __text
        segname:         __TEXT
        addr:            0x0000000100000F50
        size:            52
        offset:          0x00000000
        align:           4
        reloff:          0x00000000
        nreloc:          0
        flags:           0x80000400
        reserved1:       0x00000000
        reserved2:       0x00000000
        reserved3:       0x00000000
      - sectname:        __stubs
        segname:         __TEXT
        addr:            0x0000000100000F84
        size:            6
        offset:          0x00000000
        align:           1
        reloff:          0x00000000
        nreloc:          0
        flags:           0x80000408
        reserved1:       0x00000000
        reserved2:       0x00000006
        reserved3:       0x00000000
      - sectname:        __stub_helper
        segname:         __TEXT
        addr:            0x0000000100000F8C
        size:            26
        offset:          0x00000000
        align:           2
        reloff:          0x00000000
        nreloc:          0
        flags:           0x80000400
        reserved1:       0x00000000
        reserved2:       0x00000000
        reserved3:       0x00000000
      - sectname:        __cstring
        segname:         __TEXT
        addr:            0x0000000100000FA6
        size:            14
        offset:          0x00000000
        align:           0
        reloff:          0x00000000
        nreloc:          0
        flags:           0x00000002
        reserved1:       0x00000000
        reserved2:       0x00000000
        reserved3:       0x00000000
      - sectname:        __unwind_info
        segname:         __TEXT
        addr:            0x0000000100000FB4
        size:            72
        offset:          0x00000000
        align:           2
        reloff:          0x00000000
        nreloc:          0
        flags:           0x00000000
        reserved1:       0x00000000
        reserved2:       0x00000000
        reserved3:       0x00000000
  - cmd:             LC_SEGMENT_64
    cmdsize:         232
    segname:         __DATA
    vmaddr:          4294971392
    vmsize:          4096
    fileoff:         0
    filesize:        0
    maxprot:         7
    initprot:        3
    nsects:          2
    flags:           0
    Sections:        
      - sectname:        __nl_symbol_ptr
        segname:         __DATA
        addr:            0x0000000100001000
        size:            16
        offset:          0x00000000
        align:           3
        reloff:          0x00000000
        nreloc:          0
        flags:           0x00000006
        reserved1:       0x00000001
        reserved2:       0x00000000
        reserved3:       0x00000000
      - sectname:        __la_symbol_ptr
        segname:         __DATA
        addr:            0x0000000100001010
        size:            8
        offset:          0x00000000
        align:           3
        reloff:          0x00000000
        nreloc:          0
        flags:           0x00000007
        reserved1:       0x00000003
        reserved2:       0x00000000
        reserved3:       0x00000000
  - cmd:             LC_SEGMENT_64
    cmdsize:         72
    segname:         __LINKEDIT
    vmaddr:          4294975488
    vmsize:          4096
    fileoff:         4096
    filesize:        60
    maxprot:         7
    initprot:        1
    nsects:          0
    flags:           0
  - cmd:             LC_SEGMENT_64
    cmdsize:         952
    segname:         __DWARF
    vmaddr:          4294979584
    vmsize:          4096
    fileoff:         8192
    filesize:        764
    maxprot:         7
    initprot:        3
    nsects:          11
    flags:           0
    Sections:        
      - sectname:        __debug_line
        segname:         __DWARF
        addr:            0x0000000100003000
        size:            69
        offset:          0x00002000
        align:           0
        reloff:          0x00000000
        nreloc:          0
        flags:           0x00000000
        reserved1:       0x00000000
        reserved2:       0x00000000
        reserved3:       0x00000000
      - sectname:        __debug_pubnames
        segname:         __DWARF
        addr:            0x0000000100003045
        size:            27
        offset:          0x00002045
        align:           0
        reloff:          0x00000000
        nreloc:          0
        flags:           0x00000000
        reserved1:       0x00000000
        reserved2:       0x00000000
        reserved3:       0x00000000
      - sectname:        __debug_pubtypes
        segname:         __DWARF
        addr:            0x0000000100003060
        size:            35
        offset:          0x00002060
        align:           0
        reloff:          0x00000000
        nreloc:          0
        flags:           0x00000000
        reserved1:       0x00000000
        reserved2:       0x00000000
        reserved3:       0x00000000
      - sectname:        __debug_aranges
        segname:         __DWARF
        addr:            0x0000000100003083
        size:            48
        offset:          0x00002083
        align:           0
        reloff:          0x00000000
        nreloc:          0
        flags:           0x00000000
        reserved1:       0x00000000
        reserved2:       0x00000000
        reserved3:       0x00000000
      - sectname:        __debug_info
        segname:         __DWARF
        addr:            0x00000001000030B3
        size:            121
        offset:          0x000020B3
        align:           0
        reloff:          0x00000000
        nreloc:          0
        flags:           0x00000000
        reserved1:       0x00000000
        reserved2:       0x00000000
        reserved3:       0x00000000
      - sectname:        __debug_abbrev
        segname:         __DWARF
        addr:            0x000000010000312C
        size:            76
        offset:          0x0000212C
        align:           0
        reloff:          0x00000000
        nreloc:          0
        flags:           0x00000000
        reserved1:       0x00000000
        reserved2:       0x00000000
        reserved3:       0x00000000
      - sectname:        __debug_str
        segname:         __DWARF
        addr:            0x0000000100003178
        size:            142
        offset:          0x00002178
        align:           0
        reloff:          0x00000000
        nreloc:          0
        flags:           0x00000000
        reserved1:       0x00000000
        reserved2:       0x00000000
        reserved3:       0x00000000
      - sectname:        __apple_names
        segname:         __DWARF
        addr:            0x0000000100003206
        size:            60
        offset:          0x00002206
        align:           0
        reloff:          0x00000000
        nreloc:          0
        flags:           0x00000000
        reserved1:       0x00000000
        reserved2:       0x00000000
        reserved3:       0x00000000
      - sectname:        __apple_namespac
        segname:         __DWARF
        addr:            0x0000000100003242
        size:            36
        offset:          0x00002242
        align:           0
        reloff:          0x00000000
        nreloc:          0
        flags:           0x00000000
        reserved1:       0x00000000
        reserved2:       0x00000000
        reserved3:       0x00000000
      - sectname:        __apple_types
        segname:         __DWARF
        addr:            0x0000000100003266
        size:            114
        offset:          0x00002266
        align:           0
        reloff:          0x00000000
        nreloc:          0
        flags:           0x00000000
        reserved1:       0x00000000
        reserved2:       0x00000000
        reserved3:       0x00000000
      - sectname:        __apple_objc
        segname:         __DWARF
        addr:            0x00000001000032D8
        size:            36
        offset:          0x000022D8
        align:           0
        reloff:          0x00000000
        nreloc:          0
        flags:           0x00000000
        reserved1:       0x00000000
        reserved2:       0x00000000
        reserved3:       0x00000000
LinkEditData:    
  NameList:        
    - n_strx:          2
      n_type:          0x0F
      n_sect:          1
      n_desc:          16
      n_value:         4294967296
    - n_strx:          22
      n_type:          0x0F
      n_sect:          1
      n_desc:          0
      n_value:         4294971216
  StringTable:     
    - ''
    - ''
    - __mh_execute_header
    - _main
DWARF:           
  debug_str:       
    - ''
    - 'clang version 4.0.0 (trunk 288923) (llvm/trunk 288991)'
    - hello_world.c
    - /Users/cbieneman/dev/open-source/llvm-build-rel
    - main
    - argc
    - argv
    - int
    - char
  debug_abbrev:
    - Table:
        - Code:            0x00000001
          Tag:             DW_TAG_compile_unit
          Children:        DW_CHILDREN_yes
          Attributes:
            - Attribute:       DW_AT_producer
              Form:            DW_FORM_strp
            - Attribute:       DW_AT_language
              Form:            DW_FORM_data2
            - Attribute:       DW_AT_name
              Form:            DW_FORM_strp
            - Attribute:       DW_AT_stmt_list
              Form:            DW_FORM_sec_offset
            - Attribute:       DW_AT_comp_dir
              Form:            DW_FORM_strp
            - Attribute:       DW_AT_low_pc
              Form:            DW_FORM_addr
            - Attribute:       DW_AT_high_pc
              Form:            DW_FORM_data4
        - Code:            0x00000002
          Tag:             DW_TAG_subprogram
          Children:        DW_CHILDREN_yes
          Attributes:
            - Attribute:       DW_AT_low_pc
              Form:            DW_FORM_addr
            - Attribute:       DW_AT_high_pc
              Form:            DW_FORM_data4
            - Attribute:       DW_AT_frame_base
              Form:            DW_FORM_exprloc
            - Attribute:       DW_AT_name
              Form:            DW_FORM_strp
            - Attribute:       DW_AT_decl_file
              Form:            DW_FORM_data1
            - Attribute:       DW_AT_decl_line
              Form:            DW_FORM_data1
            - Attribute:       DW_AT_prototyped
              Form:            DW_FORM_flag_present
            - Attribute:       DW_AT_type
              Form:            DW_FORM_ref4
            - Attribute:       DW_AT_external
              Form:            DW_FORM_flag_present
        - Code:            0x00000003
          Tag:             DW_TAG_formal_parameter
          Children:        DW_CHILDREN_no
          Attributes:
            - Attribute:       DW_AT_location
              Form:            DW_FORM_exprloc
            - Attribute:       DW_AT_name
              Form:            DW_FORM_strp
            - Attribute:       DW_AT_decl_file
              Form:            DW_FORM_data1
            - Attribute:       DW_AT_decl_line
              Form:            DW_FORM_data1
            - Attribute:       DW_AT_type
              Form:            DW_FORM_ref4
        - Code:            0x00000004
          Tag:             DW_TAG_base_type
          Children:        DW_CHILDREN_no
          Attributes:
            - Attribute:       DW_AT_name
              Form:            DW_FORM_strp
            - Attribute:       DW_AT_encoding
              Form:            DW_FORM_data1
            - Attribute:       DW_AT_byte_size
              Form:            DW_FORM_data1
        - Code:            0x00000005
          Tag:             DW_TAG_pointer_type
          Children:        DW_CHILDREN_no
          Attributes:
            - Attribute:       DW_AT_type
              Form:            DW_FORM_ref4
  debug_aranges:   
    - Length:              44
      Version:             2
      CuOffset:            0
      AddressSize:         8
      SegmentSelectorSize: 0
      Descriptors:     
        - Address:         0x0000000100000F50
          Length:          52
  debug_pubnames:  
    Length:          23
    Version:         2
    UnitOffset:      0
    UnitSize:        121
    Entries:         
      - DieOffset:       0x0000002A
        Name:            main
  debug_pubtypes:  
    Length:          31
    Version:         2
    UnitOffset:      0
    UnitSize:        121
    Entries:         
      - DieOffset:       0x00000060
        Name:            int
      - DieOffset:       0x00000071
        Name:            char
  debug_info:      
    - Length:          117
      Version:         4
      AbbrOffset:      0
      AddrSize:        8
      Entries:         
        - AbbrCode:        0x00000001
          Values:          
            - Value:           0x0000000000000001
            - Value:           0x000000000000000C
            - Value:           0x0000000000000038
            - Value:           0x0000000000000000
            - Value:           0x0000000000000046
            - Value:           0x0000000100000F50
            - Value:           0x0000000000000034
        - AbbrCode:        0x00000002
          Values:          
            - Value:           0x0000000100000F50
            - Value:           0x0000000000000034
            - Value:           0x0000000000000001
              BlockData:       
                - 0x56
            - Value:           0x0000000000000076
            - Value:           0x0000000000000001
            - Value:           0x0000000000000003
            - Value:           0x0000000000000001
            - Value:           0x0000000000000060
            - Value:           0x0000000000000001
        - AbbrCode:        0x00000003
          Values:          
            - Value:           0x0000000000000002
              BlockData:       
                - 0x91
                - 0x78
            - Value:           0x000000000000007B
            - Value:           0x0000000000000001
            - Value:           0x0000000000000003
            - Value:           0x0000000000000060
        - AbbrCode:        0x00000003
          Values:          
            - Value:           0x0000000000000002
              BlockData:       
                - 0x91
                - 0x70
            - Value:           0x0000000000000080
            - Value:           0x0000000000000001
            - Value:           0x0000000000000003
            - Value:           0x0000000000000067
        - AbbrCode:        0x00000000
          Values:          
        - AbbrCode:        0x00000004
          Values:          
            - Value:           0x0000000000000085
            - Value:           0x0000000000000005
            - Value:           0x0000000000000004
        - AbbrCode:        0x00000005
          Values:          
            - Value:           0x000000000000006C
        - AbbrCode:        0x00000005
          Values:          
            - Value:           0x0000000000000071
        - AbbrCode:        0x00000004
          Values:          
            - Value:           0x0000000000000089
            - Value:           0x0000000000000006
            - Value:           0x0000000000000001
        - AbbrCode:        0x00000000
          Values:          
  debug_line:      
    - Length:          65
      Version:         2
      PrologueLength:  36
      MinInstLength:   1
      DefaultIsStmt:   1
      LineBase:        251
      LineRange:       14
      OpcodeBase:      13
      StandardOpcodeLengths: [ 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1 ]
      Files:           
        - Name:            hello_world.c
          DirIdx:          0
          ModTime:         0
          Length:          0
      Opcodes:         
        - Opcode:          DW_LNS_extended_op
          ExtLen:          9
          SubOpcode:       DW_LNE_set_address
          Data:            4294971216
        - Opcode:          0x14
          Data:            4294971216
        - Opcode:          DW_LNS_set_column
          Data:            3
        - Opcode:          DW_LNS_set_prologue_end
          Data:            3
        - Opcode:          DW_LNS_const_add_pc
          Data:            3
        - Opcode:          0xBB
          Data:            3
        - Opcode:          0xBB
          Data:            3
        - Opcode:          DW_LNS_advance_pc
          Data:            11
        - Opcode:          DW_LNS_extended_op
          ExtLen:          1
          SubOpcode:       DW_LNE_end_sequence
          Data:            11
...

#      CHECK: debug_line:
# CHECK-NEXT:   - Length:          65
# CHECK-NEXT:     Version:         2
# CHECK-NEXT:     PrologueLength:  36
# CHECK-NEXT:     MinInstLength:   1
# CHECK-NEXT:     DefaultIsStmt:   1
# CHECK-NEXT:     LineBase:        251
# CHECK-NEXT:     LineRange:       14
# CHECK-NEXT:     OpcodeBase:      13
# CHECK-NEXT:     StandardOpcodeLengths: [ 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1 ]
# CHECK-NEXT:     Files:
# CHECK-NEXT:       - Name:            hello_world.c
# CHECK-NEXT:         DirIdx:          0
# CHECK-NEXT:         ModTime:         0
# CHECK-NEXT:         Length:          0
# CHECK-NEXT:     Opcodes:
# CHECK-NEXT:       - Opcode:          DW_LNS_extended_op
# CHECK-NEXT:         ExtLen:          9
# CHECK-NEXT:         SubOpcode:       DW_LNE_set_address
# CHECK-NEXT:         Data:            4294971216
# CHECK-NEXT:       - Opcode:          0x14
# CHECK-NEXT:         Data:            0
# CHECK-NEXT:       - Opcode:          DW_LNS_set_column
# CHECK-NEXT:         Data:            3
# CHECK-NEXT:       - Opcode:          DW_LNS_set_prologue_end
# CHECK-NEXT:         Data:            0
# CHECK-NEXT:       - Opcode:          DW_LNS_const_add_pc
# CHECK-NEXT:         Data:            0
# CHECK-NEXT:       - Opcode:          0xBB
# CHECK-NEXT:         Data:            0
# CHECK-NEXT:       - Opcode:          0xBB
# CHECK-NEXT:         Data:            0
# CHECK-NEXT:       - Opcode:          DW_LNS_advance_pc
# CHECK-NEXT:         Data:            11
# CHECK-NEXT:       - Opcode:          DW_LNS_extended_op
# CHECK-NEXT:         ExtLen:          1
# CHECK-NEXT:         SubOpcode:       DW_LNE_end_sequence
# CHECK-NEXT:         Data:            0
# CHECK-NEXT: ...
