Skip to content

Commit 06f5186

Browse files
committed
[readtapi] Setup simple stubify support
Stubify broadly takes either tbd files or binary dylibs and turns them into tbd files. In future patches, stubify will also allow additional information to be embedded into the final tbd output too.
1 parent 87feac6 commit 06f5186

File tree

12 files changed

+5966
-85
lines changed

12 files changed

+5966
-85
lines changed
Lines changed: 328 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,328 @@
1+
--- !mach-o
2+
FileHeader:
3+
magic: 0xFEEDFACF
4+
cputype: 0x01000007
5+
cpusubtype: 0x00000003
6+
filetype: 0x00000006
7+
ncmds: 13
8+
sizeofcmds: 1128
9+
flags: 0x00100004
10+
reserved: 0x00000000
11+
LoadCommands:
12+
- cmd: LC_SEGMENT_64
13+
cmdsize: 392
14+
segname: __TEXT
15+
vmaddr: 0
16+
vmsize: 4096
17+
fileoff: 0
18+
filesize: 4096
19+
maxprot: 7
20+
initprot: 5
21+
nsects: 4
22+
flags: 0
23+
Sections:
24+
- sectname: __text
25+
segname: __TEXT
26+
addr: 0x0000000000000F60
27+
size: 44
28+
offset: 0x00000F60
29+
align: 4
30+
reloff: 0x00000000
31+
nreloc: 0
32+
flags: 0x80000400
33+
reserved1: 0x00000000
34+
reserved2: 0x00000000
35+
reserved3: 0x00000000
36+
content: 554889E54883EC10897DFCBF7A000000E817000000488B0D940000008B39037DFC8945F889F84883C4105DC3
37+
- sectname: __stubs
38+
segname: __TEXT
39+
addr: 0x0000000000000F8C
40+
size: 6
41+
offset: 0x00000F8C
42+
align: 1
43+
reloff: 0x00000000
44+
nreloc: 0
45+
flags: 0x80000408
46+
reserved1: 0x00000000
47+
reserved2: 0x00000006
48+
reserved3: 0x00000000
49+
content: FF2586000000
50+
- sectname: __stub_helper
51+
segname: __TEXT
52+
addr: 0x0000000000000F94
53+
size: 26
54+
offset: 0x00000F94
55+
align: 2
56+
reloff: 0x00000000
57+
nreloc: 0
58+
flags: 0x80000400
59+
reserved1: 0x00000000
60+
reserved2: 0x00000000
61+
reserved3: 0x00000000
62+
content: 4C8D1D6D0000004153FF255D000000906800000000E9E6FFFFFF
63+
- sectname: __unwind_info
64+
segname: __TEXT
65+
addr: 0x0000000000000FB0
66+
size: 72
67+
offset: 0x00000FB0
68+
align: 2
69+
reloff: 0x00000000
70+
nreloc: 0
71+
flags: 0x00000000
72+
reserved1: 0x00000000
73+
reserved2: 0x00000000
74+
reserved3: 0x00000000
75+
content: 010000001C000000000000001C000000000000001C00000002000000600F000034000000340000008D0F00000000000034000000030000000C000100100001000000000000000001
76+
- cmd: LC_SEGMENT_64
77+
cmdsize: 312
78+
segname: __DATA
79+
vmaddr: 4096
80+
vmsize: 4096
81+
fileoff: 4096
82+
filesize: 4096
83+
maxprot: 7
84+
initprot: 3
85+
nsects: 3
86+
flags: 0
87+
Sections:
88+
- sectname: __nl_symbol_ptr
89+
segname: __DATA
90+
addr: 0x0000000000001000
91+
size: 16
92+
offset: 0x00001000
93+
align: 3
94+
reloff: 0x00000000
95+
nreloc: 0
96+
flags: 0x00000006
97+
reserved1: 0x00000001
98+
reserved2: 0x00000000
99+
reserved3: 0x00000000
100+
content: '00000000000000000000000000000000'
101+
- sectname: __got
102+
segname: __DATA
103+
addr: 0x0000000000001010
104+
size: 8
105+
offset: 0x00001010
106+
align: 3
107+
reloff: 0x00000000
108+
nreloc: 0
109+
flags: 0x00000006
110+
reserved1: 0x00000003
111+
reserved2: 0x00000000
112+
reserved3: 0x00000000
113+
content: '0000000000000000'
114+
- sectname: __la_symbol_ptr
115+
segname: __DATA
116+
addr: 0x0000000000001018
117+
size: 8
118+
offset: 0x00001018
119+
align: 3
120+
reloff: 0x00000000
121+
nreloc: 0
122+
flags: 0x00000007
123+
reserved1: 0x00000004
124+
reserved2: 0x00000000
125+
reserved3: 0x00000000
126+
content: A40F000000000000
127+
- cmd: LC_SEGMENT_64
128+
cmdsize: 72
129+
segname: __LINKEDIT
130+
vmaddr: 8192
131+
vmsize: 4096
132+
fileoff: 8192
133+
filesize: 220
134+
maxprot: 7
135+
initprot: 1
136+
nsects: 0
137+
flags: 0
138+
- cmd: LC_ID_DYLIB
139+
cmdsize: 40
140+
dylib:
141+
name: 24
142+
timestamp: 1
143+
current_version: 0
144+
compatibility_version: 0
145+
Content: foo.dylib
146+
ZeroPadBytes: 7
147+
- cmd: LC_DYLD_INFO_ONLY
148+
cmdsize: 48
149+
rebase_off: 8192
150+
rebase_size: 8
151+
bind_off: 8200
152+
bind_size: 48
153+
weak_bind_off: 0
154+
weak_bind_size: 0
155+
lazy_bind_off: 8248
156+
lazy_bind_size: 16
157+
export_off: 8264
158+
export_size: 16
159+
- cmd: LC_SYMTAB
160+
cmdsize: 24
161+
symoff: 8288
162+
nsyms: 4
163+
stroff: 8372
164+
strsize: 40
165+
- cmd: LC_DYSYMTAB
166+
cmdsize: 80
167+
ilocalsym: 0
168+
nlocalsym: 0
169+
iextdefsym: 0
170+
nextdefsym: 1
171+
iundefsym: 1
172+
nundefsym: 3
173+
tocoff: 0
174+
ntoc: 0
175+
modtaboff: 0
176+
nmodtab: 0
177+
extrefsymoff: 0
178+
nextrefsyms: 0
179+
indirectsymoff: 8352
180+
nindirectsyms: 5
181+
extreloff: 0
182+
nextrel: 0
183+
locreloff: 0
184+
nlocrel: 0
185+
- cmd: LC_UUID
186+
cmdsize: 24
187+
uuid: 24AE602E-6B89-37A8-9E38-39A436D25110
188+
- cmd: LC_BUILD_VERSION
189+
cmdsize: 32
190+
platform: 1
191+
minos: 658944
192+
sdk: 658944
193+
ntools: 1
194+
Tools:
195+
- tool: 3
196+
version: 29491968
197+
- cmd: LC_SOURCE_VERSION
198+
cmdsize: 16
199+
version: 0
200+
- cmd: LC_LOAD_DYLIB
201+
cmdsize: 56
202+
dylib:
203+
name: 24
204+
timestamp: 2
205+
current_version: 82115073
206+
compatibility_version: 65536
207+
Content: '/usr/lib/libSystem.B.dylib'
208+
ZeroPadBytes: 6
209+
- cmd: LC_FUNCTION_STARTS
210+
cmdsize: 16
211+
dataoff: 8280
212+
datasize: 8
213+
- cmd: LC_DATA_IN_CODE
214+
cmdsize: 16
215+
dataoff: 8288
216+
datasize: 0
217+
LinkEditData:
218+
RebaseOpcodes:
219+
- Opcode: REBASE_OPCODE_SET_TYPE_IMM
220+
Imm: 1
221+
- Opcode: REBASE_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
222+
Imm: 1
223+
ExtraData:
224+
- 0x0000000000000018
225+
- Opcode: REBASE_OPCODE_DO_REBASE_IMM_TIMES
226+
Imm: 1
227+
- Opcode: REBASE_OPCODE_DONE
228+
Imm: 0
229+
BindOpcodes:
230+
- Opcode: BIND_OPCODE_SET_DYLIB_SPECIAL_IMM
231+
Imm: 14
232+
Symbol: ''
233+
- Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
234+
Imm: 0
235+
Symbol: _bar
236+
- Opcode: BIND_OPCODE_SET_TYPE_IMM
237+
Imm: 1
238+
Symbol: ''
239+
- Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
240+
Imm: 1
241+
ULEBExtraData:
242+
- 0x0000000000000010
243+
Symbol: ''
244+
- Opcode: BIND_OPCODE_DO_BIND
245+
Imm: 0
246+
Symbol: ''
247+
- Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
248+
Imm: 0
249+
Symbol: dyld_stub_binder
250+
- Opcode: BIND_OPCODE_ADD_ADDR_ULEB
251+
Imm: 0
252+
ULEBExtraData:
253+
- 0xFFFFFFFFFFFFFFE8
254+
Symbol: ''
255+
- Opcode: BIND_OPCODE_DO_BIND
256+
Imm: 0
257+
Symbol: ''
258+
- Opcode: BIND_OPCODE_DONE
259+
Imm: 0
260+
Symbol: ''
261+
LazyBindOpcodes:
262+
- Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
263+
Imm: 1
264+
ULEBExtraData:
265+
- 0x0000000000000018
266+
Symbol: ''
267+
- Opcode: BIND_OPCODE_SET_DYLIB_SPECIAL_IMM
268+
Imm: 14
269+
Symbol: ''
270+
- Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
271+
Imm: 0
272+
Symbol: _putchar
273+
- Opcode: BIND_OPCODE_DO_BIND
274+
Imm: 0
275+
Symbol: ''
276+
- Opcode: BIND_OPCODE_DONE
277+
Imm: 0
278+
Symbol: ''
279+
- Opcode: BIND_OPCODE_DONE
280+
Imm: 0
281+
Symbol: ''
282+
ExportTrie:
283+
TerminalSize: 0
284+
NodeOffset: 0
285+
Name: ''
286+
Flags: 0x0000000000000000
287+
Address: 0x0000000000000000
288+
Other: 0x0000000000000000
289+
ImportName: ''
290+
Children:
291+
- TerminalSize: 3
292+
NodeOffset: 8
293+
Name: _foo
294+
Flags: 0x0000000000000000
295+
Address: 0x0000000000000F60
296+
Other: 0x0000000000000000
297+
ImportName: ''
298+
NameList:
299+
- n_strx: 2
300+
n_type: 0x0F
301+
n_sect: 1
302+
n_desc: 0
303+
n_value: 3936
304+
- n_strx: 7
305+
n_type: 0x01
306+
n_sect: 0
307+
n_desc: 0
308+
n_value: 0
309+
- n_strx: 12
310+
n_type: 0x01
311+
n_sect: 0
312+
n_desc: 0
313+
n_value: 0
314+
- n_strx: 21
315+
n_type: 0x01
316+
n_sect: 0
317+
n_desc: 0
318+
n_value: 0
319+
StringTable:
320+
- ' '
321+
- _foo
322+
- _bar
323+
- _putchar
324+
- dyld_stub_binder
325+
- ''
326+
- ''
327+
...
328+

0 commit comments

Comments
 (0)