# RUN: yaml2obj %s -o %t
# RUN: llvm-objdump --macho --reloc %t | FileCheck %s --check-prefix=OBJDUMP-VERIFY

# OBJDUMP-VERIFY: Relocation information (__TEXT,__text) 2 entries
# OBJDUMP-VERIFY-NEXT: address  pcrel length extern type    scattered symbolnum/value
# OBJDUMP-VERIFY-NEXT: 00000015 True  long   True   SIGNED  False     _w
# OBJDUMP-VERIFY-NEXT: 0000000e True  long   True   SIGNED  False     _z
# OBJDUMP-VERIFY-NEXT: Relocation information (__TEXT,__StaticInit) 4 entries
# OBJDUMP-VERIFY-NEXT: address  pcrel length extern type    scattered symbolnum/value
# OBJDUMP-VERIFY-NEXT: 00000025 True  long   True   BRANCH  False     ___cxx_global_var_init
# OBJDUMP-VERIFY-NEXT: 00000018 True  long   True   SIGNED  False     _w
# OBJDUMP-VERIFY-NEXT: 0000000e True  long   True   SIGNED  False     _x
# OBJDUMP-VERIFY-NEXT: 00000007 True  long   True   SIGNED  False     _y
# OBJDUMP-VERIFY-NEXT: Relocation information (__DATA,__data) 1 entries
# OBJDUMP-VERIFY-NEXT: address  pcrel length extern type    scattered symbolnum/value
# OBJDUMP-VERIFY-NEXT: 00000008 False quad   True   UNSIGND False     _x
# OBJDUMP-VERIFY-NEXT: Relocation information (__DATA,__mod_init_func) 1 entries
# OBJDUMP-VERIFY-NEXT: address  pcrel length extern type    scattered symbolnum/value
# OBJDUMP-VERIFY-NEXT: 00000000 False quad   True   UNSIGND False     __GLOBAL__sub_I_main.cpp
# OBJDUMP-VERIFY-NEXT: Relocation information (__LD,__compact_unwind) 3 entries
# OBJDUMP-VERIFY-NEXT: address  pcrel length extern type    scattered symbolnum/value
# OBJDUMP-VERIFY-NEXT: 00000040 False quad   False  UNSIGND False     2 (__TEXT,__StaticInit)
# OBJDUMP-VERIFY-NEXT: 00000020 False quad   False  UNSIGND False     1 (__TEXT,__text)
# OBJDUMP-VERIFY-NEXT: 00000000 False quad   False  UNSIGND False     2 (__TEXT,__StaticInit)

