# A valid MachO object with a weak-bind table following a bind table ending
# with an effectively no-op opcode `BIND_OPCODE_SET_TYPE_IMM(1)` instead of
# a `BIND_OPCODE_DONE` or an actual bind `BIND_OPCODE_DO_BIND[_*]`, following
# a rebase table ending with an effectively no-op opcode
# `REBASE_OPCODE_SET_TYPE_IMM(1)` instead of a `REBASE_OPCODE_DONE` or an
# actual rebase `REBASE_OPCODE_DO_REBASE_*`.
--- !mach-o
FileHeader:
magic: 0xFEEDFACF
cputype: 0x100000C
cpusubtype: 0x0
filetype: 0x6
ncmds: 15
sizeofcmds: 1232
flags: 0x118085
reserved: 0x0
LoadCommands:
- cmd: LC_SEGMENT_64
cmdsize: 392
segname: __TEXT
vmaddr: 0
vmsize: 32768
fileoff: 0
filesize: 32768
maxprot: 5
initprot: 5
nsects: 4
flags: 0
Sections:
- sectname: __text
segname: __TEXT
addr: 0x4000
size: 32
offset: 0x4000
align: 2
reloff: 0x0
nreloc: 0
flags: 0x80000400
reserved1: 0x0
reserved2: 0x0
reserved3: 0x0
content: C0035FD6FD7BBFA9FD03009105000094000080D206000094FD7BC1A8C0035FD6
- sectname: __stubs
segname: __TEXT
addr: 0x4020
size: 24
offset: 0x4020
align: 2
reloff: 0x0
nreloc: 0
flags: 0x80000408
reserved1: 0x0
reserved2: 0xC
reserved3: 0x0
content: 30000090100240F900021FD650000090100240F900021FD6
- sectname: __stub_helper
segname: __TEXT
addr: 0x4038
size: 36
offset: 0x4038
align: 2
reloff: 0x0
nreloc: 0
flags: 0x80000400
reserved1: 0x0
reserved2: 0x0
reserved3: 0x0
content: 5100009031220091F047BFA930000090100640F900021FD650000018F9FFFF1700000000
- sectname: __unwind_info
segname: __TEXT
addr: 0x405C
size: 96
offset: 0x405C
align: 2
reloff: 0x0
nreloc: 0
flags: 0x0
reserved1: 0x0
reserved2: 0x0
reserved3: 0x0
content: 010000001C000000000000001C000000000000001C00000002000000004000004000000040000000204000000000000040000000000000000000000000000000030000000C000200140002000000000004000001000000020000000400000000
- cmd: LC_SEGMENT_64
cmdsize: 152
segname: __DATA_CONST
vmaddr: 32768
vmsize: 16384
fileoff: 32768
filesize: 16384
maxprot: 3
initprot: 3
nsects: 1
flags: 16
Sections:
- sectname: __got
segname: __DATA_CONST
addr: 0x8000
size: 16
offset: 0x8000
align: 3
reloff: 0x0
nreloc: 0
flags: 0x6
reserved1: 0x2
reserved2: 0x0
reserved3: 0x0
content: '00400000000000000000000000000000'
- cmd: LC_SEGMENT_64
cmdsize: 232
segname: __DATA
vmaddr: 49152
vmsize: 16384
fileoff: 49152
filesize: 16384
maxprot: 3
initprot: 3
nsects: 2
flags: 0
Sections:
- sectname: __la_symbol_ptr
segname: __DATA
addr: 0xC000
size: 8
offset: 0xC000
align: 3
reloff: 0x0
nreloc: 0
flags: 0x7
reserved1: 0x4
reserved2: 0x0
reserved3: 0x0
content: '5040000000000000'
- sectname: __data
segname: __DATA
addr: 0xC008
size: 8
offset: 0xC008
align: 3
reloff: 0x0
nreloc: 0
flags: 0x0
reserved1: 0x0
reserved2: 0x0
reserved3: 0x0
content: '0000000000000000'
- cmd: LC_SEGMENT_64
cmdsize: 72
segname: __LINKEDIT
vmaddr: 65536
vmsize: 16384
fileoff: 65536
filesize: 272
maxprot: 1
initprot: 1
nsects: 0
flags: 0
- cmd: LC_ID_DYLIB
cmdsize: 48
dylib:
name: 24
timestamp: 1
current_version: 0
compatibility_version: 0
Content: '@rpath/libtest.dylib'
ZeroPadBytes: 4
- cmd: LC_DYLD_INFO_ONLY
cmdsize: 48
rebase_off: 65536
rebase_size: 8
bind_off: 65544
bind_size: 24
weak_bind_off: 65568
weak_bind_size: 16
lazy_bind_off: 65584
lazy_bind_size: 16
export_off: 65600
export_size: 40
- cmd: LC_SYMTAB
cmdsize: 24
symoff: 65648
nsyms: 5
stroff: 65752
strsize: 56
- cmd: LC_DYSYMTAB
cmdsize: 80
ilocalsym: 0
nlocalsym: 1
iextdefsym: 1
nextdefsym: 2
iundefsym: 3
nundefsym: 2
tocoff: 0
ntoc: 0
modtaboff: 0
nmodtab: 0
extrefsymoff: 0
nextrefsyms: 0
indirectsymoff: 65728
nindirectsyms: 5
extreloff: 0
nextrel: 0
locreloff: 0
nlocrel: 0
- cmd: LC_UUID
cmdsize: 24
uuid: 3A5ED8A0-F9D2-35D8-8C0E-4914289341CC
- cmd: LC_BUILD_VERSION
cmdsize: 32
platform: 2
minos: 1114112
sdk: 1179648
ntools: 1
Tools:
- tool: 3
version: 73073920
- cmd: LC_SOURCE_VERSION
cmdsize: 16
version: 0
- cmd: LC_ENCRYPTION_INFO_64
cmdsize: 24
cryptoff: 16384
cryptsize: 16384
cryptid: 0
pad: 0
- cmd: LC_LOAD_DYLIB
cmdsize: 56
dylib:
name: 24
timestamp: 2
current_version: 88539136
compatibility_version: 65536
Content: '/usr/lib/libSystem.B.dylib'
ZeroPadBytes: 6
- cmd: LC_FUNCTION_STARTS
cmdsize: 16
dataoff: 65640
datasize: 8
- cmd: LC_DATA_IN_CODE
cmdsize: 16
dataoff: 65648
datasize: 0
LinkEditData:
RebaseOpcodes:
- Opcode: REBASE_OPCODE_SET_TYPE_IMM
Imm: 1
- Opcode: REBASE_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
Imm: 1
ExtraData: [ 0x0 ]
- Opcode: REBASE_OPCODE_DO_REBASE_IMM_TIMES
Imm: 1
- Opcode: REBASE_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
Imm: 2
ExtraData: [ 0x0 ]
- Opcode: REBASE_OPCODE_DO_REBASE_IMM_TIMES
Imm: 1
- Opcode: REBASE_OPCODE_SET_TYPE_IMM
Imm: 1
BindOpcodes:
- Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
Imm: 1
Symbol: ''
- Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
Imm: 0
Symbol: dyld_stub_binder
- Opcode: BIND_OPCODE_SET_TYPE_IMM
Imm: 1
Symbol: ''
- Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
Imm: 1
ULEBExtraData: [ 0x8 ]
Symbol: ''
- Opcode: BIND_OPCODE_DO_BIND
Imm: 0
Symbol: ''
- Opcode: BIND_OPCODE_SET_TYPE_IMM
Imm: 1
Symbol: ''
WeakBindOpcodes:
- Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
Imm: 0
Symbol: _foo
- Opcode: BIND_OPCODE_SET_TYPE_IMM
Imm: 1
Symbol: ''
- Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
Imm: 1
ULEBExtraData: [ 0x0 ]
Symbol: ''
- Opcode: BIND_OPCODE_DO_BIND
Imm: 0
Symbol: ''
- Opcode: BIND_OPCODE_DONE
Imm: 0
Symbol: ''
LazyBindOpcodes:
- Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
Imm: 2
ULEBExtraData: [ 0x0 ]
Symbol: ''
- Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
Imm: 1
Symbol: ''
- Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
Imm: 0
Symbol: _free
- Opcode: BIND_OPCODE_DO_BIND
Imm: 0
Symbol: ''
- Opcode: BIND_OPCODE_DONE
Imm: 0
Symbol: ''
- Opcode: BIND_OPCODE_DONE
Imm: 0
Symbol: ''
- Opcode: BIND_OPCODE_DONE
Imm: 0
Symbol: ''
- Opcode: BIND_OPCODE_DONE
Imm: 0
Symbol: ''
- Opcode: BIND_OPCODE_DONE
Imm: 0
Symbol: ''
ExportTrie:
TerminalSize: 0
NodeOffset: 0
Name: ''
Flags: 0x0
Address: 0x0
Other: 0x0
ImportName: ''
Children:
- TerminalSize: 0
NodeOffset: 21
Name: _
Flags: 0x0
Address: 0x0
Other: 0x0
ImportName: ''
Children:
- TerminalSize: 4
NodeOffset: 9
Name: bar
Flags: 0x0
Address: 0x4004
Other: 0x0
ImportName: ''
- TerminalSize: 4
NodeOffset: 15
Name: foo
Flags: 0x4
Address: 0x4000
Other: 0x0
ImportName: ''
NameList:
- n_strx: 35
n_type: 0xE
n_sect: 7
n_desc: 0
n_value: 49160
- n_strx: 2
n_type: 0xF
n_sect: 1
n_desc: 0
n_value: 16388
- n_strx: 7
n_type: 0xF
n_sect: 1
n_desc: 128
n_value: 16384
- n_strx: 12
n_type: 0x1
n_sect: 0
n_desc: 256
n_value: 0
- n_strx: 18
n_type: 0x1
n_sect: 0
n_desc: 256
n_value: 0
StringTable:
- ' '
- _bar
- _foo
- _free
- dyld_stub_binder
- __dyld_private
- ''
- ''
- ''
- ''
- ''
- ''
IndirectSymbols: [ 0x2, 0x3, 0x2, 0x4, 0x3 ]
FunctionStarts: [ 0x4000, 0x4004 ]
...