# RUN: yaml2obj %s -o %t
# RUN: llvm-objdump --macho --reloc %t | FileCheck %s --check-prefix=OBJDUMP-VERIFY
# OBJDUMP-VERIFY: Relocation information (__TEXT,__text) 8 entries
# OBJDUMP-VERIFY-NEXT: address pcrel length extern type scattered symbolnum/value
# OBJDUMP-VERIFY-NEXT: 00000016 False hi/thm n/a HALFDIF True 0x00000064
# OBJDUMP-VERIFY-NEXT: False hi/thm n/a PAIR True 0x0000001a half = 0x0046
# OBJDUMP-VERIFY-NEXT: 00000012 False lo/arm n/a HALFDIF True 0x00000064
# OBJDUMP-VERIFY-NEXT: False lo/arm n/a PAIR True 0x0000001a half = 0x0000
# OBJDUMP-VERIFY-NEXT: 0000000a False hi/thm n/a HALFDIF True 0x0000005c
# OBJDUMP-VERIFY-NEXT: False hi/thm n/a PAIR True 0x0000000e half = 0x004a
# OBJDUMP-VERIFY-NEXT: 00000006 False lo/arm n/a HALFDIF True 0x0000005c
# OBJDUMP-VERIFY-NEXT: False lo/arm n/a PAIR True 0x0000000e half = 0x0000
# OBJDUMP-VERIFY-NEXT: Relocation information (__TEXT,__StaticInit) 13 entries
# OBJDUMP-VERIFY-NEXT: address pcrel length extern type scattered symbolnum/value
# OBJDUMP-VERIFY-NEXT: 00000028 True long False T_BR22 False 2 (__TEXT,__StaticInit)
# OBJDUMP-VERIFY-NEXT: 0000001a False hi/thm n/a HALFDIF True 0x00000064
# OBJDUMP-VERIFY-NEXT: False hi/thm n/a PAIR True 0x00000042 half = 0x001e
# OBJDUMP-VERIFY-NEXT: 00000016 False lo/arm n/a HALFDIF True 0x00000064
# OBJDUMP-VERIFY-NEXT: False lo/arm n/a PAIR True 0x00000042 half = 0x0000
# OBJDUMP-VERIFY-NEXT: 0000000e False hi/thm n/a HALFDIF True 0x00000054
# OBJDUMP-VERIFY-NEXT: False hi/thm n/a PAIR True 0x00000036 half = 0x001a
# OBJDUMP-VERIFY-NEXT: 0000000a False lo/arm n/a HALFDIF True 0x00000054
# OBJDUMP-VERIFY-NEXT: False lo/arm n/a PAIR True 0x00000036 half = 0x0000
# OBJDUMP-VERIFY-NEXT: 00000004 False hi/thm n/a HALFDIF True 0x00000058
# OBJDUMP-VERIFY-NEXT: False hi/thm n/a PAIR True 0x0000002c half = 0x0028
# OBJDUMP-VERIFY-NEXT: 00000000 False lo/arm n/a HALFDIF True 0x00000058
# OBJDUMP-VERIFY-NEXT: False lo/arm n/a PAIR True 0x0000002c half = 0x0000
# 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 long False VANILLA False 3 (__DATA,__data)
# 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 long False VANILLA 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: 36
# CHECK-NEXT: offset: 0x220
# CHECK-NEXT: align: 1
# CHECK-NEXT: reloff: 0x284
# CHECK-NEXT: nreloc: 8
# 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: 0x16
# CHECK-NEXT: symbolnum: 0
# CHECK-NEXT: pcrel: false
# CHECK-NEXT: length: 3
# CHECK-NEXT: extern: false
# CHECK-NEXT: type: 9
# CHECK-NEXT: scattered: true
# CHECK-NEXT: value: 100
# CHECK-NEXT: - address: 0x46
# CHECK-NEXT: symbolnum: 0
# CHECK-NEXT: pcrel: false
# CHECK-NEXT: length: 3
# CHECK-NEXT: extern: false
# CHECK-NEXT: type: 1
# CHECK-NEXT: scattered: true
# CHECK-NEXT: value: 26
# CHECK-NEXT: - address: 0x12
# CHECK-NEXT: symbolnum: 0
# CHECK-NEXT: pcrel: false
# CHECK-NEXT: length: 2
# CHECK-NEXT: extern: false
# CHECK-NEXT: type: 9
# CHECK-NEXT: scattered: true
# CHECK-NEXT: value: 100
# CHECK-NEXT: - address: 0x0
# CHECK-NEXT: symbolnum: 0
# CHECK-NEXT: pcrel: false
# CHECK-NEXT: length: 2
# CHECK-NEXT: extern: false
# CHECK-NEXT: type: 1
# CHECK-NEXT: scattered: true
# CHECK-NEXT: value: 26
# CHECK-NEXT: - address: 0xA
# CHECK-NEXT: symbolnum: 0
# CHECK-NEXT: pcrel: false
# CHECK-NEXT: length: 3
# CHECK-NEXT: extern: false
# CHECK-NEXT: type: 9
# CHECK-NEXT: scattered: true
# CHECK-NEXT: value: 92
# CHECK-NEXT: - address: 0x4A
# CHECK-NEXT: symbolnum: 0
# CHECK-NEXT: pcrel: false
# CHECK-NEXT: length: 3
# CHECK-NEXT: extern: false
# CHECK-NEXT: type: 1
# CHECK-NEXT: scattered: true
# CHECK-NEXT: value: 14
# CHECK-NEXT: - address: 0x6
# CHECK-NEXT: symbolnum: 0
# CHECK-NEXT: pcrel: false
# CHECK-NEXT: length: 2
# CHECK-NEXT: extern: false
# CHECK-NEXT: type: 9
# CHECK-NEXT: scattered: true
# CHECK-NEXT: value: 92
# CHECK-NEXT: - address: 0x0
# CHECK-NEXT: symbolnum: 0
# CHECK-NEXT: pcrel: false
# CHECK-NEXT: length: 2
# CHECK-NEXT: extern: false
# CHECK-NEXT: type: 1
# CHECK-NEXT: scattered: true
# CHECK-NEXT: value: 14
# CHECK-NEXT: - sectname: __StaticInit
# CHECK-NEXT: segname: __TEXT
# CHECK-NEXT: addr: 0x24
# CHECK-NEXT: size: 46
# CHECK-NEXT: offset: 0x244
# CHECK-NEXT: align: 1
# CHECK-NEXT: reloff: 0x2C4
# CHECK-NEXT: nreloc: 13
# 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: 0x28
# CHECK-NEXT: symbolnum: 2
# CHECK-NEXT: pcrel: true
# CHECK-NEXT: length: 2
# CHECK-NEXT: extern: false
# CHECK-NEXT: type: 6
# CHECK-NEXT: scattered: false
# CHECK-NEXT: value: 0
# CHECK-NEXT: - address: 0x1A
# CHECK-NEXT: symbolnum: 0
# CHECK-NEXT: pcrel: false
# CHECK-NEXT: length: 3
# CHECK-NEXT: extern: false
# CHECK-NEXT: type: 9
# CHECK-NEXT: scattered: true
# CHECK-NEXT: value: 100
# CHECK-NEXT: - address: 0x1E
# CHECK-NEXT: symbolnum: 0
# CHECK-NEXT: pcrel: false
# CHECK-NEXT: length: 3
# CHECK-NEXT: extern: false
# CHECK-NEXT: type: 1
# CHECK-NEXT: scattered: true
# CHECK-NEXT: value: 66
# CHECK-NEXT: - address: 0x16
# CHECK-NEXT: symbolnum: 0
# CHECK-NEXT: pcrel: false
# CHECK-NEXT: length: 2
# CHECK-NEXT: extern: false
# CHECK-NEXT: type: 9
# CHECK-NEXT: scattered: true
# CHECK-NEXT: value: 100
# CHECK-NEXT: - address: 0x0
# CHECK-NEXT: symbolnum: 0
# CHECK-NEXT: pcrel: false
# CHECK-NEXT: length: 2
# CHECK-NEXT: extern: false
# CHECK-NEXT: type: 1
# CHECK-NEXT: scattered: true
# CHECK-NEXT: value: 66
# CHECK-NEXT: - address: 0xE
# CHECK-NEXT: symbolnum: 0
# CHECK-NEXT: pcrel: false
# CHECK-NEXT: length: 3
# CHECK-NEXT: extern: false
# CHECK-NEXT: type: 9
# CHECK-NEXT: scattered: true
# CHECK-NEXT: value: 84
# CHECK-NEXT: - address: 0x1A
# CHECK-NEXT: symbolnum: 0
# CHECK-NEXT: pcrel: false
# CHECK-NEXT: length: 3
# CHECK-NEXT: extern: false
# CHECK-NEXT: type: 1
# CHECK-NEXT: scattered: true
# CHECK-NEXT: value: 54
# CHECK-NEXT: - address: 0xA
# CHECK-NEXT: symbolnum: 0
# CHECK-NEXT: pcrel: false
# CHECK-NEXT: length: 2
# CHECK-NEXT: extern: false
# CHECK-NEXT: type: 9
# CHECK-NEXT: scattered: true
# CHECK-NEXT: value: 84
# CHECK-NEXT: - address: 0x0
# CHECK-NEXT: symbolnum: 0
# CHECK-NEXT: pcrel: false
# CHECK-NEXT: length: 2
# CHECK-NEXT: extern: false
# CHECK-NEXT: type: 1
# CHECK-NEXT: scattered: true
# CHECK-NEXT: value: 54
# CHECK-NEXT: - address: 0x4
# CHECK-NEXT: symbolnum: 0
# CHECK-NEXT: pcrel: false
# CHECK-NEXT: length: 3
# CHECK-NEXT: extern: false
# CHECK-NEXT: type: 9
# CHECK-NEXT: scattered: true
# CHECK-NEXT: value: 88
# CHECK-NEXT: - address: 0x28
# CHECK-NEXT: symbolnum: 0
# CHECK-NEXT: pcrel: false
# CHECK-NEXT: length: 3
# CHECK-NEXT: extern: false
# CHECK-NEXT: type: 1
# CHECK-NEXT: scattered: true
# CHECK-NEXT: value: 44
# CHECK-NEXT: - address: 0x0
# CHECK-NEXT: symbolnum: 0
# CHECK-NEXT: pcrel: false
# CHECK-NEXT: length: 2
# CHECK-NEXT: extern: false
# CHECK-NEXT: type: 9
# CHECK-NEXT: scattered: true
# CHECK-NEXT: value: 88
# CHECK-NEXT: - address: 0x0
# CHECK-NEXT: symbolnum: 0
# CHECK-NEXT: pcrel: false
# CHECK-NEXT: length: 2
# CHECK-NEXT: extern: false
# CHECK-NEXT: type: 1
# CHECK-NEXT: scattered: true
# CHECK-NEXT: value: 44
# CHECK-NEXT: - sectname: __data
# CHECK-NEXT: segname: __DATA
# CHECK-NEXT: addr: 0x54
# CHECK-NEXT: size: 12
# CHECK-NEXT: offset: 0x274
# CHECK-NEXT: align: 2
# CHECK-NEXT: reloff: 0x32C
# CHECK-NEXT: nreloc: 1
# CHECK-NEXT: flags: 0x0
# CHECK-NEXT: reserved1: 0x0
# CHECK-NEXT: reserved2: 0x0
# CHECK-NEXT: reserved3: 0x0
# CHECK-NEXT: content:
# CHECK-NEXT: relocations:
# CHECK-NEXT: - address: 0x8
# CHECK-NEXT: symbolnum: 3
# CHECK-NEXT: pcrel: false
# CHECK-NEXT: length: 2
# CHECK-NEXT: extern: false
# CHECK-NEXT: type: 0
# CHECK-NEXT: scattered: false
# CHECK-NEXT: value: 0
# CHECK-NEXT: - sectname: __common
# CHECK-NEXT: segname: __DATA
# CHECK-NEXT: addr: 0x64
# CHECK-NEXT: size: 4
# CHECK-NEXT: offset: 0x0
# CHECK-NEXT: align: 2
# 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: 4
# CHECK-NEXT: offset: 0x280
# CHECK-NEXT: align: 2
# CHECK-NEXT: reloff: 0x334
# CHECK-NEXT: nreloc: 1
# CHECK-NEXT: flags: 0x9
# CHECK-NEXT: reserved1: 0x0
# CHECK-NEXT: reserved2: 0x0
# CHECK-NEXT: reserved3: 0x0
# CHECK-NEXT: content: '48000000'
# CHECK-NEXT: relocations:
# CHECK-NEXT: - address: 0x0
# CHECK-NEXT: symbolnum: 2
# CHECK-NEXT: pcrel: false
# CHECK-NEXT: length: 2
# CHECK-NEXT: extern: false
# CHECK-NEXT: type: 0
# CHECK-NEXT: scattered: false
# CHECK-NEXT: value: 0
--- !mach-o
FileHeader:
magic: 0xFEEDFACE
cputype: 0x0000000C
cpusubtype: 0x00000009
filetype: 0x00000001
ncmds: 4
sizeofcmds: 516
flags: 0x00002000
LoadCommands:
- cmd: LC_SEGMENT
cmdsize: 396
segname: ''
vmaddr: 0
vmsize: 104
fileoff: 544
filesize: 100
maxprot: 7
initprot: 7
nsects: 5
flags: 0
Sections:
- sectname: __text
segname: __TEXT
addr: 0x0000000000000000
size: 36
offset: 0x00000220
align: 1
reloff: 0x00000284
nreloc: 8
flags: 0x80000400
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
content: 81B00020009040F24A00C0F200007844006840F24601C0F2000179440968084401B07047
relocations:
- address: 0x00000016
symbolnum: 0
pcrel: false
length: 3
extern: false
type: 9
scattered: true
value: 100
- address: 0x00000046
symbolnum: 0
pcrel: false
length: 3
extern: false
type: 1
scattered: true
value: 26
- address: 0x00000012
symbolnum: 0
pcrel: false
length: 2
extern: false
type: 9
scattered: true
value: 100
- address: 0x00000000
symbolnum: 0
pcrel: false
length: 2
extern: false
type: 1
scattered: true
value: 26
- address: 0x0000000A
symbolnum: 0
pcrel: false
length: 3
extern: false
type: 9
scattered: true
value: 92
- address: 0x0000004A
symbolnum: 0
pcrel: false
length: 3
extern: false
type: 1
scattered: true
value: 14
- address: 0x00000006
symbolnum: 0
pcrel: false
length: 2
extern: false
type: 9
scattered: true
value: 92
- address: 0x00000000
symbolnum: 0
pcrel: false
length: 2
extern: false
type: 1
scattered: true
value: 14
- sectname: __StaticInit
segname: __TEXT
addr: 0x0000000000000024
size: 46
offset: 0x00000244
align: 1
reloff: 0x000002C4
nreloc: 13
flags: 0x80000400
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
content: 40F22800C0F20000784440F21A01C0F200017944081A40F21E01C0F2000179440860704780B56F46FFF7EAFF80BD
relocations:
- address: 0x00000028
symbolnum: 2
pcrel: true
length: 2
extern: false
type: 6
scattered: false
value: 0
- address: 0x0000001A
symbolnum: 0
pcrel: false
length: 3
extern: false
type: 9
scattered: true
value: 100
- address: 0x0000001E
symbolnum: 0
pcrel: false
length: 3
extern: false
type: 1
scattered: true
value: 66
- address: 0x00000016
symbolnum: 0
pcrel: false
length: 2
extern: false
type: 9
scattered: true
value: 100
- address: 0x00000000
symbolnum: 0
pcrel: false
length: 2
extern: false
type: 1
scattered: true
value: 66
- address: 0x0000000E
symbolnum: 0
pcrel: false
length: 3
extern: false
type: 9
scattered: true
value: 84
- address: 0x0000001A
symbolnum: 0
pcrel: false
length: 3
extern: false
type: 1
scattered: true
value: 54
- address: 0x0000000A
symbolnum: 0
pcrel: false
length: 2
extern: false
type: 9
scattered: true
value: 84
- address: 0x00000000
symbolnum: 0
pcrel: false
length: 2
extern: false
type: 1
scattered: true
value: 54
- address: 0x00000004
symbolnum: 0
pcrel: false
length: 3
extern: false
type: 9
scattered: true
value: 88
- address: 0x00000028
symbolnum: 0
pcrel: false
length: 3
extern: false
type: 1
scattered: true
value: 44
- address: 0x00000000
symbolnum: 0
pcrel: false
length: 2
extern: false
type: 9
scattered: true
value: 88
- address: 0x00000000
symbolnum: 0
pcrel: false
length: 2
extern: false
type: 1
scattered: true
value: 44
- sectname: __data
segname: __DATA
addr: 0x0000000000000054
size: 12
offset: 0x00000274
align: 2
reloff: 0x0000032C
nreloc: 1
flags: 0x00000000
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
content: '010000000200000054000000'
relocations:
- address: 0x00000008
symbolnum: 3
pcrel: false
length: 2
extern: false
type: 0
scattered: false
value: 0
- sectname: __common
segname: __DATA
addr: 0x0000000000000064
size: 4
offset: 0x00000000
align: 2
reloff: 0x00000000
nreloc: 0
flags: 0x00000001
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
- sectname: __mod_init_func
segname: __DATA
addr: 0x0000000000000060
size: 4
offset: 0x00000280
align: 2
reloff: 0x00000334
nreloc: 1
flags: 0x00000009
reserved1: 0x00000000
reserved2: 0x00000000
reserved3: 0x00000000
content: '48000000'
relocations:
- address: 0x00000000
symbolnum: 2
pcrel: false
length: 2
extern: false
type: 0
scattered: false
value: 0
- cmd: LC_VERSION_MIN_IPHONEOS
cmdsize: 16
version: 589824
sdk: 0
- cmd: LC_SYMTAB
cmdsize: 24
symoff: 828
nsyms: 7
stroff: 912
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: 8
n_value: 36
- n_strx: 36
n_type: 0x0E
n_sect: 2
n_desc: 8
n_value: 72
- n_strx: 61
n_type: 0x0F
n_sect: 1
n_desc: 8
n_value: 0
- n_strx: 10
n_type: 0x0F
n_sect: 4
n_desc: 0
n_value: 100
- n_strx: 7
n_type: 0x0F
n_sect: 3
n_desc: 0
n_value: 84
- n_strx: 4
n_type: 0x0F
n_sect: 3
n_desc: 0
n_value: 88
- n_strx: 1
n_type: 0x0F
n_sect: 3
n_desc: 0
n_value: 92
StringTable:
- ''
- _z
- _y
- _x
- _w
- ___cxx_global_var_init
- __GLOBAL__sub_I_main.cpp
- _main
- ''
...