## For mach-o files we might have a universal (fat) mach-o file which
## complicates the GSYM creation process as we need to be prepared to parse
## more than one architecture. If no architectures are specified or more than
## one architectures are specified on the command line, then all architectures
## will be parsed and each GSYM file will have the architecture name appended
## as an extension (.armv7 or .arm64). If a single architecture is specified,
## then the GSYM file will be created in the normal location.

# RUN: yaml2obj %s -o %t
# RUN: llvm-gsymutil --convert %t --arch armv7 -o %t.armv7.gsym 2>&1 | FileCheck %s --check-prefix=ARMV7
# RUN: llvm-gsymutil --convert %t --arch arm64 -o %t.arm64.gsym 2>&1 | FileCheck %s --check-prefix=ARM64
# RUN: llvm-gsymutil --convert %t -o %t.gsym 2>&1 | FileCheck %s --check-prefix=FAT

# ARMV7:      Input file: {{.*\.yaml\.tmp}}
# ARMV7-NEXT: Output file (armv7): {{.*\.yaml\.tmp\.armv7\.gsym}}
# ARMV7-NEXT: Loaded 1 functions from DWARF.
# ARMV7-NEXT: Loaded 1 functions from symbol table.
# ARMV7: Pruned 1 functions, ended with 1 total

# ARM64:      Input file: {{.*\.yaml\.tmp}}
# ARM64-NEXT: Output file (arm64): {{.*\.yaml\.tmp\.arm64\.gsym}}
# ARM64-NEXT: Loaded 1 functions from DWARF.
# ARM64-NEXT: Loaded 1 functions from symbol table.
# ARM64: Pruned 1 functions, ended with 1 total

# FAT:      Input file: {{.*\.yaml\.tmp}}
# FAT-NEXT: Output file (armv7): {{.*\.yaml\.tmp\.gsym\.armv7}}
# FAT-NEXT: Loaded 1 functions from DWARF.
# FAT-NEXT: Loaded 1 functions from symbol table.
# FAT: Pruned 1 functions, ended with 1 total
# FAT-NEXT: Output file (arm64): {{.*\.yaml\.tmp\.gsym\.arm64}}
# FAT-NEXT: Loaded 1 functions from DWARF.
# FAT-NEXT: Loaded 1 functions from symbol table.
# FAT: Pruned 1 functions, ended with 1 total

--- !fat-mach-o
FatHeader:
  magic:           0xCAFEBABE
  nfat_arch:       2
FatArchs:
  - cputype:         0x0000000C
    cpusubtype:      0x00000009
    offset:          0x0000000000000040
    size:            8884
    align:           5
  - cputype:         0x0100000C
    cpusubtype:      0x00000000
    offset:          0x0000000000002300
    size:            8908
    align:           5
