xref: /llvm-project/llvm/test/tools/llvm-objdump/MachO/private-headers.test (revision 1a3f88658a02be6be5224fca9d9123b79958f289)
1// RUN: llvm-objdump -p %p/Inputs/hello.obj.macho-x86_64 | FileCheck %s
2// RUN: llvm-otool -lv %p/Inputs/hello.obj.macho-x86_64 | FileCheck %s
3// RUN: llvm-objdump -p %p/Inputs/hello.exe.macho-x86_64 \
4// RUN:     | FileCheck %s -check-prefix=EXE
5// RUN: llvm-objdump -p %p/Inputs/dylibLoadKinds.macho-x86_64 \
6// RUN:     | FileCheck %s -check-prefix=LOAD
7// RUN: llvm-objdump -p %p/Inputs/linkerOption.macho-x86_64 \
8// RUN:     | FileCheck %s -check-prefix=LD_OPT
9// RUN: llvm-objdump -p %p/Inputs/dylibSubFramework.macho-x86_64 \
10// RUN:     | FileCheck %s -check-prefix=SUB_FRAME
11// RUN: llvm-objdump -p %p/Inputs/dylibSubUmbrella.macho-x86_64 \
12// RUN:     | FileCheck %s -check-prefix=SUB_UMB
13// RUN: llvm-objdump -p %p/Inputs/dylibSubLibrary.macho-x86_64 \
14// RUN:     | FileCheck %s -check-prefix=SUB_LIB
15// RUN: llvm-objdump -p %p/Inputs/dylibSubClient.macho-x86_64 \
16// RUN:     | FileCheck %s -check-prefix=SUB_CLI
17// RUN: llvm-objdump -p %p/Inputs/dylibRoutines.macho-x86_64 \
18// RUN:     | FileCheck %s -check-prefix=ROUTINE
19// RUN: llvm-objdump -p %p/Inputs/exeThread.macho-x86_64 \
20// RUN:     | FileCheck %s -check-prefix=THREAD
21// RUN: llvm-objdump --macho -p --arch i386 %p/Inputs/macho-universal.x86_64.i386 \
22// RUN:     | FileCheck %s -check-prefix=FATi386
23// RUN: llvm-objdump -p --arch i386 %p/Inputs/macho-universal.x86_64.i386 \
24// RUN:     | FileCheck %s -check-prefix=FATi386
25// RUN: llvm-objdump -p --non-verbose %p/Inputs/hello.obj.macho-x86_64 \
26// RUN:     | FileCheck %s -check-prefix=NON_VERBOSE
27// RUN: llvm-objdump -p %p/Inputs/codesig.macho-x86_64 \
28// RUN:     | FileCheck %s -check-prefix=CODESIG
29// RUN: llvm-objdump -p %p/Inputs/note.macho-x86 \
30// RUN:     | FileCheck %s -check-prefix=NOTE
31
32CHECK: Mach header
33CHECK:       magic cputype cpusubtype  caps    filetype ncmds sizeofcmds      flags
34CHECK: MH_MAGIC_64  X86_64        ALL  0x00      OBJECT     3        496 SUBSECTIONS_VIA_SYMBOLS
35CHECK: Load command 0
36CHECK:       cmd LC_SEGMENT_64
37CHECK:   cmdsize 392
38CHECK:   segname
39CHECK:    vmaddr 0x0000000000000000
40CHECK:    vmsize 0x00000000000000a8
41CHECK:   fileoff 528
42CHECK:  filesize 168
43CHECK:   maxprot rwx
44CHECK:  initprot rwx
45CHECK:    nsects 4
46CHECK:     flags (none)
47CHECK: Section
48CHECK:   sectname __text
49CHECK:    segname __TEXT
50CHECK:       addr 0x0000000000000000
51CHECK:       size 0x000000000000003b
52CHECK:     offset 528
53CHECK:      align 2^4 (16)
54CHECK:     reloff 696
55CHECK:     nreloc 2
56CHECK:       type S_REGULAR
57CHECK: attributes PURE_INSTRUCTIONS SOME_INSTRUCTIONS
58CHECK:  reserved1 0
59CHECK:  reserved2 0
60CHECK: Section
61CHECK:   sectname __cstring
62CHECK:    segname __TEXT
63CHECK:       addr 0x000000000000003b
64CHECK:       size 0x000000000000000d
65CHECK:     offset 587
66CHECK:      align 2^0 (1)
67CHECK:     reloff 0
68CHECK:     nreloc 0
69CHECK:       type S_CSTRING_LITERALS
70CHECK: attributes (none)
71CHECK:  reserved1 0
72CHECK:  reserved2 0
73CHECK: Section
74CHECK:   sectname __compact_unwind
75CHECK:    segname __LD
76CHECK:       addr 0x0000000000000048
77CHECK:       size 0x0000000000000020
78CHECK:     offset 600
79CHECK:      align 2^3 (8)
80CHECK:     reloff 712
81CHECK:     nreloc 1
82CHECK:       type S_REGULAR
83CHECK: attributes DEBUG
84CHECK:  reserved1 0
85CHECK:  reserved2 0
86CHECK: Section
87CHECK:   sectname __eh_frame
88CHECK:    segname __TEXT
89CHECK:       addr 0x0000000000000068
90CHECK:       size 0x0000000000000040
91CHECK:     offset 632
92CHECK:      align 2^3 (8)
93CHECK:     reloff 0
94CHECK:     nreloc 0
95CHECK:       type S_COALESCED
96CHECK: attributes NO_TOC STRIP_STATIC_SYMS LIVE_SUPPORT
97CHECK:  reserved1 0
98CHECK:  reserved2 0
99CHECK: Load command 1
100CHECK:      cmd LC_SYMTAB
101CHECK:  cmdsize 24
102CHECK:   symoff 720
103CHECK:    nsyms 5
104CHECK:   stroff 800
105CHECK:  strsize 44
106CHECK: Load command 2
107CHECK:             cmd LC_DYSYMTAB
108CHECK:         cmdsize 80
109CHECK:       ilocalsym 0
110CHECK:       nlocalsym 2
111CHECK:      iextdefsym 2
112CHECK:      nextdefsym 2
113CHECK:       iundefsym 4
114CHECK:       nundefsym 1
115CHECK:          tocoff 0
116CHECK:            ntoc 0
117CHECK:       modtaboff 0
118CHECK:         nmodtab 0
119CHECK:    extrefsymoff 0
120CHECK:     nextrefsyms 0
121CHECK:  indirectsymoff 0
122CHECK:   nindirectsyms 0
123CHECK:       extreloff 0
124CHECK:         nextrel 0
125CHECK:       locreloff 0
126CHECK:         nlocrel 0
127
128EXE: Mach header
129EXE:       magic cputype cpusubtype  caps    filetype ncmds sizeofcmds      flags
130EXE: MH_MAGIC_64  X86_64        ALL LIB64     EXECUTE    16       1296   NOUNDEFS DYLDLINK TWOLEVEL PIE
131EXE: Load command 0
132EXE:       cmd LC_SEGMENT_64
133EXE:   cmdsize 72
134EXE:   segname __PAGEZERO
135EXE:    vmaddr 0x0000000000000000
136EXE:    vmsize 0x0000000100000000
137EXE:   fileoff 0
138EXE:  filesize 0
139EXE:   maxprot ---
140EXE:  initprot ---
141EXE:    nsects 0
142EXE:     flags (none)
143EXE: Load command 1
144EXE:       cmd LC_SEGMENT_64
145EXE:   cmdsize 552
146EXE:   segname __TEXT
147EXE:    vmaddr 0x0000000100000000
148EXE:    vmsize 0x0000000000001000
149EXE:   fileoff 0
150EXE:  filesize 4096
151EXE:   maxprot rwx
152EXE:  initprot r-x
153EXE:    nsects 6
154EXE:     flags (none)
155EXE: Section
156EXE:   sectname __text
157EXE:    segname __TEXT
158EXE:       addr 0x0000000100000f30
159EXE:       size 0x000000000000003b
160EXE:     offset 3888
161EXE:      align 2^4 (16)
162EXE:     reloff 0
163EXE:     nreloc 0
164EXE:       type S_REGULAR
165EXE: attributes PURE_INSTRUCTIONS SOME_INSTRUCTIONS
166EXE:  reserved1 0
167EXE:  reserved2 0
168EXE: Section
169EXE:   sectname __stubs
170EXE:    segname __TEXT
171EXE:       addr 0x0000000100000f6c
172EXE:       size 0x0000000000000006
173EXE:     offset 3948
174EXE:      align 2^1 (2)
175EXE:     reloff 0
176EXE:     nreloc 0
177EXE:       type S_SYMBOL_STUBS
178EXE: attributes PURE_INSTRUCTIONS SOME_INSTRUCTIONS
179EXE:  reserved1 0 (index into indirect symbol table)
180EXE:  reserved2 6 (size of stubs)
181EXE: Section
182EXE:   sectname __stub_helper
183EXE:    segname __TEXT
184EXE:       addr 0x0000000100000f74
185EXE:       size 0x000000000000001a
186EXE:     offset 3956
187EXE:      align 2^2 (4)
188EXE:     reloff 0
189EXE:     nreloc 0
190EXE:       type S_REGULAR
191EXE: attributes PURE_INSTRUCTIONS SOME_INSTRUCTIONS
192EXE:  reserved1 0
193EXE:  reserved2 0
194EXE: Section
195EXE:   sectname __cstring
196EXE:    segname __TEXT
197EXE:       addr 0x0000000100000f8e
198EXE:       size 0x000000000000000d
199EXE:     offset 3982
200EXE:      align 2^0 (1)
201EXE:     reloff 0
202EXE:     nreloc 0
203EXE:       type S_CSTRING_LITERALS
204EXE: attributes (none)
205EXE:  reserved1 0
206EXE:  reserved2 0
207EXE: Section
208EXE:   sectname __unwind_info
209EXE:    segname __TEXT
210EXE:       addr 0x0000000100000f9b
211EXE:       size 0x0000000000000048
212EXE:     offset 3995
213EXE:      align 2^0 (1)
214EXE:     reloff 0
215EXE:     nreloc 0
216EXE:       type S_REGULAR
217EXE: attributes (none)
218EXE:  reserved1 0
219EXE:  reserved2 0
220EXE: Section
221EXE:   sectname __eh_frame
222EXE:    segname __TEXT
223EXE:       addr 0x0000000100000fe8
224EXE:       size 0x0000000000000018
225EXE:     offset 4072
226EXE:      align 2^3 (8)
227EXE:     reloff 0
228EXE:     nreloc 0
229EXE:       type S_REGULAR
230EXE: attributes (none)
231EXE:  reserved1 0
232EXE:  reserved2 0
233EXE: Load command 2
234EXE:       cmd LC_SEGMENT_64
235EXE:   cmdsize 232
236EXE:   segname __DATA
237EXE:    vmaddr 0x0000000100001000
238EXE:    vmsize 0x0000000000001000
239EXE:   fileoff 4096
240EXE:  filesize 4096
241EXE:   maxprot rwx
242EXE:  initprot rw-
243EXE:    nsects 2
244EXE:     flags (none)
245EXE: Section
246EXE:   sectname __nl_symbol_ptr
247EXE:    segname __DATA
248EXE:       addr 0x0000000100001000
249EXE:       size 0x0000000000000010
250EXE:     offset 4096
251EXE:      align 2^3 (8)
252EXE:     reloff 0
253EXE:     nreloc 0
254EXE:       type S_NON_LAZY_SYMBOL_POINTERS
255EXE: attributes (none)
256EXE:  reserved1 1 (index into indirect symbol table)
257EXE:  reserved2 0
258EXE: Section
259EXE:   sectname __la_symbol_ptr
260EXE:    segname __DATA
261EXE:       addr 0x0000000100001010
262EXE:       size 0x0000000000000008
263EXE:     offset 4112
264EXE:      align 2^3 (8)
265EXE:     reloff 0
266EXE:     nreloc 0
267EXE:       type S_LAZY_SYMBOL_POINTERS
268EXE: attributes (none)
269EXE:  reserved1 3 (index into indirect symbol table)
270EXE:  reserved2 0
271EXE: Load command 3
272EXE:       cmd LC_SEGMENT_64
273EXE:   cmdsize 72
274EXE:   segname __LINKEDIT
275EXE:    vmaddr 0x0000000100002000
276EXE:    vmsize 0x0000000000001000
277EXE:   fileoff 8192
278EXE:  filesize 304
279EXE:   maxprot rwx
280EXE:  initprot r--
281EXE:    nsects 0
282EXE:     flags (none)
283EXE: Load command 4
284EXE:             cmd LC_DYLD_INFO_ONLY
285EXE:         cmdsize 48
286EXE:      rebase_off 8192
287EXE:     rebase_size 8
288EXE:        bind_off 8200
289EXE:       bind_size 24
290EXE:   weak_bind_off 0
291EXE:  weak_bind_size 0
292EXE:   lazy_bind_off 8224
293EXE:  lazy_bind_size 16
294EXE:      export_off 8240
295EXE:     export_size 48
296EXE: Load command 5
297EXE:      cmd LC_SYMTAB
298EXE:  cmdsize 24
299EXE:   symoff 8360
300EXE:    nsyms 4
301EXE:   stroff 8440
302EXE:  strsize 56
303EXE: Load command 6
304EXE:             cmd LC_DYSYMTAB
305EXE:         cmdsize 80
306EXE:       ilocalsym 0
307EXE:       nlocalsym 0
308EXE:      iextdefsym 0
309EXE:      nextdefsym 2
310EXE:       iundefsym 2
311EXE:       nundefsym 2
312EXE:          tocoff 0
313EXE:            ntoc 0
314EXE:       modtaboff 0
315EXE:         nmodtab 0
316EXE:    extrefsymoff 0
317EXE:     nextrefsyms 0
318EXE:  indirectsymoff 8424
319EXE:   nindirectsyms 4
320EXE:       extreloff 0
321EXE:         nextrel 0
322EXE:       locreloff 0
323EXE:         nlocrel 0
324EXE: Load command 7
325EXE:           cmd LC_LOAD_DYLINKER
326EXE:       cmdsize 32
327EXE:          name /usr/lib/dyld (offset 12)
328EXE: Load command 8
329EXE:      cmd LC_UUID
330EXE:  cmdsize 24
331EXE:     uuid 65C2DD41-79B0-3B34-871B-8CB3446AB762
332EXE: Load command 9
333EXE:       cmd LC_VERSION_MIN_MACOSX
334EXE:   cmdsize 16
335EXE:   version 10.9
336EXE:       sdk 10.9
337EXE: Load command 10
338EXE:       cmd LC_SOURCE_VERSION
339EXE:   cmdsize 16
340EXE:   version 0.0
341EXE: Load command 11
342EXE:        cmd LC_MAIN
343EXE:    cmdsize 24
344EXE:   entryoff 3888
345EXE:  stacksize 0
346EXE: Load command 12
347EXE:           cmd LC_LOAD_DYLIB
348EXE:       cmdsize 56
349EXE:          name /usr/lib/libSystem.B.dylib (offset 24)
350EXE:       current version 1197.1.1
351EXE: compatibility version 1.0.0
352EXE: Load command 13
353EXE:       cmd LC_FUNCTION_STARTS
354EXE:   cmdsize 16
355EXE:   dataoff 8288
356EXE:  datasize 8
357EXE: Load command 14
358EXE:       cmd LC_DATA_IN_CODE
359EXE:   cmdsize 16
360EXE:   dataoff 8296
361EXE:  datasize 0
362EXE: Load command 15
363EXE:       cmd LC_DYLIB_CODE_SIGN_DRS
364EXE:   cmdsize 16
365EXE:   dataoff 8296
366EXE:  datasize 64
367
368
369LOAD: Load command 10
370LOAD:           cmd LC_LOAD_DYLIB
371LOAD:       cmdsize 48
372LOAD:          name /usr/lib/foo1.dylib (offset 24)
373LOAD:       current version 0.0.0
374LOAD: compatibility version 0.0.0
375LOAD: Load command 11
376LOAD:           cmd LC_LOAD_WEAK_DYLIB
377LOAD:       cmdsize 48
378LOAD:          name /usr/lib/foo2.dylib (offset 24)
379LOAD:       current version 0.0.0
380LOAD: compatibility version 0.0.0
381LOAD: Load command 12
382LOAD:           cmd LC_REEXPORT_DYLIB
383LOAD:       cmdsize 48
384LOAD:          name /usr/lib/foo3.dylib (offset 24)
385LOAD:       current version 0.0.0
386LOAD: compatibility version 0.0.0
387LOAD: Load command 13
388LOAD:           cmd LC_LAZY_LOAD_DYLIB
389LOAD:       cmdsize 48
390LOAD:          name /usr/lib/foo4.dylib (offset 24)
391LOAD:       current version 0.0.0
392LOAD: compatibility version 0.0.0
393
394LD_OPT: Load command 4
395LD_OPT:      cmd LC_LINKER_OPTION
396LD_OPT:  cmdsize 24
397LD_OPT:    count 1
398LD_OPT:   string #1 -lc++
399LD_OPT: Load command 5
400LD_OPT:      cmd LC_LINKER_OPTION
401LD_OPT:  cmdsize 40
402LD_OPT:    count 2
403LD_OPT:   string #1 -framework
404LD_OPT:   string #2 Foundation
405
406SUB_FRAME: Load command 10
407SUB_FRAME:           cmd LC_SUB_FRAMEWORK
408SUB_FRAME:       cmdsize 16
409SUB_FRAME:      umbrella Bar (offset 12)
410
411SUB_UMB: Load command 5
412SUB_UMB:           cmd LC_SUB_UMBRELLA
413SUB_UMB:       cmdsize 16
414SUB_UMB:  sub_umbrella Foo (offset 12)
415
416SUB_LIB: Load command 5
417SUB_LIB:           cmd LC_SUB_LIBRARY
418SUB_LIB:       cmdsize 20
419SUB_LIB:   sub_library libfoo (offset 12)
420
421SUB_CLI: Load command 10
422SUB_CLI:           cmd LC_SUB_CLIENT
423SUB_CLI:       cmdsize 16
424SUB_CLI:        client bar (offset 12)
425
426ROUTINE: Load command 6
427ROUTINE:           cmd LC_ROUTINES_64
428ROUTINE:       cmdsize 72
429ROUTINE:  init_address 0x0000000000000f80
430ROUTINE:   init_module 0
431ROUTINE:     reserved1 0
432ROUTINE:     reserved2 0
433ROUTINE:     reserved3 0
434ROUTINE:     reserved4 0
435ROUTINE:     reserved5 0
436ROUTINE:     reserved6 0
437
438THREAD: Load command 10
439THREAD:         cmd LC_UNIXTHREAD
440THREAD:     cmdsize 184
441THREAD:      flavor x86_THREAD_STATE64
442THREAD:       count x86_THREAD_STATE64_COUNT
443THREAD:    rax  0x0000000000000000 rbx 0x0000000000000000 rcx  0x0000000000000000
444THREAD:    rdx  0x0000000000000000 rdi 0x0000000000000000 rsi  0x0000000000000000
445THREAD:    rbp  0x0000000000000000 rsp 0x0000000000000000 r8   0x0000000000000000
446THREAD:     r9  0x0000000000000000 r10 0x0000000000000000 r11  0x0000000000000000
447THREAD:    r12  0x0000000000000000 r13 0x0000000000000000 r14  0x0000000000000000
448THREAD:    r15  0x0000000000000000 rip 0x0000000100000d00
449THREAD: rflags  0x0000000000000000 cs  0x0000000000000000 fs   0x0000000000000000
450THREAD:     gs  0x0000000000000000
451
452FATi386: Mach header
453FATi386:       magic cputype cpusubtype  caps    filetype ncmds sizeofcmds      flags
454FATi386:    MH_MAGIC    I386        ALL  0x00     EXECUTE    16        716   NOUNDEFS DYLDLINK TWOLEVEL PIE MH_NO_HEAP_EXECUTION
455
456NON_VERBOSE: Mach header
457NON_VERBOSE:       magic cputype cpusubtype  caps    filetype ncmds sizeofcmds      flags
458NON_VERBOSE:  0xfeedfacf 16777223          3  0x00           1     3        496 0x00002000
459NON_VERBOSE: Load command 0
460NON_VERBOSE:       cmd LC_SEGMENT_64
461NON_VERBOSE:   cmdsize 392
462NON_VERBOSE:   segname
463NON_VERBOSE:    vmaddr 0x0000000000000000
464NON_VERBOSE:    vmsize 0x00000000000000a8
465NON_VERBOSE:   fileoff 528
466NON_VERBOSE:  filesize 168
467NON_VERBOSE:   maxprot 0x00000007
468NON_VERBOSE:  initprot 0x00000007
469NON_VERBOSE:    nsects 4
470NON_VERBOSE:     flags 0x0
471NON_VERBOSE: Section
472NON_VERBOSE:   sectname __text
473NON_VERBOSE:    segname __TEXT
474NON_VERBOSE:       addr 0x0000000000000000
475NON_VERBOSE:       size 0x000000000000003b
476NON_VERBOSE:     offset 528
477NON_VERBOSE:      align 2^4 (16)
478NON_VERBOSE:     reloff 696
479NON_VERBOSE:     nreloc 2
480NON_VERBOSE:      flags 0x80000400
481NON_VERBOSE:  reserved1 0
482NON_VERBOSE:  reserved2 0
483NON_VERBOSE: Section
484NON_VERBOSE:   sectname __cstring
485NON_VERBOSE:    segname __TEXT
486NON_VERBOSE:       addr 0x000000000000003b
487NON_VERBOSE:       size 0x000000000000000d
488NON_VERBOSE:     offset 587
489NON_VERBOSE:      align 2^0 (1)
490NON_VERBOSE:     reloff 0
491NON_VERBOSE:     nreloc 0
492NON_VERBOSE:      flags 0x00000002
493NON_VERBOSE:  reserved1 0
494NON_VERBOSE:  reserved2 0
495NON_VERBOSE: Section
496NON_VERBOSE:   sectname __compact_unwind
497NON_VERBOSE:    segname __LD
498NON_VERBOSE:       addr 0x0000000000000048
499NON_VERBOSE:       size 0x0000000000000020
500NON_VERBOSE:     offset 600
501NON_VERBOSE:      align 2^3 (8)
502NON_VERBOSE:     reloff 712
503NON_VERBOSE:     nreloc 1
504NON_VERBOSE:      flags 0x02000000
505NON_VERBOSE:  reserved1 0
506NON_VERBOSE:  reserved2 0
507NON_VERBOSE: Section
508NON_VERBOSE:   sectname __eh_frame
509NON_VERBOSE:    segname __TEXT
510NON_VERBOSE:       addr 0x0000000000000068
511NON_VERBOSE:       size 0x0000000000000040
512NON_VERBOSE:     offset 632
513NON_VERBOSE:      align 2^3 (8)
514NON_VERBOSE:     reloff 0
515NON_VERBOSE:     nreloc 0
516NON_VERBOSE:      flags 0x6800000b
517NON_VERBOSE:  reserved1 0
518NON_VERBOSE:  reserved2 0
519NON_VERBOSE: Load command 1
520NON_VERBOSE:      cmd LC_SYMTAB
521NON_VERBOSE:  cmdsize 24
522NON_VERBOSE:   symoff 720
523NON_VERBOSE:    nsyms 5
524NON_VERBOSE:   stroff 800
525NON_VERBOSE:  strsize 44
526NON_VERBOSE: Load command 2
527NON_VERBOSE:             cmd LC_DYSYMTAB
528NON_VERBOSE:         cmdsize 80
529NON_VERBOSE:       ilocalsym 0
530NON_VERBOSE:       nlocalsym 2
531NON_VERBOSE:      iextdefsym 2
532NON_VERBOSE:      nextdefsym 2
533NON_VERBOSE:       iundefsym 4
534NON_VERBOSE:       nundefsym 1
535NON_VERBOSE:          tocoff 0
536NON_VERBOSE:            ntoc 0
537NON_VERBOSE:       modtaboff 0
538NON_VERBOSE:         nmodtab 0
539NON_VERBOSE:    extrefsymoff 0
540NON_VERBOSE:     nextrefsyms 0
541NON_VERBOSE:  indirectsymoff 0
542NON_VERBOSE:   nindirectsyms 0
543NON_VERBOSE:       extreloff 0
544NON_VERBOSE:         nextrel 0
545NON_VERBOSE:       locreloff 0
546NON_VERBOSE:         nlocrel 0
547
548CODESIG:      cmd LC_CODE_SIGNATURE
549CODESIG:  cmdsize 16
550CODESIG:  dataoff 8496
551CODESIG: datasize 64
552
553NOTE:        cmd LC_NOTE
554NOTE:    cmdsize 40
555NOTE: data_owner DATA OWNER
556NOTE:     offset 68
557NOTE:       size 8
558