# RUN: obj2yaml %t | FileCheck %s 
# CHECK:    Sections:
# CHECK-NEXT:      - sectname:        __text
# CHECK-NEXT:        segname:         __TEXT
# CHECK-NEXT:        addr:            0x0
# CHECK-NEXT:        size:            27
# CHECK-NEXT:        offset:          0x310
# CHECK-NEXT:        align:           4
# CHECK-NEXT:        reloff:          0x468
# CHECK-NEXT:        nreloc:          2
# CHECK-NEXT:        flags:           0x80000400
# CHECK-NEXT:        reserved1:       0x0
# CHECK-NEXT:        reserved2:       0x0
# CHECK-NEXT:        reserved3:       0x0
# CHECK-NEXT:        content:         
# CHECK-NEXT:        relocations:
# CHECK-NEXT:          - address:         0x15
# CHECK-NEXT:            symbolnum:       3
# CHECK-NEXT:            pcrel:           true
# CHECK-NEXT:            length:          2
# CHECK-NEXT:            extern:          true
# CHECK-NEXT:            type:            1
# CHECK-NEXT:            scattered:       false
# CHECK-NEXT:            value:           0
# CHECK-NEXT:          - address:         0xE
# CHECK-NEXT:            symbolnum:       6
# CHECK-NEXT:            pcrel:           true
# CHECK-NEXT:            length:          2
# CHECK-NEXT:            extern:          true
# CHECK-NEXT:            type:            1
# CHECK-NEXT:            scattered:       false
# CHECK-NEXT:            value:           0
# CHECK-NEXT:      - sectname:        __StaticInit
# CHECK-NEXT:        segname:         __TEXT
# CHECK-NEXT:        addr:            0x20
# CHECK-NEXT:        size:            43
# CHECK-NEXT:        offset:          0x330
# CHECK-NEXT:        align:           4
# CHECK-NEXT:        reloff:          0x478
# CHECK-NEXT:        nreloc:          4
# CHECK-NEXT:        flags:           0x80000400
# CHECK-NEXT:        reserved1:       0x0
# CHECK-NEXT:        reserved2:       0x0
# CHECK-NEXT:        reserved3:       0x0
# CHECK-NEXT:        content:
# CHECK-NEXT:        relocations:
# CHECK-NEXT:          - address:         0x25
# CHECK-NEXT:            symbolnum:       0
# CHECK-NEXT:            pcrel:           true
# CHECK-NEXT:            length:          2
# CHECK-NEXT:            extern:          true
# CHECK-NEXT:            type:            2
# CHECK-NEXT:            scattered:       false
# CHECK-NEXT:            value:           0
# CHECK-NEXT:          - address:         0x18
# CHECK-NEXT:            symbolnum:       3
# CHECK-NEXT:            pcrel:           true
# CHECK-NEXT:            length:          2
# CHECK-NEXT:            extern:          true
# CHECK-NEXT:            type:            1
# CHECK-NEXT:            scattered:       false
# CHECK-NEXT:            value:           0
# CHECK-NEXT:          - address:         0xE
# CHECK-NEXT:            symbolnum:       4
# CHECK-NEXT:            pcrel:           true
# CHECK-NEXT:            length:          2
# CHECK-NEXT:            extern:          true
# CHECK-NEXT:            type:            1
# CHECK-NEXT:            scattered:       false
# CHECK-NEXT:            value:           0
# CHECK-NEXT:          - address:         0x7
# CHECK-NEXT:            symbolnum:       5
# CHECK-NEXT:            pcrel:           true
# CHECK-NEXT:            length:          2
# CHECK-NEXT:            extern:          true
# CHECK-NEXT:            type:            1
# CHECK-NEXT:            scattered:       false
# CHECK-NEXT:            value:           0
# CHECK-NEXT:      - sectname:        __data
# CHECK-NEXT:        segname:         __DATA
# CHECK-NEXT:        addr:            0x50
# CHECK-NEXT:        size:            16
# CHECK-NEXT:        offset:          0x360
# CHECK-NEXT:        align:           3
# CHECK-NEXT:        reloff:          0x498
# CHECK-NEXT:        nreloc:          1
# CHECK-NEXT:        flags:           0x0
# CHECK-NEXT:        reserved1:       0x0
# CHECK-NEXT:        reserved2:       0x0
# CHECK-NEXT:        reserved3:       0x0
# CHECK-NEXT:        content:         '01000000020000000000000000000000'
# CHECK-NEXT:        relocations:
# CHECK-NEXT:          - address:         0x8
# CHECK-NEXT:            symbolnum:       4
# CHECK-NEXT:            pcrel:           false
# CHECK-NEXT:            length:          3
# CHECK-NEXT:            extern:          true
# CHECK-NEXT:            type:            0
# CHECK-NEXT:            scattered:       false
# CHECK-NEXT:            value:           0
# CHECK-NEXT:      - sectname:        __common
# CHECK-NEXT:        segname:         __DATA
# CHECK-NEXT:        addr:            0x158
# CHECK-NEXT:        size:            8
# CHECK-NEXT:        offset:          0x0
# CHECK-NEXT:        align:           3
# CHECK-NEXT:        reloff:          0x0
# CHECK-NEXT:        nreloc:          0
# CHECK-NEXT:        flags:           0x1
# CHECK-NEXT:        reserved1:       0x0
# CHECK-NEXT:        reserved2:       0x0
# CHECK-NEXT:        reserved3:       0x0
# CHECK-NEXT:      - sectname:        __mod_init_func
# CHECK-NEXT:        segname:         __DATA
# CHECK-NEXT:        addr:            0x60
# CHECK-NEXT:        size:            8
# CHECK-NEXT:        offset:          0x370
# CHECK-NEXT:        align:           3
# CHECK-NEXT:        reloff:          0x4A0
# CHECK-NEXT:        nreloc:          1
# CHECK-NEXT:        flags:           0x9
# CHECK-NEXT:        reserved1:       0x0
# CHECK-NEXT:        reserved2:       0x0
# CHECK-NEXT:        reserved3:       0x0
# CHECK-NEXT:        content:         
# CHECK-NEXT:        relocations:
# CHECK-NEXT:          - address:         0x0
# CHECK-NEXT:            symbolnum:       1
# CHECK-NEXT:            pcrel:           false
# CHECK-NEXT:            length:          3
# CHECK-NEXT:            extern:          true
# CHECK-NEXT:            type:            0
# CHECK-NEXT:            scattered:       false
# CHECK-NEXT:            value:           0
# CHECK-NEXT:      - sectname:        __compact_unwind
# CHECK-NEXT:        segname:         __LD
# CHECK-NEXT:        addr:            0x68
# CHECK-NEXT:        size:            96
# CHECK-NEXT:        offset:          0x378
# CHECK-NEXT:        align:           3
# CHECK-NEXT:        reloff:          0x4A8
# CHECK-NEXT:        nreloc:          3
# CHECK-NEXT:        flags:           0x2000000
# CHECK-NEXT:        reserved1:       0x0
# CHECK-NEXT:        reserved2:       0x0
# CHECK-NEXT:        reserved3:       0x0
# CHECK-NEXT:        content:
# CHECK-NEXT:        relocations:
# CHECK-NEXT:          - address:         0x40
# CHECK-NEXT:            symbolnum:       2
# CHECK-NEXT:            pcrel:           false
# CHECK-NEXT:            length:          3
# CHECK-NEXT:            extern:          false
# CHECK-NEXT:            type:            0
# CHECK-NEXT:            scattered:       false
# CHECK-NEXT:            value:           0
# CHECK-NEXT:          - address:         0x20
# CHECK-NEXT:            symbolnum:       1
# CHECK-NEXT:            pcrel:           false
# CHECK-NEXT:            length:          3
# CHECK-NEXT:            extern:          false
# CHECK-NEXT:            type:            0
# CHECK-NEXT:            scattered:       false
# CHECK-NEXT:            value:           0
# CHECK-NEXT:          - address:         0x0
# CHECK-NEXT:            symbolnum:       2
# CHECK-NEXT:            pcrel:           false
# CHECK-NEXT:            length:          3
# CHECK-NEXT:            extern:          false
# CHECK-NEXT:            type:            0
# CHECK-NEXT:            scattered:       false
# CHECK-NEXT:            value:           0
# CHECK-NEXT:      - sectname:        __eh_frame
# CHECK-NEXT:        segname:         __TEXT
# CHECK-NEXT:        addr:            0xC8
# CHECK-NEXT:        size:            144
# CHECK-NEXT:        offset:          0x3D8
# CHECK-NEXT:        align:           3
# CHECK-NEXT:        reloff:          0x0
# CHECK-NEXT:        nreloc:          0
# CHECK-NEXT:        flags:           0x6800000B
# CHECK-NEXT:        reserved1:       0x0
# CHECK-NEXT:        reserved2:       0x0
# CHECK-NEXT:        reserved3:       0x0