Slices:
  - !mach-o
    FileHeader:
      magic:           0xFEEDFACE
      cputype:         0x0000000C
      cpusubtype:      0x00000009
      filetype:        0x0000000A
      ncmds:           6
      sizeofcmds:      1088
      flags:           0x00000000
    LoadCommands:
      - cmd:             LC_UUID
        cmdsize:         24
        uuid:            7B08A997-C561-3D42-B774-0C3CD02345C7
      - cmd:             LC_SYMTAB
        cmdsize:         24
        symoff:          4096
        nsyms:           2
        stroff:          4120
        strsize:         28
      - cmd:             LC_SEGMENT
        cmdsize:         56
        segname:         __PAGEZERO
        vmaddr:          0
        vmsize:          16384
        fileoff:         0
        filesize:        0
        maxprot:         0
        initprot:        0
        nsects:          0
        flags:           0
      - cmd:             LC_SEGMENT
        cmdsize:         124
        segname:         __TEXT
        vmaddr:          16384
        vmsize:          32768
        fileoff:         0
        filesize:        0
        maxprot:         5
        initprot:        5
        nsects:          1
        flags:           0
        Sections:
          - sectname:        __text
            segname:         __TEXT
            addr:            0x000000000000BFF0
            size:            16
            offset:          0x00000000
            align:           1
            reloff:          0x00000000
            nreloc:          0
            flags:           0x80000400
            reserved1:       0x00000000
            reserved2:       0x00000000
            reserved3:       0x00000000
            content:         CEFAEDFE0C000000090000000A000000
      - cmd:             LC_SEGMENT
        cmdsize:         56
        segname:         __LINKEDIT
        vmaddr:          49152
        vmsize:          4096
        fileoff:         4096
        filesize:        52
        maxprot:         1
        initprot:        1
        nsects:          0
        flags:           0
      - cmd:             LC_SEGMENT
        cmdsize:         804
        segname:         __DWARF
        vmaddr:          53248
        vmsize:          4096
        fileoff:         8192
        filesize:        692
        maxprot:         7
        initprot:        3
        nsects:          11
        flags:           0
        Sections:
          - sectname:        __debug_line
            segname:         __DWARF
            addr:            0x000000000000D000
            size:            59
            offset:          0x00002000
            align:           0
            reloff:          0x00000000
            nreloc:          0
            flags:           0x00000000
            reserved1:       0x00000000
            reserved2:       0x00000000
            reserved3:       0x00000000
          - sectname:        __debug_pubnames
            segname:         __DWARF
            addr:            0x000000000000D03B
            size:            27
            offset:          0x0000203B
            align:           0
            reloff:          0x00000000
            nreloc:          0
            flags:           0x00000000
            reserved1:       0x00000000
            reserved2:       0x00000000
            reserved3:       0x00000000
          - sectname:        __debug_pubtypes
            segname:         __DWARF
            addr:            0x000000000000D056
            size:            35
            offset:          0x00002056
            align:           0
            reloff:          0x00000000
            nreloc:          0
            flags:           0x00000000
            reserved1:       0x00000000
            reserved2:       0x00000000
            reserved3:       0x00000000
          - sectname:        __debug_aranges
            segname:         __DWARF
            addr:            0x000000000000D079
            size:            32
            offset:          0x00002079
            align:           0
            reloff:          0x00000000
            nreloc:          0
            flags:           0x00000000
            reserved1:       0x00000000
            reserved2:       0x00000000
            reserved3:       0x00000000
          - sectname:        __debug_info
            segname:         __DWARF
            addr:            0x000000000000D099
            size:            119
            offset:          0x00002099
            align:           0
            reloff:          0x00000000
            nreloc:          0
            flags:           0x00000000
            reserved1:       0x00000000
            reserved2:       0x00000000
            reserved3:       0x00000000
          - sectname:        __debug_abbrev
            segname:         __DWARF
            addr:            0x000000000000D110
            size:            87
            offset:          0x00002110
            align:           0
            reloff:          0x00000000
            nreloc:          0
            flags:           0x00000000
            reserved1:       0x00000000
            reserved2:       0x00000000
            reserved3:       0x00000000
          - sectname:        __debug_str
            segname:         __DWARF
            addr:            0x000000000000D167
            size:            87
            offset:          0x00002167
            align:           0
            reloff:          0x00000000
            nreloc:          0
            flags:           0x00000000
            reserved1:       0x00000000
            reserved2:       0x00000000
            reserved3:       0x00000000
          - sectname:        __apple_names
            segname:         __DWARF
            addr:            0x000000000000D1BE
            size:            60
            offset:          0x000021BE
            align:           0
            reloff:          0x00000000
            nreloc:          0
            flags:           0x00000000
            reserved1:       0x00000000
            reserved2:       0x00000000
            reserved3:       0x00000000
            content:         485341480100000001000000010000000C000000000000000100000001000600000000006A7F9A7C2C0000003F000000010000002600000000000000
          - sectname:        __apple_namespac
            segname:         __DWARF
            addr:            0x000000000000D1FA
            size:            36
            offset:          0x000021FA
            align:           0
            reloff:          0x00000000
            nreloc:          0
            flags:           0x00000000
            reserved1:       0x00000000
            reserved2:       0x00000000
            reserved3:       0x00000000
            content:         485341480100000001000000000000000C000000000000000100000001000600FFFFFFFF
          - sectname:        __apple_types
            segname:         __DWARF
            addr:            0x000000000000D21E
            size:            114
            offset:          0x0000221E
            align:           0
            reloff:          0x00000000
            nreloc:          0
            flags:           0x00000000
            reserved1:       0x00000000
            reserved2:       0x00000000
            reserved3:       0x00000000
            content:         48534148010000000200000002000000180000000000000004000000010006000300050005000B000600060000000000010000003080880B6320957C440000005B0000004E0000000100000059000000240000A4283A0C0000000052000000010000006F00000024000057D77B9300000000
          - sectname:        __apple_objc
            segname:         __DWARF
            addr:            0x000000000000D290
            size:            36
            offset:          0x00002290
            align:           0
            reloff:          0x00000000
            nreloc:          0
            flags:           0x00000000
            reserved1:       0x00000000
            reserved2:       0x00000000
            reserved3:       0x00000000
            content:         485341480100000001000000000000000C000000000000000100000001000600FFFFFFFF
    LinkEditData:
      NameList:
        - n_strx:          2
          n_type:          0x0F
          n_sect:          1
          n_desc:          16
          n_value:         16384
        - n_strx:          22
          n_type:          0x0F
          n_sect:          1
          n_desc:          8
          n_value:         49136
      StringTable:
        - ''
        - ''
        - __mh_execute_header
        - _main
    DWARF:
      debug_str:
        - ''
        - 'Apple clang version 11.0.0 (clang-1100.0.33.17)'
        - main.cpp
        - '/tmp'
        - 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_GNU_pubnames
                  Form:            DW_FORM_flag_present
                - 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_type
                  Form:            DW_FORM_ref_addr
                - Attribute:       DW_AT_external
                  Form:            DW_FORM_flag_present
                - Attribute:       DW_AT_APPLE_isa
                  Form:            DW_FORM_flag
            - 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_ref_addr
            - 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_ref_addr
            - Code:            0x00000006
              Tag:             DW_TAG_const_type
              Children:        DW_CHILDREN_no
              Attributes:
                - Attribute:       DW_AT_type
                  Form:            DW_FORM_ref_addr
      debug_aranges:
        - Length:              28
          Version:             2
          CuOffset:            0
          AddressSize:         4
          SegmentSelectorSize: 0
          Descriptors:
            - Address:         0x000000000000BFF0
              Length:          16
      debug_pubnames:
        Length:          23
        Version:         2
        UnitOffset:      0
        UnitSize:        119
        Entries:
          - DieOffset:       0x00000026
            Name:            main
      debug_pubtypes:
        Length:          31
        Version:         2
        UnitOffset:      0
        UnitSize:        119
        Entries:
          - DieOffset:       0x00000059
            Name:            int
          - DieOffset:       0x0000006F
            Name:            char
      debug_info:
        - Version:         4
          AddrSize:        4
          Entries:
            - AbbrCode:        0x00000001
              Values:
                - Value:           0x0000000000000001
                - Value:           0x0000000000000004
                - Value:           0x0000000000000031
                - Value:           0x0000000000000000
                - Value:           0x000000000000003A
                - Value:           0x0000000000000001
                - Value:           0x000000000000BFF0
                - Value:           0x0000000000000010
            - AbbrCode:        0x00000002
              Values:
                - Value:           0x000000000000BFF0
                - Value:           0x0000000000000010
                - Value:           0x0000000000000001
                  BlockData:       [ 0x57 ]
                - Value:           0x000000000000003F
                - Value:           0x0000000000000001
                - Value:           0x0000000000000001
                - Value:           0x0000000000000059
                - Value:           0x0000000000000001
                - Value:           0x0000000000000001
            - AbbrCode:        0x00000003
              Values:
                - Value:           0x0000000000000002
                  BlockData:       [ 0x7D, 0x04 ]
                - Value:           0x0000000000000044
                - Value:           0x0000000000000001
                - Value:           0x0000000000000001
                - Value:           0x0000000000000059
            - AbbrCode:        0x00000003
              Values:
                - Value:           0x0000000000000002
                  BlockData:       [ 0x7D, 0x00 ]
                - Value:           0x0000000000000049
                - Value:           0x0000000000000001
                - Value:           0x0000000000000001
                - Value:           0x0000000000000060
            - AbbrCode:        0x00000000
            - AbbrCode:        0x00000004
              Values:
                - Value:           0x000000000000004E
                - Value:           0x0000000000000005
                - Value:           0x0000000000000004
            - AbbrCode:        0x00000005
              Values:
                - Value:           0x0000000000000065
            - AbbrCode:        0x00000005
              Values:
                - Value:           0x000000000000006A
            - AbbrCode:        0x00000006
              Values:
                - Value:           0x000000000000006F
            - AbbrCode:        0x00000004
              Values:
                - Value:           0x0000000000000052
                - Value:           0x0000000000000006
                - Value:           0x0000000000000001
            - AbbrCode:        0x00000000
      debug_line:
        - Length:          55
          Version:         4
          PrologueLength:  32
          MinInstLength:   1
          MaxOpsPerInst:   1
          DefaultIsStmt:   1
          LineBase:        251
          LineRange:       14
          OpcodeBase:      13
          StandardOpcodeLengths: [ 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1 ]
          Files:
            - Name:            main.cpp
              DirIdx:          0
              ModTime:         0
              Length:          0
          Opcodes:
            - Opcode:          DW_LNS_extended_op
              ExtLen:          5
              SubOpcode:       DW_LNE_set_address
              Data:            49136
            - Opcode:          DW_LNS_copy
              Data:            0
            - Opcode:          DW_LNS_set_column
              Data:            2
            - Opcode:          DW_LNS_set_prologue_end
              Data:            0
            - Opcode:          0x9F
              Data:            0
            - Opcode:          DW_LNS_advance_pc
              Data:            6
            - Opcode:          DW_LNS_extended_op
              ExtLen:          1
              SubOpcode:       DW_LNE_end_sequence
              Data:            0
  - !mach-o
    FileHeader:
      magic:           0xFEEDFACF
      cputype:         0x0100000C
      cpusubtype:      0x00000000
      filetype:        0x0000000A
      ncmds:           7
      sizeofcmds:      1400
      flags:           0x00000000
      reserved:        0x00000000
    LoadCommands:
      - cmd:             LC_UUID
        cmdsize:         24
        uuid:            E74896D8-32D6-3EB2-BB23-4AA9A0F54CB2
      - cmd:             LC_BUILD_VERSION
        cmdsize:         24
        platform:        2
        minos:           852480
        sdk:             852480
        ntools:          0
      - 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:         232
        segname:         __TEXT
        vmaddr:          4294967296
        vmsize:          32768
        fileoff:         0
        filesize:        0
        maxprot:         5
        initprot:        5
        nsects:          2
        flags:           0
        Sections:
          - sectname:        __text
            segname:         __TEXT
            addr:            0x0000000100007F9C
            size:            28
            offset:          0x00000000
            align:           2
            reloff:          0x00000000
            nreloc:          0
            flags:           0x80000400
            reserved1:       0x00000000
            reserved2:       0x00000000
            reserved3:       0x00000000
            content:         CFFAEDFE0C000001000000000A000000070000007805000000000000
          - sectname:        __unwind_info
            segname:         __TEXT
            addr:            0x0000000100007FB8
            size:            72
            offset:          0x00000000
            align:           2
            reloff:          0x00000000
            nreloc:          0
            flags:           0x00000000
            reserved1:       0x00000000
            reserved2:       0x00000000
            reserved3:       0x00000000
            content:         CFFAEDFE0C000001000000000A000000070000007805000000000000000000001B00000018000000E74896D832D63EB2BB234AA9A0F54CB232000000180000000200000000020D00
      - cmd:             LC_SEGMENT_64
        cmdsize:         72
        segname:         __LINKEDIT
        vmaddr:          4295000064
        vmsize:          4096
        fileoff:         4096
        filesize:        60
        maxprot:         1
        initprot:        1
        nsects:          0
        flags:           0
      - cmd:             LC_SEGMENT_64
        cmdsize:         952
        segname:         __DWARF
        vmaddr:          4295004160
        vmsize:          4096
        fileoff:         8192
        filesize:        716
        maxprot:         7
        initprot:        3
        nsects:          11
        flags:           0
        Sections:
          - sectname:        __debug_line
            segname:         __DWARF
            addr:            0x0000000100009000
            size:            63
            offset:          0x00002000
            align:           0
            reloff:          0x00000000
            nreloc:          0
            flags:           0x00000000
            reserved1:       0x00000000
            reserved2:       0x00000000
            reserved3:       0x00000000
          - sectname:        __debug_pubnames
            segname:         __DWARF
            addr:            0x000000010000903F
            size:            27
            offset:          0x0000203F
            align:           0
            reloff:          0x00000000
            nreloc:          0
            flags:           0x00000000
            reserved1:       0x00000000
            reserved2:       0x00000000
            reserved3:       0x00000000
          - sectname:        __debug_pubtypes
            segname:         __DWARF
            addr:            0x000000010000905A
            size:            35
            offset:          0x0000205A
            align:           0
            reloff:          0x00000000
            nreloc:          0
            flags:           0x00000000
            reserved1:       0x00000000
            reserved2:       0x00000000
            reserved3:       0x00000000
          - sectname:        __debug_aranges
            segname:         __DWARF
            addr:            0x000000010000907D
            size:            48
            offset:          0x0000207D
            align:           0
            reloff:          0x00000000
            nreloc:          0
            flags:           0x00000000
            reserved1:       0x00000000
            reserved2:       0x00000000
            reserved3:       0x00000000
          - sectname:        __debug_info
            segname:         __DWARF
            addr:            0x00000001000090AD
            size:            126
            offset:          0x000020AD
            align:           0
            reloff:          0x00000000
            nreloc:          0
            flags:           0x00000000
            reserved1:       0x00000000
            reserved2:       0x00000000
            reserved3:       0x00000000
          - sectname:        __debug_abbrev
            segname:         __DWARF
            addr:            0x000000010000912B
            size:            84
            offset:          0x0000212B
            align:           0
            reloff:          0x00000000
            nreloc:          0
            flags:           0x00000000
            reserved1:       0x00000000
            reserved2:       0x00000000
            reserved3:       0x00000000
          - sectname:        __debug_str
            segname:         __DWARF
            addr:            0x000000010000917F
            size:            87
            offset:          0x0000217F
            align:           0
            reloff:          0x00000000
            nreloc:          0
            flags:           0x00000000
            reserved1:       0x00000000
            reserved2:       0x00000000
            reserved3:       0x00000000
          - sectname:        __apple_names
            segname:         __DWARF
            addr:            0x00000001000091D6
            size:            60
            offset:          0x000021D6
            align:           0
            reloff:          0x00000000
            nreloc:          0
            flags:           0x00000000
            reserved1:       0x00000000
            reserved2:       0x00000000
            reserved3:       0x00000000
            content:         485341480100000001000000010000000C000000000000000100000001000600000000006A7F9A7C2C0000003F000000010000002A00000000000000
          - sectname:        __apple_namespac
            segname:         __DWARF
            addr:            0x0000000100009212
            size:            36
            offset:          0x00002212
            align:           0
            reloff:          0x00000000
            nreloc:          0
            flags:           0x00000000
            reserved1:       0x00000000
            reserved2:       0x00000000
            reserved3:       0x00000000
            content:         485341480100000001000000000000000C000000000000000100000001000600FFFFFFFF
          - sectname:        __apple_types
            segname:         __DWARF
            addr:            0x0000000100009236
            size:            114
            offset:          0x00002236
            align:           0
            reloff:          0x00000000
            nreloc:          0
            flags:           0x00000000
            reserved1:       0x00000000
            reserved2:       0x00000000
            reserved3:       0x00000000
            content:         48534148010000000200000002000000180000000000000004000000010006000300050005000B000600060000000000010000003080880B6320957C440000005B0000004E0000000100000060000000240000A4283A0C0000000052000000010000007600000024000057D77B9300000000
          - sectname:        __apple_objc
            segname:         __DWARF
            addr:            0x00000001000092A8
            size:            36
            offset:          0x000022A8
            align:           0
            reloff:          0x00000000
            nreloc:          0
            flags:           0x00000000
            reserved1:       0x00000000
            reserved2:       0x00000000
            reserved3:       0x00000000
            content:         485341480100000001000000000000000C000000000000000100000001000600FFFFFFFF
    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:         4294999964
      StringTable:
        - ''
        - ''
        - __mh_execute_header
        - _main
    DWARF:
      debug_str:
        - ''
        - 'Apple clang version 11.0.0 (clang-1100.0.33.17)'
        - main.cpp
        - '/tmp'
        - 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_GNU_pubnames
                  Form:            DW_FORM_flag_present
                - 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_type
                  Form:            DW_FORM_ref_addr
                - 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_ref_addr
            - 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_ref_addr
            - Code:            0x00000006
              Tag:             DW_TAG_const_type
              Children:        DW_CHILDREN_no
              Attributes:
                - Attribute:       DW_AT_type
                  Form:            DW_FORM_ref_addr
      debug_aranges:
        - Length:              44
          Version:             2
          CuOffset:            0
          AddressSize:         8
          SegmentSelectorSize: 0
          Descriptors:
            - Address:         0x0000000100007F9C
              Length:          28
      debug_pubnames:
        Length:          23
        Version:         2
        UnitOffset:      0
        UnitSize:        126
        Entries:
          - DieOffset:       0x0000002A
            Name:            main
      debug_pubtypes:
        Length:          31
        Version:         2
        UnitOffset:      0
        UnitSize:        126
        Entries:
          - DieOffset:       0x00000060
            Name:            int
          - DieOffset:       0x00000076
            Name:            char
      debug_info:
        - Length:          122
          Version:         4
          AbbrOffset:      0
          AddrSize:        8
          Entries:
            - AbbrCode:        0x00000001
              Values:
                - Value:           0x0000000000000001
                - Value:           0x0000000000000004
                - Value:           0x0000000000000031
                - Value:           0x0000000000000000
                - Value:           0x000000000000003A
                - Value:           0x0000000000000001
                - Value:           0x0000000100007F9C
                - Value:           0x000000000000001C
            - AbbrCode:        0x00000002
              Values:
                - Value:           0x0000000100007F9C
                - Value:           0x000000000000001C
                - Value:           0x0000000000000001
                  BlockData:       [ 0x6F ]
                - Value:           0x000000000000003F
                - Value:           0x0000000000000001
                - Value:           0x0000000000000001
                - Value:           0x0000000000000060
                - Value:           0x0000000000000001
            - AbbrCode:        0x00000003
              Values:
                - Value:           0x0000000000000002
                  BlockData:       [ 0x91, 0x08 ]
                - Value:           0x0000000000000044
                - Value:           0x0000000000000001
                - Value:           0x0000000000000001
                - Value:           0x0000000000000060
            - AbbrCode:        0x00000003
              Values:
                - Value:           0x0000000000000002
                  BlockData:       [ 0x91, 0x00 ]
                - Value:           0x0000000000000049
                - Value:           0x0000000000000001
                - Value:           0x0000000000000001
                - Value:           0x0000000000000067
            - AbbrCode:        0x00000000
              Values:          []
            - AbbrCode:        0x00000004
              Values:
                - Value:           0x000000000000004E
                - Value:           0x0000000000000005
                - Value:           0x0000000000000004
            - AbbrCode:        0x00000005
              Values:
                - Value:           0x000000000000006C
            - AbbrCode:        0x00000005
              Values:
                - Value:           0x0000000000000071
            - AbbrCode:        0x00000006
              Values:
                - Value:           0x0000000000000076
            - AbbrCode:        0x00000004
              Values:
                - Value:           0x0000000000000052
                - Value:           0x0000000000000006
                - Value:           0x0000000000000001
            - AbbrCode:        0x00000000
              Values:          []
      debug_line:
        - Length:          59
          Version:         4
          PrologueLength:  32
          MinInstLength:   1
          MaxOpsPerInst:   1
          DefaultIsStmt:   1
          LineBase:        251
          LineRange:       14
          OpcodeBase:      13
          StandardOpcodeLengths: [ 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1 ]
          Files:
            - Name:            main.cpp
              DirIdx:          0
              ModTime:         0
              Length:          0
          Opcodes:
            - Opcode:          DW_LNS_extended_op
              ExtLen:          9
              SubOpcode:       DW_LNE_set_address
              Data:            4294999964
            - Opcode:          DW_LNS_copy
              Data:            0
            - Opcode:          DW_LNS_set_column
              Data:            2
            - Opcode:          DW_LNS_set_prologue_end
              Data:            0
            - Opcode:          0xF3
              Data:            0
            - Opcode:          DW_LNS_advance_pc
              Data:            12
            - Opcode:          DW_LNS_extended_op
              ExtLen:          1
              SubOpcode:       DW_LNE_end_sequence
              Data:            0
...
