xref: /llvm-project/llvm/test/Object/Inputs/MachO/rebase-bind-table-trailing-opcode.yaml (revision 1fa073ab896e65c55ff63487be0b41d7cea9aa77)
1# A valid MachO object with a weak-bind table following a bind table ending
2# with an effectively no-op opcode `BIND_OPCODE_SET_TYPE_IMM(1)` instead of
3# a `BIND_OPCODE_DONE` or an actual bind `BIND_OPCODE_DO_BIND[_*]`, following
4# a rebase table ending with an effectively no-op opcode
5# `REBASE_OPCODE_SET_TYPE_IMM(1)` instead of a `REBASE_OPCODE_DONE` or an
6# actual rebase `REBASE_OPCODE_DO_REBASE_*`.
7--- !mach-o
8FileHeader:
9  magic:           0xFEEDFACF
10  cputype:         0x100000C
11  cpusubtype:      0x0
12  filetype:        0x6
13  ncmds:           15
14  sizeofcmds:      1232
15  flags:           0x118085
16  reserved:        0x0
17LoadCommands:
18  - cmd:             LC_SEGMENT_64
19    cmdsize:         392
20    segname:         __TEXT
21    vmaddr:          0
22    vmsize:          32768
23    fileoff:         0
24    filesize:        32768
25    maxprot:         5
26    initprot:        5
27    nsects:          4
28    flags:           0
29    Sections:
30      - sectname:        __text
31        segname:         __TEXT
32        addr:            0x4000
33        size:            32
34        offset:          0x4000
35        align:           2
36        reloff:          0x0
37        nreloc:          0
38        flags:           0x80000400
39        reserved1:       0x0
40        reserved2:       0x0
41        reserved3:       0x0
42        content:         C0035FD6FD7BBFA9FD03009105000094000080D206000094FD7BC1A8C0035FD6
43      - sectname:        __stubs
44        segname:         __TEXT
45        addr:            0x4020
46        size:            24
47        offset:          0x4020
48        align:           2
49        reloff:          0x0
50        nreloc:          0
51        flags:           0x80000408
52        reserved1:       0x0
53        reserved2:       0xC
54        reserved3:       0x0
55        content:         30000090100240F900021FD650000090100240F900021FD6
56      - sectname:        __stub_helper
57        segname:         __TEXT
58        addr:            0x4038
59        size:            36
60        offset:          0x4038
61        align:           2
62        reloff:          0x0
63        nreloc:          0
64        flags:           0x80000400
65        reserved1:       0x0
66        reserved2:       0x0
67        reserved3:       0x0
68        content:         5100009031220091F047BFA930000090100640F900021FD650000018F9FFFF1700000000
69      - sectname:        __unwind_info
70        segname:         __TEXT
71        addr:            0x405C
72        size:            96
73        offset:          0x405C
74        align:           2
75        reloff:          0x0
76        nreloc:          0
77        flags:           0x0
78        reserved1:       0x0
79        reserved2:       0x0
80        reserved3:       0x0
81        content:         010000001C000000000000001C000000000000001C00000002000000004000004000000040000000204000000000000040000000000000000000000000000000030000000C000200140002000000000004000001000000020000000400000000
82  - cmd:             LC_SEGMENT_64
83    cmdsize:         152
84    segname:         __DATA_CONST
85    vmaddr:          32768
86    vmsize:          16384
87    fileoff:         32768
88    filesize:        16384
89    maxprot:         3
90    initprot:        3
91    nsects:          1
92    flags:           16
93    Sections:
94      - sectname:        __got
95        segname:         __DATA_CONST
96        addr:            0x8000
97        size:            16
98        offset:          0x8000
99        align:           3
100        reloff:          0x0
101        nreloc:          0
102        flags:           0x6
103        reserved1:       0x2
104        reserved2:       0x0
105        reserved3:       0x0
106        content:         '00400000000000000000000000000000'
107  - cmd:             LC_SEGMENT_64
108    cmdsize:         232
109    segname:         __DATA
110    vmaddr:          49152
111    vmsize:          16384
112    fileoff:         49152
113    filesize:        16384
114    maxprot:         3
115    initprot:        3
116    nsects:          2
117    flags:           0
118    Sections:
119      - sectname:        __la_symbol_ptr
120        segname:         __DATA
121        addr:            0xC000
122        size:            8
123        offset:          0xC000
124        align:           3
125        reloff:          0x0
126        nreloc:          0
127        flags:           0x7
128        reserved1:       0x4
129        reserved2:       0x0
130        reserved3:       0x0
131        content:         '5040000000000000'
132      - sectname:        __data
133        segname:         __DATA
134        addr:            0xC008
135        size:            8
136        offset:          0xC008
137        align:           3
138        reloff:          0x0
139        nreloc:          0
140        flags:           0x0
141        reserved1:       0x0
142        reserved2:       0x0
143        reserved3:       0x0
144        content:         '0000000000000000'
145  - cmd:             LC_SEGMENT_64
146    cmdsize:         72
147    segname:         __LINKEDIT
148    vmaddr:          65536
149    vmsize:          16384
150    fileoff:         65536
151    filesize:        272
152    maxprot:         1
153    initprot:        1
154    nsects:          0
155    flags:           0
156  - cmd:             LC_ID_DYLIB
157    cmdsize:         48
158    dylib:
159      name:            24
160      timestamp:       1
161      current_version: 0
162      compatibility_version: 0
163    Content:         '@rpath/libtest.dylib'
164    ZeroPadBytes:    4
165  - cmd:             LC_DYLD_INFO_ONLY
166    cmdsize:         48
167    rebase_off:      65536
168    rebase_size:     8
169    bind_off:        65544
170    bind_size:       24
171    weak_bind_off:   65568
172    weak_bind_size:  16
173    lazy_bind_off:   65584
174    lazy_bind_size:  16
175    export_off:      65600
176    export_size:     40
177  - cmd:             LC_SYMTAB
178    cmdsize:         24
179    symoff:          65648
180    nsyms:           5
181    stroff:          65752
182    strsize:         56
183  - cmd:             LC_DYSYMTAB
184    cmdsize:         80
185    ilocalsym:       0
186    nlocalsym:       1
187    iextdefsym:      1
188    nextdefsym:      2
189    iundefsym:       3
190    nundefsym:       2
191    tocoff:          0
192    ntoc:            0
193    modtaboff:       0
194    nmodtab:         0
195    extrefsymoff:    0
196    nextrefsyms:     0
197    indirectsymoff:  65728
198    nindirectsyms:   5
199    extreloff:       0
200    nextrel:         0
201    locreloff:       0
202    nlocrel:         0
203  - cmd:             LC_UUID
204    cmdsize:         24
205    uuid:            3A5ED8A0-F9D2-35D8-8C0E-4914289341CC
206  - cmd:             LC_BUILD_VERSION
207    cmdsize:         32
208    platform:        2
209    minos:           1114112
210    sdk:             1179648
211    ntools:          1
212    Tools:
213      - tool:            3
214        version:         73073920
215  - cmd:             LC_SOURCE_VERSION
216    cmdsize:         16
217    version:         0
218  - cmd:             LC_ENCRYPTION_INFO_64
219    cmdsize:         24
220    cryptoff:        16384
221    cryptsize:       16384
222    cryptid:         0
223    pad:             0
224  - cmd:             LC_LOAD_DYLIB
225    cmdsize:         56
226    dylib:
227      name:            24
228      timestamp:       2
229      current_version: 88539136
230      compatibility_version: 65536
231    Content:         '/usr/lib/libSystem.B.dylib'
232    ZeroPadBytes:    6
233  - cmd:             LC_FUNCTION_STARTS
234    cmdsize:         16
235    dataoff:         65640
236    datasize:        8
237  - cmd:             LC_DATA_IN_CODE
238    cmdsize:         16
239    dataoff:         65648
240    datasize:        0
241LinkEditData:
242  RebaseOpcodes:
243    - Opcode:          REBASE_OPCODE_SET_TYPE_IMM
244      Imm:             1
245    - Opcode:          REBASE_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
246      Imm:             1
247      ExtraData:       [ 0x0 ]
248    - Opcode:          REBASE_OPCODE_DO_REBASE_IMM_TIMES
249      Imm:             1
250    - Opcode:          REBASE_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
251      Imm:             2
252      ExtraData:       [ 0x0 ]
253    - Opcode:          REBASE_OPCODE_DO_REBASE_IMM_TIMES
254      Imm:             1
255    - Opcode:          REBASE_OPCODE_SET_TYPE_IMM
256      Imm:             1
257  BindOpcodes:
258    - Opcode:          BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
259      Imm:             1
260      Symbol:          ''
261    - Opcode:          BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
262      Imm:             0
263      Symbol:          dyld_stub_binder
264    - Opcode:          BIND_OPCODE_SET_TYPE_IMM
265      Imm:             1
266      Symbol:          ''
267    - Opcode:          BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
268      Imm:             1
269      ULEBExtraData:   [ 0x8 ]
270      Symbol:          ''
271    - Opcode:          BIND_OPCODE_DO_BIND
272      Imm:             0
273      Symbol:          ''
274    - Opcode:          BIND_OPCODE_SET_TYPE_IMM
275      Imm:             1
276      Symbol:          ''
277  WeakBindOpcodes:
278    - Opcode:          BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
279      Imm:             0
280      Symbol:          _foo
281    - Opcode:          BIND_OPCODE_SET_TYPE_IMM
282      Imm:             1
283      Symbol:          ''
284    - Opcode:          BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
285      Imm:             1
286      ULEBExtraData:   [ 0x0 ]
287      Symbol:          ''
288    - Opcode:          BIND_OPCODE_DO_BIND
289      Imm:             0
290      Symbol:          ''
291    - Opcode:          BIND_OPCODE_DONE
292      Imm:             0
293      Symbol:          ''
294  LazyBindOpcodes:
295    - Opcode:          BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
296      Imm:             2
297      ULEBExtraData:   [ 0x0 ]
298      Symbol:          ''
299    - Opcode:          BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
300      Imm:             1
301      Symbol:          ''
302    - Opcode:          BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
303      Imm:             0
304      Symbol:          _free
305    - Opcode:          BIND_OPCODE_DO_BIND
306      Imm:             0
307      Symbol:          ''
308    - Opcode:          BIND_OPCODE_DONE
309      Imm:             0
310      Symbol:          ''
311    - Opcode:          BIND_OPCODE_DONE
312      Imm:             0
313      Symbol:          ''
314    - Opcode:          BIND_OPCODE_DONE
315      Imm:             0
316      Symbol:          ''
317    - Opcode:          BIND_OPCODE_DONE
318      Imm:             0
319      Symbol:          ''
320    - Opcode:          BIND_OPCODE_DONE
321      Imm:             0
322      Symbol:          ''
323  ExportTrie:
324    TerminalSize:    0
325    NodeOffset:      0
326    Name:            ''
327    Flags:           0x0
328    Address:         0x0
329    Other:           0x0
330    ImportName:      ''
331    Children:
332      - TerminalSize:    0
333        NodeOffset:      21
334        Name:            _
335        Flags:           0x0
336        Address:         0x0
337        Other:           0x0
338        ImportName:      ''
339        Children:
340          - TerminalSize:    4
341            NodeOffset:      9
342            Name:            bar
343            Flags:           0x0
344            Address:         0x4004
345            Other:           0x0
346            ImportName:      ''
347          - TerminalSize:    4
348            NodeOffset:      15
349            Name:            foo
350            Flags:           0x4
351            Address:         0x4000
352            Other:           0x0
353            ImportName:      ''
354  NameList:
355    - n_strx:          35
356      n_type:          0xE
357      n_sect:          7
358      n_desc:          0
359      n_value:         49160
360    - n_strx:          2
361      n_type:          0xF
362      n_sect:          1
363      n_desc:          0
364      n_value:         16388
365    - n_strx:          7
366      n_type:          0xF
367      n_sect:          1
368      n_desc:          128
369      n_value:         16384
370    - n_strx:          12
371      n_type:          0x1
372      n_sect:          0
373      n_desc:          256
374      n_value:         0
375    - n_strx:          18
376      n_type:          0x1
377      n_sect:          0
378      n_desc:          256
379      n_value:         0
380  StringTable:
381    - ' '
382    - _bar
383    - _foo
384    - _free
385    - dyld_stub_binder
386    - __dyld_private
387    - ''
388    - ''
389    - ''
390    - ''
391    - ''
392    - ''
393  IndirectSymbols: [ 0x2, 0x3, 0x2, 0x4, 0x3 ]
394  FunctionStarts:  [ 0x4000, 0x4004 ]
395...
396