mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
[llvm-lipo] Implement -replace
Replaces specified architecture in universal binary input file with slice from the file_name argument passed into the replace command. Differential Revision: https://reviews.llvm.org/D65247 llvm-svn: 367248
This commit is contained in:
parent
08e492dcba
commit
8df3777583
934
test/tools/llvm-lipo/Inputs/armv7-slice-big.yaml
Normal file
934
test/tools/llvm-lipo/Inputs/armv7-slice-big.yaml
Normal file
@ -0,0 +1,934 @@
|
||||
--- !mach-o
|
||||
FileHeader:
|
||||
magic: 0xFEEDFACE
|
||||
cputype: 0x0000000C
|
||||
cpusubtype: 0x00000009
|
||||
filetype: 0x00000002
|
||||
ncmds: 27
|
||||
sizeofcmds: 2176
|
||||
flags: 0x00200085
|
||||
LoadCommands:
|
||||
- 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: 260
|
||||
segname: __TEXT
|
||||
vmaddr: 16384
|
||||
vmsize: 32768
|
||||
fileoff: 0
|
||||
filesize: 32768
|
||||
maxprot: 5
|
||||
initprot: 5
|
||||
nsects: 3
|
||||
flags: 0
|
||||
Sections:
|
||||
- sectname: __text
|
||||
segname: __TEXT
|
||||
addr: 0x000000000000BBA0
|
||||
size: 804
|
||||
offset: 0x00007BA0
|
||||
align: 2
|
||||
reloff: 0x00000000
|
||||
nreloc: 0
|
||||
flags: 0x80000400
|
||||
reserved1: 0x00000000
|
||||
reserved2: 0x00000000
|
||||
reserved3: 0x00000000
|
||||
- sectname: __picsymbolstub4
|
||||
segname: __TEXT
|
||||
addr: 0x000000000000BEC4
|
||||
size: 160
|
||||
offset: 0x00007EC4
|
||||
align: 2
|
||||
reloff: 0x00000000
|
||||
nreloc: 0
|
||||
flags: 0x80000408
|
||||
reserved1: 0x00000000
|
||||
reserved2: 0x00000010
|
||||
reserved3: 0x00000000
|
||||
- sectname: __stub_helper
|
||||
segname: __TEXT
|
||||
addr: 0x000000000000BF64
|
||||
size: 156
|
||||
offset: 0x00007F64
|
||||
align: 2
|
||||
reloff: 0x00000000
|
||||
nreloc: 0
|
||||
flags: 0x80000400
|
||||
reserved1: 0x00000000
|
||||
reserved2: 0x00000000
|
||||
reserved3: 0x00000000
|
||||
- cmd: LC_SEGMENT
|
||||
cmdsize: 600
|
||||
segname: __DATA
|
||||
vmaddr: 49152
|
||||
vmsize: 16384
|
||||
fileoff: 32768
|
||||
filesize: 16384
|
||||
maxprot: 3
|
||||
initprot: 3
|
||||
nsects: 8
|
||||
flags: 0
|
||||
Sections:
|
||||
- sectname: __nl_symbol_ptr
|
||||
segname: __DATA
|
||||
addr: 0x000000000000C000
|
||||
size: 12
|
||||
offset: 0x00008000
|
||||
align: 2
|
||||
reloff: 0x00000000
|
||||
nreloc: 0
|
||||
flags: 0x00000006
|
||||
reserved1: 0x0000000A
|
||||
reserved2: 0x00000000
|
||||
reserved3: 0x00000000
|
||||
- sectname: __la_symbol_ptr
|
||||
segname: __DATA
|
||||
addr: 0x000000000000C00C
|
||||
size: 40
|
||||
offset: 0x0000800C
|
||||
align: 2
|
||||
reloff: 0x00000000
|
||||
nreloc: 0
|
||||
flags: 0x00000007
|
||||
reserved1: 0x0000000D
|
||||
reserved2: 0x00000000
|
||||
reserved3: 0x00000000
|
||||
- sectname: __mod_init_func
|
||||
segname: __DATA
|
||||
addr: 0x000000000000C034
|
||||
size: 4
|
||||
offset: 0x00008034
|
||||
align: 2
|
||||
reloff: 0x00000000
|
||||
nreloc: 0
|
||||
flags: 0x00000009
|
||||
reserved1: 0x00000000
|
||||
reserved2: 0x00000000
|
||||
reserved3: 0x00000000
|
||||
- sectname: __const
|
||||
segname: __DATA
|
||||
addr: 0x000000000000C038
|
||||
size: 36
|
||||
offset: 0x00008038
|
||||
align: 2
|
||||
reloff: 0x00000000
|
||||
nreloc: 0
|
||||
flags: 0x00000000
|
||||
reserved1: 0x00000000
|
||||
reserved2: 0x00000000
|
||||
reserved3: 0x00000000
|
||||
- sectname: __cfstring
|
||||
segname: __DATA
|
||||
addr: 0x000000000000C05C
|
||||
size: 160
|
||||
offset: 0x0000805C
|
||||
align: 2
|
||||
reloff: 0x00000000
|
||||
nreloc: 0
|
||||
flags: 0x00000000
|
||||
reserved1: 0x00000000
|
||||
reserved2: 0x00000000
|
||||
reserved3: 0x00000000
|
||||
- sectname: __objc_imageinfo
|
||||
segname: __DATA
|
||||
addr: 0x000000000000C0FC
|
||||
size: 8
|
||||
offset: 0x000080FC
|
||||
align: 2
|
||||
reloff: 0x00000000
|
||||
nreloc: 0
|
||||
flags: 0x00000000
|
||||
reserved1: 0x00000000
|
||||
reserved2: 0x00000000
|
||||
reserved3: 0x00000000
|
||||
- sectname: __objc_selrefs
|
||||
segname: __DATA
|
||||
addr: 0x000000000000C104
|
||||
size: 44
|
||||
offset: 0x00008104
|
||||
align: 2
|
||||
reloff: 0x00000000
|
||||
nreloc: 0
|
||||
flags: 0x10000005
|
||||
reserved1: 0x00000000
|
||||
reserved2: 0x00000000
|
||||
reserved3: 0x00000000
|
||||
- sectname: __objc_classrefs
|
||||
segname: __DATA
|
||||
addr: 0x000000000000C130
|
||||
size: 20
|
||||
offset: 0x00008130
|
||||
align: 2
|
||||
reloff: 0x00000000
|
||||
nreloc: 0
|
||||
flags: 0x10000000
|
||||
reserved1: 0x00000000
|
||||
reserved2: 0x00000000
|
||||
reserved3: 0x00000000
|
||||
- cmd: LC_SEGMENT
|
||||
cmdsize: 192
|
||||
segname: __RODATA
|
||||
vmaddr: 65536
|
||||
vmsize: 16384
|
||||
fileoff: 49152
|
||||
filesize: 16384
|
||||
maxprot: 1
|
||||
initprot: 1
|
||||
nsects: 2
|
||||
flags: 0
|
||||
Sections:
|
||||
- sectname: __cstring
|
||||
segname: __RODATA
|
||||
addr: 0x0000000000010000
|
||||
size: 191
|
||||
offset: 0x0000C000
|
||||
align: 0
|
||||
reloff: 0x00000000
|
||||
nreloc: 0
|
||||
flags: 0x00000002
|
||||
reserved1: 0x00000000
|
||||
reserved2: 0x00000000
|
||||
reserved3: 0x00000000
|
||||
- sectname: __objc_methname
|
||||
segname: __RODATA
|
||||
addr: 0x00000000000100BF
|
||||
size: 243
|
||||
offset: 0x0000C0BF
|
||||
align: 0
|
||||
reloff: 0x00000000
|
||||
nreloc: 0
|
||||
flags: 0x00000002
|
||||
reserved1: 0x00000000
|
||||
reserved2: 0x00000000
|
||||
reserved3: 0x00000000
|
||||
- cmd: LC_SEGMENT
|
||||
cmdsize: 56
|
||||
segname: __LINKEDIT
|
||||
vmaddr: 81920
|
||||
vmsize: 32768
|
||||
fileoff: 65536
|
||||
filesize: 22592
|
||||
maxprot: 1
|
||||
initprot: 1
|
||||
nsects: 0
|
||||
flags: 0
|
||||
- cmd: LC_DYLD_INFO_ONLY
|
||||
cmdsize: 48
|
||||
rebase_off: 65536
|
||||
rebase_size: 16
|
||||
bind_off: 65552
|
||||
bind_size: 316
|
||||
weak_bind_off: 0
|
||||
weak_bind_size: 0
|
||||
lazy_bind_off: 65868
|
||||
lazy_bind_size: 260
|
||||
export_off: 66128
|
||||
export_size: 60
|
||||
- cmd: LC_SYMTAB
|
||||
cmdsize: 24
|
||||
symoff: 66220
|
||||
nsyms: 29
|
||||
stroff: 66660
|
||||
strsize: 708
|
||||
- cmd: LC_DYSYMTAB
|
||||
cmdsize: 80
|
||||
ilocalsym: 0
|
||||
nlocalsym: 7
|
||||
iextdefsym: 7
|
||||
nextdefsym: 3
|
||||
iundefsym: 10
|
||||
nundefsym: 19
|
||||
tocoff: 0
|
||||
ntoc: 0
|
||||
modtaboff: 0
|
||||
nmodtab: 0
|
||||
extrefsymoff: 0
|
||||
nextrefsyms: 0
|
||||
indirectsymoff: 66568
|
||||
nindirectsyms: 23
|
||||
extreloff: 0
|
||||
nextrel: 0
|
||||
locreloff: 0
|
||||
nlocrel: 0
|
||||
- cmd: LC_LOAD_DYLINKER
|
||||
cmdsize: 28
|
||||
name: 12
|
||||
PayloadString: '/usr/lib/dyld'
|
||||
ZeroPadBytes: 3
|
||||
- cmd: LC_UUID
|
||||
cmdsize: 24
|
||||
uuid: D36E4B66-CF78-37EC-B274-9DDADEECE4C1
|
||||
- cmd: LC_VERSION_MIN_IPHONEOS
|
||||
cmdsize: 16
|
||||
version: 589824
|
||||
sdk: 786944
|
||||
- cmd: LC_SOURCE_VERSION
|
||||
cmdsize: 16
|
||||
version: 0
|
||||
- cmd: LC_MAIN
|
||||
cmdsize: 24
|
||||
entryoff: 31913
|
||||
stacksize: 0
|
||||
- cmd: LC_ENCRYPTION_INFO
|
||||
cmdsize: 20
|
||||
cryptoff: 16384
|
||||
cryptsize: 16384
|
||||
cryptid: 0
|
||||
- cmd: LC_LOAD_DYLIB
|
||||
cmdsize: 48
|
||||
dylib:
|
||||
name: 24
|
||||
timestamp: 2
|
||||
current_version: 26216708
|
||||
compatibility_version: 65536
|
||||
PayloadString: '/usr/lib/libc++.1.dylib'
|
||||
ZeroPadBytes: 1
|
||||
- cmd: LC_LOAD_DYLIB
|
||||
cmdsize: 68
|
||||
dylib:
|
||||
name: 24
|
||||
timestamp: 2
|
||||
current_version: 0
|
||||
compatibility_version: 0
|
||||
PayloadString: '@rpath/MobileConfig.framework/MobileConfig'
|
||||
ZeroPadBytes: 2
|
||||
- cmd: LC_LOAD_DYLIB
|
||||
cmdsize: 84
|
||||
dylib:
|
||||
name: 24
|
||||
timestamp: 2
|
||||
current_version: 102895360
|
||||
compatibility_version: 19660800
|
||||
PayloadString: '/System/Library/Frameworks/Foundation.framework/Foundation'
|
||||
ZeroPadBytes: 2
|
||||
- cmd: LC_LOAD_DYLIB
|
||||
cmdsize: 76
|
||||
dylib:
|
||||
name: 24
|
||||
timestamp: 2
|
||||
current_version: 917504
|
||||
compatibility_version: 65536
|
||||
PayloadString: '/System/Library/Frameworks/MapKit.framework/MapKit'
|
||||
ZeroPadBytes: 2
|
||||
- cmd: LC_LOAD_DYLIB
|
||||
cmdsize: 84
|
||||
dylib:
|
||||
name: 24
|
||||
timestamp: 2
|
||||
current_version: 68352
|
||||
compatibility_version: 66048
|
||||
PayloadString: '/System/Library/Frameworks/QuartzCore.framework/QuartzCore'
|
||||
ZeroPadBytes: 2
|
||||
- cmd: LC_LOAD_DYLIB
|
||||
cmdsize: 76
|
||||
dylib:
|
||||
name: 24
|
||||
timestamp: 2
|
||||
current_version: 3997696000
|
||||
compatibility_version: 65536
|
||||
PayloadString: '/System/Library/Frameworks/UIKit.framework/UIKit'
|
||||
ZeroPadBytes: 4
|
||||
- cmd: LC_LOAD_DYLIB
|
||||
cmdsize: 52
|
||||
dylib:
|
||||
name: 24
|
||||
timestamp: 2
|
||||
current_version: 14942208
|
||||
compatibility_version: 65536
|
||||
PayloadString: '/usr/lib/libobjc.A.dylib'
|
||||
ZeroPadBytes: 4
|
||||
- cmd: LC_LOAD_DYLIB
|
||||
cmdsize: 52
|
||||
dylib:
|
||||
name: 24
|
||||
timestamp: 2
|
||||
current_version: 82115073
|
||||
compatibility_version: 65536
|
||||
PayloadString: '/usr/lib/libSystem.B.dylib'
|
||||
ZeroPadBytes: 2
|
||||
- cmd: LC_LOAD_DYLIB
|
||||
cmdsize: 92
|
||||
dylib:
|
||||
name: 24
|
||||
timestamp: 2
|
||||
current_version: 102895360
|
||||
compatibility_version: 9830400
|
||||
PayloadString: '/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation'
|
||||
ZeroPadBytes: 2
|
||||
- cmd: LC_RPATH
|
||||
cmdsize: 28
|
||||
path: 12
|
||||
PayloadString: '/usr/lib/swift'
|
||||
ZeroPadBytes: 2
|
||||
- cmd: LC_RPATH
|
||||
cmdsize: 40
|
||||
path: 12
|
||||
PayloadString: '@executable_path/Frameworks'
|
||||
ZeroPadBytes: 1
|
||||
- cmd: LC_DATA_IN_CODE
|
||||
cmdsize: 16
|
||||
dataoff: 66188
|
||||
datasize: 32
|
||||
- cmd: LC_CODE_SIGNATURE
|
||||
cmdsize: 16
|
||||
dataoff: 67376
|
||||
datasize: 20752
|
||||
LinkEditData:
|
||||
RebaseOpcodes:
|
||||
- Opcode: REBASE_OPCODE_SET_TYPE_IMM
|
||||
Imm: 1
|
||||
- Opcode: REBASE_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
|
||||
Imm: 2
|
||||
ExtraData:
|
||||
- 0x000000000000000C
|
||||
- Opcode: REBASE_OPCODE_DO_REBASE_IMM_TIMES
|
||||
Imm: 11
|
||||
- Opcode: REBASE_OPCODE_ADD_ADDR_IMM_SCALED
|
||||
Imm: 2
|
||||
- Opcode: REBASE_OPCODE_DO_REBASE_ADD_ADDR_ULEB
|
||||
Imm: 0
|
||||
ExtraData:
|
||||
- 0x0000000000000010
|
||||
- Opcode: REBASE_OPCODE_DO_REBASE_IMM_TIMES
|
||||
Imm: 2
|
||||
- Opcode: REBASE_OPCODE_ADD_ADDR_IMM_SCALED
|
||||
Imm: 2
|
||||
- Opcode: REBASE_OPCODE_DO_REBASE_ULEB_TIMES_SKIPPING_ULEB
|
||||
Imm: 0
|
||||
ExtraData:
|
||||
- 0x000000000000000A
|
||||
- 0x000000000000000C
|
||||
- Opcode: REBASE_OPCODE_DO_REBASE_IMM_TIMES
|
||||
Imm: 11
|
||||
- Opcode: REBASE_OPCODE_DONE
|
||||
Imm: 0
|
||||
BindOpcodes:
|
||||
- Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
|
||||
Imm: 3
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
|
||||
Imm: 0
|
||||
Symbol: '_OBJC_CLASS_$_NSBundle'
|
||||
- Opcode: BIND_OPCODE_SET_TYPE_IMM
|
||||
Imm: 1
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
|
||||
Imm: 2
|
||||
ULEBExtraData:
|
||||
- 0x0000000000000140
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_DO_BIND
|
||||
Imm: 0
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
|
||||
Imm: 0
|
||||
Symbol: '_OBJC_CLASS_$_NSJSONSerialization'
|
||||
- Opcode: BIND_OPCODE_ADD_ADDR_ULEB
|
||||
Imm: 0
|
||||
ULEBExtraData:
|
||||
- 0xFFFFFFFFFFFFFFF0
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_DO_BIND
|
||||
Imm: 0
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
|
||||
Imm: 7
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
|
||||
Imm: 0
|
||||
Symbol: _objc_release
|
||||
- Opcode: BIND_OPCODE_ADD_ADDR_ULEB
|
||||
Imm: 0
|
||||
ULEBExtraData:
|
||||
- 0xFFFFFFFFFFFFFED0
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_DO_BIND
|
||||
Imm: 0
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
|
||||
Imm: 8
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
|
||||
Imm: 0
|
||||
Symbol: __NSConcreteGlobalBlock
|
||||
- Opcode: BIND_OPCODE_ADD_ADDR_ULEB
|
||||
Imm: 0
|
||||
ULEBExtraData:
|
||||
- 0x000000000000003C
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_DO_BIND
|
||||
Imm: 0
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
|
||||
Imm: 0
|
||||
Symbol: dyld_stub_binder
|
||||
- Opcode: BIND_OPCODE_ADD_ADDR_ULEB
|
||||
Imm: 0
|
||||
ULEBExtraData:
|
||||
- 0xFFFFFFFFFFFFFFB4
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_DO_BIND
|
||||
Imm: 0
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
|
||||
Imm: 9
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
|
||||
Imm: 0
|
||||
Symbol: '_OBJC_CLASS_$_NSData'
|
||||
- Opcode: BIND_OPCODE_ADD_ADDR_ULEB
|
||||
Imm: 0
|
||||
ULEBExtraData:
|
||||
- 0x000000000000012C
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_DO_BIND
|
||||
Imm: 0
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
|
||||
Imm: 0
|
||||
Symbol: '_OBJC_CLASS_$_NSMutableArray'
|
||||
- Opcode: BIND_OPCODE_ADD_ADDR_ULEB
|
||||
Imm: 0
|
||||
ULEBExtraData:
|
||||
- 0x0000000000000008
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_DO_BIND
|
||||
Imm: 0
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
|
||||
Imm: 0
|
||||
Symbol: '_OBJC_CLASS_$_NSUserDefaults'
|
||||
- Opcode: BIND_OPCODE_ADD_ADDR_ULEB
|
||||
Imm: 0
|
||||
ULEBExtraData:
|
||||
- 0xFFFFFFFFFFFFFFF8
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_DO_BIND
|
||||
Imm: 0
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
|
||||
Imm: 0
|
||||
Symbol: ___CFConstantStringClassReference
|
||||
- Opcode: BIND_OPCODE_ADD_ADDR_ULEB
|
||||
Imm: 0
|
||||
ULEBExtraData:
|
||||
- 0xFFFFFFFFFFFFFF20
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_DO_BIND_ULEB_TIMES_SKIPPING_ULEB
|
||||
Imm: 0
|
||||
ULEBExtraData:
|
||||
- 0x0000000000000009
|
||||
- 0x000000000000000C
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_DO_BIND
|
||||
Imm: 0
|
||||
Symbol: ''
|
||||
LazyBindOpcodes:
|
||||
- Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
|
||||
Imm: 2
|
||||
ULEBExtraData:
|
||||
- 0x000000000000000C
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
|
||||
Imm: 3
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
|
||||
Imm: 0
|
||||
Symbol: _NSClassFromString
|
||||
- Opcode: BIND_OPCODE_DO_BIND
|
||||
Imm: 0
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_DONE
|
||||
Imm: 0
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
|
||||
Imm: 2
|
||||
ULEBExtraData:
|
||||
- 0x0000000000000010
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
|
||||
Imm: 6
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
|
||||
Imm: 0
|
||||
Symbol: _UIApplicationMain
|
||||
- Opcode: BIND_OPCODE_DO_BIND
|
||||
Imm: 0
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_DONE
|
||||
Imm: 0
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
|
||||
Imm: 2
|
||||
ULEBExtraData:
|
||||
- 0x0000000000000014
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
|
||||
Imm: 7
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
|
||||
Imm: 0
|
||||
Symbol: _objc_autoreleasePoolPop
|
||||
- Opcode: BIND_OPCODE_DO_BIND
|
||||
Imm: 0
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_DONE
|
||||
Imm: 0
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
|
||||
Imm: 2
|
||||
ULEBExtraData:
|
||||
- 0x0000000000000018
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
|
||||
Imm: 7
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
|
||||
Imm: 0
|
||||
Symbol: _objc_autoreleasePoolPush
|
||||
- Opcode: BIND_OPCODE_DO_BIND
|
||||
Imm: 0
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_DONE
|
||||
Imm: 0
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
|
||||
Imm: 2
|
||||
ULEBExtraData:
|
||||
- 0x000000000000001C
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
|
||||
Imm: 7
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
|
||||
Imm: 0
|
||||
Symbol: _objc_autoreleaseReturnValue
|
||||
- Opcode: BIND_OPCODE_DO_BIND
|
||||
Imm: 0
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_DONE
|
||||
Imm: 0
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
|
||||
Imm: 2
|
||||
ULEBExtraData:
|
||||
- 0x0000000000000020
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
|
||||
Imm: 7
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
|
||||
Imm: 0
|
||||
Symbol: _objc_msgSend
|
||||
- Opcode: BIND_OPCODE_DO_BIND
|
||||
Imm: 0
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_DONE
|
||||
Imm: 0
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
|
||||
Imm: 2
|
||||
ULEBExtraData:
|
||||
- 0x0000000000000024
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
|
||||
Imm: 7
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
|
||||
Imm: 0
|
||||
Symbol: _objc_release
|
||||
- Opcode: BIND_OPCODE_DO_BIND
|
||||
Imm: 0
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_DONE
|
||||
Imm: 0
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
|
||||
Imm: 2
|
||||
ULEBExtraData:
|
||||
- 0x0000000000000028
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
|
||||
Imm: 7
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
|
||||
Imm: 0
|
||||
Symbol: _objc_retainAutoreleasedReturnValue
|
||||
- Opcode: BIND_OPCODE_DO_BIND
|
||||
Imm: 0
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_DONE
|
||||
Imm: 0
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
|
||||
Imm: 2
|
||||
ULEBExtraData:
|
||||
- 0x000000000000002C
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
|
||||
Imm: 8
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
|
||||
Imm: 0
|
||||
Symbol: _strcmp
|
||||
- Opcode: BIND_OPCODE_DO_BIND
|
||||
Imm: 0
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_DONE
|
||||
Imm: 0
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
|
||||
Imm: 2
|
||||
ULEBExtraData:
|
||||
- 0x0000000000000030
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
|
||||
Imm: 8
|
||||
Symbol: ''
|
||||
- Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
|
||||
Imm: 0
|
||||
Symbol: _strlen
|
||||
- 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: ''
|
||||
ExportTrie:
|
||||
TerminalSize: 0
|
||||
NodeOffset: 0
|
||||
Name: ''
|
||||
Flags: 0x0000000000000000
|
||||
Address: 0x0000000000000000
|
||||
Other: 0x0000000000000000
|
||||
ImportName: ''
|
||||
Children:
|
||||
- TerminalSize: 0
|
||||
NodeOffset: 5
|
||||
Name: _
|
||||
Flags: 0x0000000000000000
|
||||
Address: 0x0000000000000000
|
||||
Other: 0x0000000000000000
|
||||
ImportName: ''
|
||||
Children:
|
||||
- TerminalSize: 2
|
||||
NodeOffset: 41
|
||||
Name: _mh_execute_header
|
||||
Flags: 0x0000000000000000
|
||||
Address: 0x0000000000000000
|
||||
Other: 0x0000000000000000
|
||||
ImportName: ''
|
||||
- TerminalSize: 4
|
||||
NodeOffset: 45
|
||||
Name: main
|
||||
Flags: 0x0000000000000000
|
||||
Address: 0x0000000000007CA9
|
||||
Other: 0x0000000000000000
|
||||
ImportName: ''
|
||||
- TerminalSize: 4
|
||||
NodeOffset: 51
|
||||
Name: MNMain
|
||||
Flags: 0x0000000000000000
|
||||
Address: 0x0000000000007E45
|
||||
Other: 0x0000000000000000
|
||||
ImportName: ''
|
||||
NameList:
|
||||
- n_strx: 461
|
||||
n_type: 0x0E
|
||||
n_sect: 1
|
||||
n_desc: 8
|
||||
n_value: 48032
|
||||
- n_strx: 487
|
||||
n_type: 0x0E
|
||||
n_sect: 1
|
||||
n_desc: 8
|
||||
n_value: 48776
|
||||
- n_strx: 540
|
||||
n_type: 0x1E
|
||||
n_sect: 1
|
||||
n_desc: 8
|
||||
n_value: 48812
|
||||
- n_strx: 559
|
||||
n_type: 0x1E
|
||||
n_sect: 1
|
||||
n_desc: 8
|
||||
n_value: 48824
|
||||
- n_strx: 593
|
||||
n_type: 0x1E
|
||||
n_sect: 3
|
||||
n_desc: 0
|
||||
n_value: 48996
|
||||
- n_strx: 607
|
||||
n_type: 0x0E
|
||||
n_sect: 7
|
||||
n_desc: 0
|
||||
n_value: 49208
|
||||
- n_strx: 656
|
||||
n_type: 0x0E
|
||||
n_sect: 7
|
||||
n_desc: 0
|
||||
n_value: 49224
|
||||
- n_strx: 4
|
||||
n_type: 0x0F
|
||||
n_sect: 1
|
||||
n_desc: 8
|
||||
n_value: 48708
|
||||
- n_strx: 12
|
||||
n_type: 0x0F
|
||||
n_sect: 1
|
||||
n_desc: 16
|
||||
n_value: 16384
|
||||
- n_strx: 32
|
||||
n_type: 0x0F
|
||||
n_sect: 1
|
||||
n_desc: 8
|
||||
n_value: 48296
|
||||
- n_strx: 38
|
||||
n_type: 0x01
|
||||
n_sect: 0
|
||||
n_desc: 768
|
||||
n_value: 0
|
||||
- n_strx: 57
|
||||
n_type: 0x01
|
||||
n_sect: 0
|
||||
n_desc: 768
|
||||
n_value: 0
|
||||
- n_strx: 80
|
||||
n_type: 0x01
|
||||
n_sect: 0
|
||||
n_desc: 2304
|
||||
n_value: 0
|
||||
- n_strx: 101
|
||||
n_type: 0x01
|
||||
n_sect: 0
|
||||
n_desc: 768
|
||||
n_value: 0
|
||||
- n_strx: 135
|
||||
n_type: 0x01
|
||||
n_sect: 0
|
||||
n_desc: 2304
|
||||
n_value: 0
|
||||
- n_strx: 164
|
||||
n_type: 0x01
|
||||
n_sect: 0
|
||||
n_desc: 2304
|
||||
n_value: 0
|
||||
- n_strx: 193
|
||||
n_type: 0x01
|
||||
n_sect: 0
|
||||
n_desc: 1536
|
||||
n_value: 0
|
||||
- n_strx: 212
|
||||
n_type: 0x01
|
||||
n_sect: 0
|
||||
n_desc: 2048
|
||||
n_value: 0
|
||||
- n_strx: 236
|
||||
n_type: 0x01
|
||||
n_sect: 0
|
||||
n_desc: 2304
|
||||
n_value: 0
|
||||
- n_strx: 270
|
||||
n_type: 0x01
|
||||
n_sect: 0
|
||||
n_desc: 2048
|
||||
n_value: 0
|
||||
- n_strx: 284
|
||||
n_type: 0x01
|
||||
n_sect: 0
|
||||
n_desc: 1792
|
||||
n_value: 0
|
||||
- n_strx: 309
|
||||
n_type: 0x01
|
||||
n_sect: 0
|
||||
n_desc: 1792
|
||||
n_value: 0
|
||||
- n_strx: 335
|
||||
n_type: 0x01
|
||||
n_sect: 0
|
||||
n_desc: 1792
|
||||
n_value: 0
|
||||
- n_strx: 364
|
||||
n_type: 0x01
|
||||
n_sect: 0
|
||||
n_desc: 1792
|
||||
n_value: 0
|
||||
- n_strx: 378
|
||||
n_type: 0x01
|
||||
n_sect: 0
|
||||
n_desc: 1792
|
||||
n_value: 0
|
||||
- n_strx: 392
|
||||
n_type: 0x01
|
||||
n_sect: 0
|
||||
n_desc: 1792
|
||||
n_value: 0
|
||||
- n_strx: 428
|
||||
n_type: 0x01
|
||||
n_sect: 0
|
||||
n_desc: 2048
|
||||
n_value: 0
|
||||
- n_strx: 436
|
||||
n_type: 0x01
|
||||
n_sect: 0
|
||||
n_desc: 2048
|
||||
n_value: 0
|
||||
- n_strx: 444
|
||||
n_type: 0x01
|
||||
n_sect: 0
|
||||
n_desc: 2048
|
||||
n_value: 0
|
||||
StringTable:
|
||||
- ''
|
||||
- ''
|
||||
- ''
|
||||
- ''
|
||||
- _MNMain
|
||||
- __mh_execute_header
|
||||
- _main
|
||||
- _NSClassFromString
|
||||
- '_OBJC_CLASS_$_NSBundle'
|
||||
- '_OBJC_CLASS_$_NSData'
|
||||
- '_OBJC_CLASS_$_NSJSONSerialization'
|
||||
- '_OBJC_CLASS_$_NSMutableArray'
|
||||
- '_OBJC_CLASS_$_NSUserDefaults'
|
||||
- _UIApplicationMain
|
||||
- __NSConcreteGlobalBlock
|
||||
- ___CFConstantStringClassReference
|
||||
- ___truncdfhf2
|
||||
- _objc_autoreleasePoolPop
|
||||
- _objc_autoreleasePoolPush
|
||||
- _objc_autoreleaseReturnValue
|
||||
- _objc_msgSend
|
||||
- _objc_release
|
||||
- _objc_retainAutoreleasedReturnValue
|
||||
- _strcmp
|
||||
- _strlen
|
||||
- dyld_stub_binder
|
||||
- _FBParseCommandLineParams
|
||||
- ___MNMain_block_invoke_7636.llvm.6232502296855065941
|
||||
- '_objc_release$shim'
|
||||
- '_objc_autoreleaseReturnValue$shim'
|
||||
- ' stub helpers'
|
||||
- ___block_descriptor_tmp.llvm.6232502296855065941
|
||||
- ___block_literal_global.llvm.6232502296855065941
|
||||
- ''
|
||||
- ''
|
||||
- ''
|
||||
...
|
@ -0,0 +1,191 @@
|
||||
--- !fat-mach-o
|
||||
FatHeader:
|
||||
magic: 0xCAFEBABE
|
||||
nfat_arch: 2
|
||||
FatArchs:
|
||||
- cputype: 0x0000000C
|
||||
cpusubtype: 0x00000009
|
||||
offset: 0x0000000000000030
|
||||
size: 432
|
||||
align: 4
|
||||
- cputype: 0x00000007
|
||||
cpusubtype: 0x00000003
|
||||
offset: 0x0000000000001000
|
||||
size: 432
|
||||
align: 12
|
||||
Slices:
|
||||
- !mach-o
|
||||
FileHeader:
|
||||
magic: 0xFEEDFACE
|
||||
cputype: 0x0000000C
|
||||
cpusubtype: 0x00000009
|
||||
filetype: 0x00000001
|
||||
ncmds: 4
|
||||
sizeofcmds: 312
|
||||
flags: 0x00002000
|
||||
LoadCommands:
|
||||
- cmd: LC_SEGMENT
|
||||
cmdsize: 192
|
||||
segname: ''
|
||||
vmaddr: 0
|
||||
vmsize: 72
|
||||
fileoff: 340
|
||||
filesize: 72
|
||||
maxprot: 7
|
||||
initprot: 7
|
||||
nsects: 2
|
||||
flags: 0
|
||||
Sections:
|
||||
- sectname: __text
|
||||
segname: __TEXT
|
||||
addr: 0x0000000000000000
|
||||
size: 18
|
||||
offset: 0x00000154
|
||||
align: 4
|
||||
reloff: 0x00000000
|
||||
nreloc: 0
|
||||
flags: 0x80000400
|
||||
reserved1: 0x00000000
|
||||
reserved2: 0x00000000
|
||||
reserved3: 0x00000000
|
||||
- sectname: __eh_frame
|
||||
segname: __TEXT
|
||||
addr: 0x0000000000000014
|
||||
size: 52
|
||||
offset: 0x00000168
|
||||
align: 2
|
||||
reloff: 0x00000000
|
||||
nreloc: 0
|
||||
flags: 0x6800000B
|
||||
reserved1: 0x00000000
|
||||
reserved2: 0x00000000
|
||||
reserved3: 0x00000000
|
||||
- cmd: LC_VERSION_MIN_MACOSX
|
||||
cmdsize: 16
|
||||
version: 656384
|
||||
sdk: 0
|
||||
- cmd: LC_SYMTAB
|
||||
cmdsize: 24
|
||||
symoff: 412
|
||||
nsyms: 1
|
||||
stroff: 424
|
||||
strsize: 8
|
||||
- cmd: LC_DYSYMTAB
|
||||
cmdsize: 80
|
||||
ilocalsym: 0
|
||||
nlocalsym: 0
|
||||
iextdefsym: 0
|
||||
nextdefsym: 1
|
||||
iundefsym: 1
|
||||
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: 1
|
||||
n_type: 0x0F
|
||||
n_sect: 1
|
||||
n_desc: 0
|
||||
n_value: 0
|
||||
StringTable:
|
||||
- ''
|
||||
- _main
|
||||
- ''
|
||||
- !mach-o
|
||||
FileHeader:
|
||||
magic: 0xFEEDFACE
|
||||
cputype: 0x00000007
|
||||
cpusubtype: 0x00000003
|
||||
filetype: 0x00000001
|
||||
ncmds: 4
|
||||
sizeofcmds: 312
|
||||
flags: 0x00002000
|
||||
LoadCommands:
|
||||
- cmd: LC_SEGMENT
|
||||
cmdsize: 192
|
||||
segname: ''
|
||||
vmaddr: 0
|
||||
vmsize: 72
|
||||
fileoff: 340
|
||||
filesize: 72
|
||||
maxprot: 7
|
||||
initprot: 7
|
||||
nsects: 2
|
||||
flags: 0
|
||||
Sections:
|
||||
- sectname: __text
|
||||
segname: __TEXT
|
||||
addr: 0x0000000000000000
|
||||
size: 18
|
||||
offset: 0x00000154
|
||||
align: 4
|
||||
reloff: 0x00000000
|
||||
nreloc: 0
|
||||
flags: 0x80000400
|
||||
reserved1: 0x00000000
|
||||
reserved2: 0x00000000
|
||||
reserved3: 0x00000000
|
||||
- sectname: __eh_frame
|
||||
segname: __TEXT
|
||||
addr: 0x0000000000000014
|
||||
size: 52
|
||||
offset: 0x00000168
|
||||
align: 2
|
||||
reloff: 0x00000000
|
||||
nreloc: 0
|
||||
flags: 0x6800000B
|
||||
reserved1: 0x00000000
|
||||
reserved2: 0x00000000
|
||||
reserved3: 0x00000000
|
||||
- cmd: LC_VERSION_MIN_MACOSX
|
||||
cmdsize: 16
|
||||
version: 656384
|
||||
sdk: 0
|
||||
- cmd: LC_SYMTAB
|
||||
cmdsize: 24
|
||||
symoff: 412
|
||||
nsyms: 1
|
||||
stroff: 424
|
||||
strsize: 8
|
||||
- cmd: LC_DYSYMTAB
|
||||
cmdsize: 80
|
||||
ilocalsym: 0
|
||||
nlocalsym: 0
|
||||
iextdefsym: 0
|
||||
nextdefsym: 1
|
||||
iundefsym: 1
|
||||
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: 1
|
||||
n_type: 0x0F
|
||||
n_sect: 1
|
||||
n_desc: 0
|
||||
n_value: 0
|
||||
StringTable:
|
||||
- ''
|
||||
- _main
|
||||
- ''
|
||||
...
|
@ -0,0 +1,377 @@
|
||||
--- !fat-mach-o
|
||||
FatHeader:
|
||||
magic: 0xCAFEBABE
|
||||
nfat_arch: 4
|
||||
FatArchs:
|
||||
- cputype: 0x00000007
|
||||
cpusubtype: 0x00000003
|
||||
offset: 0x0000000000001000
|
||||
size: 432
|
||||
align: 12
|
||||
- cputype: 0x01000007
|
||||
cpusubtype: 0x00000003
|
||||
offset: 0x0000000000002000
|
||||
size: 488
|
||||
align: 12
|
||||
- cputype: 0x0000000C
|
||||
cpusubtype: 0x00000009
|
||||
offset: 0x0000000000004000
|
||||
size: 304
|
||||
align: 14
|
||||
- cputype: 0x0100000C
|
||||
cpusubtype: 0x00000000
|
||||
offset: 0x0000000000008000
|
||||
size: 516
|
||||
align: 14
|
||||
Slices:
|
||||
- !mach-o
|
||||
FileHeader:
|
||||
magic: 0xFEEDFACE
|
||||
cputype: 0x00000007
|
||||
cpusubtype: 0x00000003
|
||||
filetype: 0x00000001
|
||||
ncmds: 4
|
||||
sizeofcmds: 312
|
||||
flags: 0x00002000
|
||||
LoadCommands:
|
||||
- cmd: LC_SEGMENT
|
||||
cmdsize: 192
|
||||
segname: ''
|
||||
vmaddr: 0
|
||||
vmsize: 72
|
||||
fileoff: 340
|
||||
filesize: 72
|
||||
maxprot: 7
|
||||
initprot: 7
|
||||
nsects: 2
|
||||
flags: 0
|
||||
Sections:
|
||||
- sectname: __text
|
||||
segname: __TEXT
|
||||
addr: 0x0000000000000000
|
||||
size: 18
|
||||
offset: 0x00000154
|
||||
align: 4
|
||||
reloff: 0x00000000
|
||||
nreloc: 0
|
||||
flags: 0x80000400
|
||||
reserved1: 0x00000000
|
||||
reserved2: 0x00000000
|
||||
reserved3: 0x00000000
|
||||
- sectname: __eh_frame
|
||||
segname: __TEXT
|
||||
addr: 0x0000000000000014
|
||||
size: 52
|
||||
offset: 0x00000168
|
||||
align: 2
|
||||
reloff: 0x00000000
|
||||
nreloc: 0
|
||||
flags: 0x6800000B
|
||||
reserved1: 0x00000000
|
||||
reserved2: 0x00000000
|
||||
reserved3: 0x00000000
|
||||
- cmd: LC_VERSION_MIN_MACOSX
|
||||
cmdsize: 16
|
||||
version: 656384
|
||||
sdk: 0
|
||||
- cmd: LC_SYMTAB
|
||||
cmdsize: 24
|
||||
symoff: 412
|
||||
nsyms: 1
|
||||
stroff: 424
|
||||
strsize: 8
|
||||
- cmd: LC_DYSYMTAB
|
||||
cmdsize: 80
|
||||
ilocalsym: 0
|
||||
nlocalsym: 0
|
||||
iextdefsym: 0
|
||||
nextdefsym: 1
|
||||
iundefsym: 1
|
||||
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: 1
|
||||
n_type: 0x0F
|
||||
n_sect: 1
|
||||
n_desc: 0
|
||||
n_value: 0
|
||||
StringTable:
|
||||
- ''
|
||||
- _main
|
||||
- ''
|
||||
- !mach-o
|
||||
FileHeader:
|
||||
magic: 0xFEEDFACF
|
||||
cputype: 0x01000007
|
||||
cpusubtype: 0x00000003
|
||||
filetype: 0x00000001
|
||||
ncmds: 4
|
||||
sizeofcmds: 352
|
||||
flags: 0x00002000
|
||||
reserved: 0x00000000
|
||||
LoadCommands:
|
||||
- cmd: LC_SEGMENT_64
|
||||
cmdsize: 232
|
||||
segname: ''
|
||||
vmaddr: 0
|
||||
vmsize: 80
|
||||
fileoff: 384
|
||||
filesize: 80
|
||||
maxprot: 7
|
||||
initprot: 7
|
||||
nsects: 2
|
||||
flags: 0
|
||||
Sections:
|
||||
- sectname: __text
|
||||
segname: __TEXT
|
||||
addr: 0x0000000000000000
|
||||
size: 15
|
||||
offset: 0x00000180
|
||||
align: 4
|
||||
reloff: 0x00000000
|
||||
nreloc: 0
|
||||
flags: 0x80000400
|
||||
reserved1: 0x00000000
|
||||
reserved2: 0x00000000
|
||||
reserved3: 0x00000000
|
||||
- sectname: __eh_frame
|
||||
segname: __TEXT
|
||||
addr: 0x0000000000000010
|
||||
size: 64
|
||||
offset: 0x00000190
|
||||
align: 3
|
||||
reloff: 0x00000000
|
||||
nreloc: 0
|
||||
flags: 0x6800000B
|
||||
reserved1: 0x00000000
|
||||
reserved2: 0x00000000
|
||||
reserved3: 0x00000000
|
||||
- cmd: LC_VERSION_MIN_MACOSX
|
||||
cmdsize: 16
|
||||
version: 656384
|
||||
sdk: 0
|
||||
- cmd: LC_SYMTAB
|
||||
cmdsize: 24
|
||||
symoff: 464
|
||||
nsyms: 1
|
||||
stroff: 480
|
||||
strsize: 8
|
||||
- cmd: LC_DYSYMTAB
|
||||
cmdsize: 80
|
||||
ilocalsym: 0
|
||||
nlocalsym: 0
|
||||
iextdefsym: 0
|
||||
nextdefsym: 1
|
||||
iundefsym: 1
|
||||
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: 1
|
||||
n_type: 0x0F
|
||||
n_sect: 1
|
||||
n_desc: 0
|
||||
n_value: 0
|
||||
StringTable:
|
||||
- ''
|
||||
- _main
|
||||
- ''
|
||||
- !mach-o
|
||||
FileHeader:
|
||||
magic: 0xFEEDFACE
|
||||
cputype: 0x0000000C
|
||||
cpusubtype: 0x00000009
|
||||
filetype: 0x00000001
|
||||
ncmds: 4
|
||||
sizeofcmds: 244
|
||||
flags: 0x00002000
|
||||
LoadCommands:
|
||||
- cmd: LC_SEGMENT
|
||||
cmdsize: 124
|
||||
segname: ''
|
||||
vmaddr: 0
|
||||
vmsize: 10
|
||||
fileoff: 272
|
||||
filesize: 10
|
||||
maxprot: 7
|
||||
initprot: 7
|
||||
nsects: 1
|
||||
flags: 0
|
||||
Sections:
|
||||
- sectname: __text
|
||||
segname: __TEXT
|
||||
addr: 0x0000000000000000
|
||||
size: 10
|
||||
offset: 0x00000110
|
||||
align: 1
|
||||
reloff: 0x00000000
|
||||
nreloc: 0
|
||||
flags: 0x80000400
|
||||
reserved1: 0x00000000
|
||||
reserved2: 0x00000000
|
||||
reserved3: 0x00000000
|
||||
- cmd: LC_VERSION_MIN_IPHONEOS
|
||||
cmdsize: 16
|
||||
version: 327680
|
||||
sdk: 0
|
||||
- cmd: LC_SYMTAB
|
||||
cmdsize: 24
|
||||
symoff: 284
|
||||
nsyms: 1
|
||||
stroff: 296
|
||||
strsize: 8
|
||||
- cmd: LC_DYSYMTAB
|
||||
cmdsize: 80
|
||||
ilocalsym: 0
|
||||
nlocalsym: 0
|
||||
iextdefsym: 0
|
||||
nextdefsym: 1
|
||||
iundefsym: 1
|
||||
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: 1
|
||||
n_type: 0x0F
|
||||
n_sect: 1
|
||||
n_desc: 8
|
||||
n_value: 0
|
||||
StringTable:
|
||||
- ''
|
||||
- _main
|
||||
- ''
|
||||
- !mach-o
|
||||
FileHeader:
|
||||
magic: 0xFEEDFACF
|
||||
cputype: 0x0100000C
|
||||
cpusubtype: 0x00000000
|
||||
filetype: 0x00000001
|
||||
ncmds: 4
|
||||
sizeofcmds: 352
|
||||
flags: 0x00002000
|
||||
reserved: 0x00000000
|
||||
LoadCommands:
|
||||
- cmd: LC_SEGMENT_64
|
||||
cmdsize: 232
|
||||
segname: ''
|
||||
vmaddr: 0
|
||||
vmsize: 56
|
||||
fileoff: 384
|
||||
filesize: 56
|
||||
maxprot: 7
|
||||
initprot: 7
|
||||
nsects: 2
|
||||
flags: 0
|
||||
Sections:
|
||||
- sectname: __text
|
||||
segname: __TEXT
|
||||
addr: 0x0000000000000000
|
||||
size: 20
|
||||
offset: 0x00000180
|
||||
align: 2
|
||||
reloff: 0x00000000
|
||||
nreloc: 0
|
||||
flags: 0x80000400
|
||||
reserved1: 0x00000000
|
||||
reserved2: 0x00000000
|
||||
reserved3: 0x00000000
|
||||
- sectname: __compact_unwind
|
||||
segname: __LD
|
||||
addr: 0x0000000000000018
|
||||
size: 32
|
||||
offset: 0x00000198
|
||||
align: 3
|
||||
reloff: 0x000001B8
|
||||
nreloc: 1
|
||||
flags: 0x02000000
|
||||
reserved1: 0x00000000
|
||||
reserved2: 0x00000000
|
||||
reserved3: 0x00000000
|
||||
- cmd: LC_VERSION_MIN_IPHONEOS
|
||||
cmdsize: 16
|
||||
version: 327680
|
||||
sdk: 0
|
||||
- cmd: LC_SYMTAB
|
||||
cmdsize: 24
|
||||
symoff: 448
|
||||
nsyms: 3
|
||||
stroff: 496
|
||||
strsize: 20
|
||||
- cmd: LC_DYSYMTAB
|
||||
cmdsize: 80
|
||||
ilocalsym: 0
|
||||
nlocalsym: 2
|
||||
iextdefsym: 2
|
||||
nextdefsym: 1
|
||||
iundefsym: 3
|
||||
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: 1
|
||||
n_desc: 0
|
||||
n_value: 0
|
||||
- n_strx: 7
|
||||
n_type: 0x0E
|
||||
n_sect: 2
|
||||
n_desc: 0
|
||||
n_value: 24
|
||||
- n_strx: 1
|
||||
n_type: 0x0F
|
||||
n_sect: 1
|
||||
n_desc: 0
|
||||
n_value: 0
|
||||
StringTable:
|
||||
- ''
|
||||
- _main
|
||||
- ltmp1
|
||||
- ltmp0
|
||||
- ''
|
||||
...
|
30
test/tools/llvm-lipo/replace-invalid-input.test
Normal file
30
test/tools/llvm-lipo/replace-invalid-input.test
Normal file
@ -0,0 +1,30 @@
|
||||
# RUN: yaml2obj %p/Inputs/i386-slice.yaml > %t-32.o
|
||||
# RUN: yaml2obj %p/Inputs/arm64-slice.yaml > %t-arm64.o
|
||||
# RUN: yaml2obj %p/Inputs/i386-x86_64-universal.yaml > %t-universal.o
|
||||
|
||||
# RUN: not llvm-lipo %t-universal.o -replace %t-32.o 2>&1 | FileCheck --check-prefix=MISSING_ARG %s
|
||||
# MISSING_ARG: error: replace is missing an argument: expects -replace arch_type file_name
|
||||
|
||||
# RUN: not llvm-lipo %t-universal.o -replace %t-32.o i386 2>&1 | FileCheck --check-prefix=OUTPUT_FILE %s
|
||||
# OUTPUT_FILE: error: replace expects a single output file to be specified
|
||||
|
||||
# RUN: not llvm-lipo %t-universal.o %t-universal.o -replace %t-32.o i386 -o %t.o 2>&1 | FileCheck --check-prefix=INPUT_ARGS %s
|
||||
# INPUT_ARGS: error: replace expects a single input file
|
||||
|
||||
# RUN: not llvm-lipo %t-universal.o -replace %t-32.o i386 -o %t.o 2>&1 | FileCheck --check-prefix=INVALID_FILE %s
|
||||
# INVALID_FILE: error: 'i386': No such file or directory
|
||||
|
||||
# RUN: not llvm-lipo %t-universal.o -replace i3866 %t-32.o -o %t.o 2>&1 | FileCheck --check-prefix=INVALID_ARCH %s
|
||||
# INVALID_ARCH: error: Invalid architecture: i3866
|
||||
|
||||
# RUN: not llvm-lipo %t-universal.o -replace arm64 %t-32.o -o %t.o 2>&1 | FileCheck --check-prefix=ARCH_NOT_MATCHED %s
|
||||
# ARCH_NOT_MATCHED: error: specified architecture: arm64 for replacement file: {{.*}} does not match the file's architecture
|
||||
|
||||
# RUN: not llvm-lipo %t-universal.o -replace arm64 %t-arm64.o -o %t.o 2>&1 | FileCheck --check-prefix=ARCH_NOT_IN_INPUT %s
|
||||
# ARCH_NOT_IN_INPUT: error: -replace arm64 <file_name> specified but fat file: {{.*}} does not contain that architecture
|
||||
|
||||
# RUN: not llvm-lipo %t-universal.o -replace i386 %t-32.o -replace arm64 %t-universal.o -o %t.o 2>&1 | FileCheck --check-prefix=REPLACE_UNIVERSAL %s
|
||||
# REPLACE_UNIVERSAL: replacement file: {{.*}} is a fat file (must be a thin file)
|
||||
|
||||
# RUN: not llvm-lipo %t-universal.o -replace i386 %t-32.o -replace i386 %t-32.o -o %t.o 2>&1 | FileCheck --check-prefix=ARCH_DUPLICATE %s
|
||||
# ARCH_DUPLICATE: error: -replace i386 <file_name> specified multiple times:
|
35
test/tools/llvm-lipo/replace-universal-binary.test
Normal file
35
test/tools/llvm-lipo/replace-universal-binary.test
Normal file
@ -0,0 +1,35 @@
|
||||
# RUN: yaml2obj %p/Inputs/armv7-slice-big.yaml > %t-armv7big.o
|
||||
# RUN: yaml2obj %p/Inputs/i386-x86_64-armv7-arm64-universal.yaml > %t-universal.o
|
||||
|
||||
# RUN: llvm-lipo %t-universal.o -replace armv7 %t-armv7big.o -o %t.o
|
||||
# RUN: llvm-objdump %t.o -m --universal-headers | FileCheck --check-prefix=ARMV7_BIG %s
|
||||
# RUN: llvm-lipo %t.o -thin armv7 -o %t-armv7-out.o
|
||||
# RUN: cmp %t-armv7big.o %t-armv7-out.o
|
||||
# ARMV7_BIG: architecture i386
|
||||
# ARMV7_BIG: offset 4096
|
||||
# ARMV7_BIG: align 2^12 (4096)
|
||||
# ARMV7_BIG-NEXT: architecture x86_64
|
||||
# ARMV7_BIG: offset 8192
|
||||
# ARMV7_BIG: align 2^12 (4096)
|
||||
# ARMV7_BIG-NEXT: architecture armv7
|
||||
# ARMV7_BIG: offset 16384
|
||||
# ARMV7_BIG: size 88128
|
||||
# ARMV7_BIG: align 2^14 (16384)
|
||||
# ARMV7_BIG-NEXT: architecture arm64
|
||||
# ARMV7_BIG: offset 114688
|
||||
# ARMV7_BIG: size 516
|
||||
# ARMV7_BIG: align 2^14 (16384)
|
||||
|
||||
# RUN: yaml2obj %p/Inputs/armv7-slice.yaml > %t-armv7.o
|
||||
# RUN: yaml2obj %p/Inputs/armv7_i386_non_default_alignment.yaml > %t-universal-align.o
|
||||
|
||||
# RUN: llvm-lipo %t-universal-align.o -replace armv7 %t-armv7.o -o %t2.o
|
||||
# RUN: llvm-objdump %t2.o -m --universal-headers | FileCheck --check-prefix=ARMV7_ALIGN_SWAP %s
|
||||
# RUN: llvm-lipo %t2.o -thin armv7 -o %t-armv7-out2.o
|
||||
# RUN: cmp %t-armv7.o %t-armv7-out2.o
|
||||
# ARMV7_ALIGN_SWAP: architecture i386
|
||||
# ARMV7_ALIGN_SWAP: offset 4096
|
||||
# ARMV7_ALIGN_SWAP: align 2^12 (4096)
|
||||
# ARMV7_ALIGN_SWAP-NEXT: architecture armv7
|
||||
# ARMV7_ALIGN_SWAP: offset 16384
|
||||
# ARMV7_ALIGN_SWAP: align 2^14 (16384)
|
@ -34,6 +34,12 @@ def create : Option<["-", "--"], "create", KIND_FLAG>,
|
||||
HelpText<"Create a universal binary output file from the input "
|
||||
"files. Requires -output option">;
|
||||
|
||||
def replace
|
||||
: MultiArg<["-", "--"], "replace", 2>,
|
||||
Group<action_group>,
|
||||
HelpText<"Replace the specified arch type with the contents of the "
|
||||
"input_file in a universal binary. Requires -output option">;
|
||||
|
||||
def output : Option<["-", "--"], "output", KIND_SEPARATE>,
|
||||
HelpText<"Create output file with specified name">;
|
||||
def o : JoinedOrSeparate<["-"], "o">, Alias<output>;
|
||||
|
@ -82,11 +82,18 @@ enum class LipoAction {
|
||||
VerifyArch,
|
||||
ThinArch,
|
||||
CreateUniversal,
|
||||
ReplaceArch,
|
||||
};
|
||||
|
||||
struct Replacement {
|
||||
StringRef ArchType;
|
||||
StringRef FileName;
|
||||
};
|
||||
|
||||
struct Config {
|
||||
SmallVector<std::string, 1> InputFiles;
|
||||
SmallVector<std::string, 1> VerifyArchList;
|
||||
SmallVector<Replacement, 1> Replacements;
|
||||
std::string ThinArchType;
|
||||
std::string OutputFile;
|
||||
LipoAction ActionToPerform;
|
||||
@ -158,7 +165,14 @@ static Config parseLipoOptions(ArrayRef<const char *> ArgsArr) {
|
||||
SmallVector<opt::Arg *, 1> ActionArgs(InputArgs.filtered(LIPO_action_group));
|
||||
if (ActionArgs.empty())
|
||||
reportError("at least one action should be specified");
|
||||
if (ActionArgs.size() > 1) {
|
||||
// errors if multiple actions specified other than replace
|
||||
// multiple replace flags may be specified, as long as they are not mixed with
|
||||
// other action flags
|
||||
auto ReplacementArgsRange = InputArgs.filtered(LIPO_replace);
|
||||
if (ActionArgs.size() > 1 &&
|
||||
ActionArgs.size() !=
|
||||
static_cast<size_t>(std::distance(ReplacementArgsRange.begin(),
|
||||
ReplacementArgsRange.end()))) {
|
||||
std::string Buf;
|
||||
raw_string_ostream OS(Buf);
|
||||
OS << "only one of the following actions can be specified:";
|
||||
@ -206,6 +220,23 @@ static Config parseLipoOptions(ArrayRef<const char *> ArgsArr) {
|
||||
C.ActionToPerform = LipoAction::CreateUniversal;
|
||||
return C;
|
||||
|
||||
case LIPO_replace:
|
||||
for (auto Action : ActionArgs) {
|
||||
if (!Action->getValue(1))
|
||||
reportError(
|
||||
"replace is missing an argument: expects -replace arch_type "
|
||||
"file_name");
|
||||
C.Replacements.push_back(
|
||||
Replacement{Action->getValue(0), Action->getValue(1)});
|
||||
}
|
||||
|
||||
if (C.OutputFile.empty())
|
||||
reportError("replace expects a single output file to be specified");
|
||||
if (C.InputFiles.size() > 1)
|
||||
reportError("replace expects a single input file");
|
||||
C.ActionToPerform = LipoAction::ReplaceArch;
|
||||
return C;
|
||||
|
||||
default:
|
||||
reportError("llvm-lipo action unspecified");
|
||||
}
|
||||
@ -557,6 +588,81 @@ static void createUniversalBinary(ArrayRef<OwningBinary<Binary>> InputBinaries,
|
||||
exit(EXIT_SUCCESS);
|
||||
}
|
||||
|
||||
static StringMap<Slice>
|
||||
buildReplacementSlices(ArrayRef<OwningBinary<Binary>> ReplacementBinaries,
|
||||
ArrayRef<Replacement> Replacements) {
|
||||
assert(ReplacementBinaries.size() == Replacements.size() &&
|
||||
"Number of replacment binaries does not match the number of "
|
||||
"replacements");
|
||||
StringMap<Slice> Slices;
|
||||
// populates StringMap of slices to replace with; error checks for mismatched
|
||||
// replace flag args, fat files, and duplicate arch_types
|
||||
for (size_t Index = 0, Size = Replacements.size(); Index < Size; ++Index) {
|
||||
StringRef ReplacementArch = Replacements[Index].ArchType;
|
||||
const Binary *ReplacementBinary = ReplacementBinaries[Index].getBinary();
|
||||
validateArchitectureName(ReplacementArch);
|
||||
|
||||
auto O = dyn_cast<MachOObjectFile>(ReplacementBinary);
|
||||
if (!O)
|
||||
reportError("replacement file: " + ReplacementBinary->getFileName() +
|
||||
" is a fat file (must be a thin file)");
|
||||
|
||||
if (O->getArch() != Triple(ReplacementArch).getArch())
|
||||
reportError("specified architecture: " + ReplacementArch +
|
||||
" for replacement file: " + ReplacementBinary->getFileName() +
|
||||
" does not match the file's architecture");
|
||||
|
||||
auto Entry =
|
||||
Slices.try_emplace(ReplacementArch, Slice{O, calculateAlignment(O)});
|
||||
if (!Entry.second)
|
||||
reportError("-replace " + ReplacementArch +
|
||||
" <file_name> specified multiple times: " +
|
||||
Entry.first->second.ObjectFile->getFileName() + ", " +
|
||||
O->getFileName());
|
||||
}
|
||||
return Slices;
|
||||
}
|
||||
|
||||
LLVM_ATTRIBUTE_NORETURN
|
||||
static void replaceSlices(ArrayRef<OwningBinary<Binary>> InputBinaries,
|
||||
StringRef OutputFileName,
|
||||
ArrayRef<Replacement> Replacements) {
|
||||
assert(InputBinaries.size() == 1 && "Incorrect number of input binaries");
|
||||
assert(!OutputFileName.empty() && "Replace expects a single output file");
|
||||
|
||||
if (InputBinaries.front().getBinary()->isMachO())
|
||||
reportError("input file " +
|
||||
InputBinaries.front().getBinary()->getFileName() +
|
||||
" must be a fat file when the -replace option is specified");
|
||||
|
||||
SmallVector<std::string, 1> ReplacementFiles;
|
||||
for (const auto &R : Replacements)
|
||||
ReplacementFiles.push_back(R.FileName);
|
||||
SmallVector<OwningBinary<Binary>, 1> ReplacementBinaries =
|
||||
readInputBinaries(ReplacementFiles);
|
||||
|
||||
StringMap<Slice> ReplacementSlices =
|
||||
buildReplacementSlices(ReplacementBinaries, Replacements);
|
||||
SmallVector<std::unique_ptr<MachOObjectFile>, 2> ExtractedObjects;
|
||||
SmallVector<Slice, 2> Slices = buildSlices(InputBinaries, ExtractedObjects);
|
||||
|
||||
for (auto &Slice : Slices) {
|
||||
auto It = ReplacementSlices.find(getArchString(*Slice.ObjectFile));
|
||||
if (It != ReplacementSlices.end()) {
|
||||
Slice = It->second;
|
||||
ReplacementSlices.erase(It); // only keep remaining replacing arch_types
|
||||
}
|
||||
}
|
||||
|
||||
if (!ReplacementSlices.empty())
|
||||
reportError("-replace " + ReplacementSlices.begin()->first() +
|
||||
" <file_name> specified but fat file: " +
|
||||
InputBinaries.front().getBinary()->getFileName() +
|
||||
" does not contain that architecture");
|
||||
createUniversalBinary(Slices, OutputFileName);
|
||||
exit(EXIT_SUCCESS);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
InitLLVM X(argc, argv);
|
||||
Config C = parseLipoOptions(makeArrayRef(argv + 1, argc));
|
||||
@ -579,6 +685,9 @@ int main(int argc, char **argv) {
|
||||
case LipoAction::CreateUniversal:
|
||||
createUniversalBinary(InputBinaries, C.OutputFile);
|
||||
break;
|
||||
case LipoAction::ReplaceArch:
|
||||
replaceSlices(InputBinaries, C.OutputFile, C.Replacements);
|
||||
break;
|
||||
}
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user