--- !mach-o
FileHeader:
  magic:           0xFEEDFACF
  cputype:         0x01000007
  cpusubtype:      0x00000003
  filetype:        0x00000001
  ncmds:           4
  sizeofcmds:      752
  flags:           0x00002000
  reserved:        0x00000000
LoadCommands:
  - cmd:             LC_SEGMENT_64
    cmdsize:         632
    segname:         ''
    vmaddr:          0
    vmsize:          352
    fileoff:         784
    filesize:        344
    maxprot:         7
    initprot:        7
    nsects:          7
    flags:           0
    Sections:
      - sectname:        __text
        segname:         __TEXT
        addr:            0x0000000000000000
        size:            27
        offset:          0x00000310
        align:           4
        reloff:          0x00000468
        nreloc:          2
        flags:           0x80000400
        reserved1:       0x00000000
        reserved2:       0x00000000
        reserved3:       0x00000000
        content:         554889E5C745FC00000000488B0500000000480305000000005DC3
        relocations:
          - address:         0x00000015
            symbolnum:       3
            pcrel:           true
            length:          2
            extern:          true
            type:            1
            scattered:       false
            value:           0
          - address:         0x0000000E
            symbolnum:       6
            pcrel:           true
            length:          2
            extern:          true
            type:            1
            scattered:       false
            value:           0
      - sectname:        __StaticInit
        segname:         __TEXT
        addr:            0x0000000000000020
        size:            43
        offset:          0x00000330
        align:           4
        reloff:          0x00000478
        nreloc:          4
        flags:           0x80000400
        reserved1:       0x00000000
        reserved2:       0x00000000
        reserved3:       0x00000000
        content:         554889E5488D0500000000488D0D000000004829C148890D000000005DC36690554889E5E8000000005DC3
        relocations:
          - address:         0x00000025
            symbolnum:       0
            pcrel:           true
            length:          2
            extern:          true
            type:            2
            scattered:       false
            value:           0
          - address:         0x00000018
            symbolnum:       3
            pcrel:           true
            length:          2
            extern:          true
            type:            1
            scattered:       false
            value:           0
          - address:         0x0000000E
            symbolnum:       4
            pcrel:           true
            length:          2
            extern:          true
            type:            1
            scattered:       false
            value:           0
          - address:         0x00000007
            symbolnum:       5
            pcrel:           true
            length:          2
            extern:          true
            type:            1
            scattered:       false
            value:           0
      - sectname:        __data
        segname:         __DATA
        addr:            0x0000000000000050
        size:            16
        offset:          0x00000360
        align:           3
        reloff:          0x00000498
        nreloc:          1
        flags:           0x00000000
        reserved1:       0x00000000
        reserved2:       0x00000000
        reserved3:       0x00000000
        content:         '01000000020000000000000000000000'
        relocations:
          - address:         0x00000008
            symbolnum:       4
            pcrel:           false
            length:          3
            extern:          true
            type:            0
            scattered:       false
            value:           0
      - sectname:        __common
        segname:         __DATA
        addr:            0x0000000000000158
        size:            8
        offset:          0x00000000
        align:           3
        reloff:          0x00000000
        nreloc:          0
        flags:           0x00000001
        reserved1:       0x00000000
        reserved2:       0x00000000
        reserved3:       0x00000000
      - sectname:        __mod_init_func
        segname:         __DATA
        addr:            0x0000000000000060
        size:            8
        offset:          0x00000370
        align:           3
        reloff:          0x000004A0
        nreloc:          1
        flags:           0x00000009
        reserved1:       0x00000000
        reserved2:       0x00000000
        reserved3:       0x00000000
        content:         '0000000000000000'
        relocations:
          - address:         0x00000000
            symbolnum:       1
            pcrel:           false
            length:          3
            extern:          true
            type:            0
            scattered:       false
            value:           0
      - sectname:        __compact_unwind
        segname:         __LD
        addr:            0x0000000000000068
        size:            96
        offset:          0x00000378
        align:           3
        reloff:          0x000004A8
        nreloc:          3
        flags:           0x02000000
        reserved1:       0x00000000
        reserved2:       0x00000000
        reserved3:       0x00000000
        content:         20000000000000001E000000000000010000000000000000000000000000000000000000000000001B000000000000010000000000000000000000000000000040000000000000000B0000000000000100000000000000000000000000000000
        relocations:
          - address:         0x00000040
            symbolnum:       2
            pcrel:           false
            length:          3
            extern:          false
            type:            0
            scattered:       false
            value:           0
          - address:         0x00000020
            symbolnum:       1
            pcrel:           false
            length:          3
            extern:          false
            type:            0
            scattered:       false
            value:           0
          - address:         0x00000000
            symbolnum:       2
            pcrel:           false
            length:          3
            extern:          false
            type:            0
            scattered:       false
            value:           0
      - sectname:        __eh_frame
        segname:         __TEXT
        addr:            0x00000000000000C8
        size:            144
        offset:          0x000003D8
        align:           3
        reloff:          0x00000000
        nreloc:          0
        flags:           0x6800000B
        reserved1:       0x00000000
        reserved2:       0x00000000
        reserved3:       0x00000000
        content:         1400000000000000017A520001781001100C070890010000240000001C00000038FFFFFFFFFFFFFF1E0000000000000000410E108602430D06000000000000002400000044000000F0FEFFFFFFFFFFFF1B0000000000000000410E108602430D0600000000000000240000006C00000008FFFFFFFFFFFFFF0B0000000000000000410E108602430D0600000000000000
  - cmd:             LC_VERSION_MIN_MACOSX
    cmdsize:         16
    version:         658944
    sdk:             0
  - cmd:             LC_SYMTAB
    cmdsize:         24
    symoff:          1216
    nsyms:           7
    stroff:          1328
    strsize:         68
  - cmd:             LC_DYSYMTAB
    cmdsize:         80
    ilocalsym:       0
    nlocalsym:       2
    iextdefsym:      2
    nextdefsym:      5
    iundefsym:       7
    nundefsym:       0
    tocoff:          0
    ntoc:            0
    modtaboff:       0
    nmodtab:         0
    extrefsymoff:    0
    nextrefsyms:     0
    indirectsymoff:  0
    nindirectsyms:   0
    extreloff:       0
    nextrel:         0
    locreloff:       0
    nlocrel:         0
LinkEditData:
  NameList:
    - n_strx:          13
      n_type:          0x0E
      n_sect:          2
      n_desc:          0
      n_value:         32
    - n_strx:          36
      n_type:          0x0E
      n_sect:          2
      n_desc:          0
      n_value:         64
    - n_strx:          61
      n_type:          0x0F
      n_sect:          1
      n_desc:          0
      n_value:         0
    - n_strx:          10
      n_type:          0x0F
      n_sect:          4
      n_desc:          0
      n_value:         344
    - n_strx:          7
      n_type:          0x0F
      n_sect:          3
      n_desc:          0
      n_value:         80
    - n_strx:          4
      n_type:          0x0F
      n_sect:          3
      n_desc:          0
      n_value:         84
    - n_strx:          1
      n_type:          0x0F
      n_sect:          3
      n_desc:          0
      n_value:         88
  StringTable:
    - ''
    - _z
    - _y
    - _x
    - _w
    - ___cxx_global_var_init
    - __GLOBAL__sub_I_main.cpp
    - _main
    - ''
...
