| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303 | 
							
- #------------------------------------------------------------
 
- # $File: mach,v 1.29 2021/04/26 15:56:00 christos Exp $
 
- # Mach has two magic numbers, 0xcafebabe and 0xfeedface.
 
- # Unfortunately the first, cafebabe, is shared with
 
- # Java ByteCode, so they are both handled in the file "cafebabe".
 
- # The "feedface" ones are handled herein.
 
- #------------------------------------------------------------
 
- # if set, it's for the 64-bit version of the architecture
 
- # yes, this is separate from the low-order magic number bit
 
- # it's also separate from the "64-bit libraries" bit in the
 
- # upper 8 bits of the CPU subtype
 
- # Reference:	https://opensource.apple.com/source/cctools/cctools-949.0.1/
 
- #               include/mach-o/loader.h
 
- # display CPU type as string like: i386 x86_64 ... armv7 armv7k ...
 
- 0	name	mach-o-cpu
 
- >0	belong&0xff000000	0
 
- #
 
- # 32-bit ABIs.
 
- #
 
- #				1	vax
 
- >>0	belong&0x00ffffff	1
 
- >>>4		belong&0x00ffffff	0	vax
 
- >>>4		belong&0x00ffffff	1	vax11/780
 
- >>>4		belong&0x00ffffff	2	vax11/785
 
- >>>4		belong&0x00ffffff	3	vax11/750
 
- >>>4		belong&0x00ffffff	4	vax11/730
 
- >>>4		belong&0x00ffffff	5	uvaxI
 
- >>>4		belong&0x00ffffff	6	uvaxII
 
- >>>4		belong&0x00ffffff	7	vax8200
 
- >>>4		belong&0x00ffffff	8	vax8500
 
- >>>4		belong&0x00ffffff	9	vax8600
 
- >>>4		belong&0x00ffffff	10	vax8650
 
- >>>4		belong&0x00ffffff	11	vax8800
 
- >>>4		belong&0x00ffffff	12	uvaxIII
 
- >>>4		belong&0x00ffffff	>12	vax subarchitecture=%d
 
- >>0	belong&0x00ffffff	2	romp
 
- >>0	belong&0x00ffffff	3	architecture=3
 
- >>0	belong&0x00ffffff	4	ns32032
 
- >>0	belong&0x00ffffff	5	ns32332
 
- >>0	belong&0x00ffffff	6	m68k
 
- #				7	x86
 
- >>0	belong&0x00ffffff	7
 
- >>>4	belong&0x0000000f	3		i386
 
- >>>4	belong&0x0000000f	4		i486
 
- >>>>4	belong&0x00fffff0	0
 
- >>>>4	belong&0x00fffff0	0x80		\bsx
 
- >>>4	belong&0x0000000f	5		i586
 
- >>>4	belong&0x0000000f	6
 
- >>>>4	belong&0x00fffff0	0		p6
 
- >>>>4	belong&0x00fffff0	0x10		pentium_pro
 
- >>>>4	belong&0x00fffff0	0x20		pentium_2_m0x20
 
- >>>>4	belong&0x00fffff0	0x30		pentium_2_m3
 
- >>>>4	belong&0x00fffff0	0x40		pentium_2_m0x40
 
- >>>>4	belong&0x00fffff0	0x50		pentium_2_m5
 
- >>>>4	belong&0x00fffff0	>0x50		pentium_2_m%#x
 
- >>>4	belong&0x0000000f	7		celeron
 
- >>>>4	belong&0x00fffff0	0x00		\b_m%#x
 
- >>>>4	belong&0x00fffff0	0x10		\b_m%#x
 
- >>>>4	belong&0x00fffff0	0x20		\b_m%#x
 
- >>>>4	belong&0x00fffff0	0x30		\b_m%#x
 
- >>>>4	belong&0x00fffff0	0x40		\b_m%#x
 
- >>>>4	belong&0x00fffff0	0x50		\b_m%#x
 
- >>>>4	belong&0x00fffff0	0x60
 
- >>>>4	belong&0x00fffff0	0x70		\b_mobile
 
- >>>>4	belong&0x00fffff0	>0x70		\b_m%#x
 
- >>>4	belong&0x0000000f	8		pentium_3
 
- >>>>4	belong&0x00fffff0	0x00
 
- >>>>4	belong&0x00fffff0	0x10		\b_m
 
- >>>>4	belong&0x00fffff0	0x20		\b_xeon
 
- >>>>4	belong&0x00fffff0	>0x20		\b_m%#x
 
- >>>4	belong&0x0000000f	9		pentiumM
 
- >>>>4	belong&0x00fffff0	0x00
 
- >>>>4	belong&0x00fffff0	>0x00		\b_m%#x
 
- >>>4	belong&0x0000000f	10		pentium_4
 
- >>>>4	belong&0x00fffff0	0x00
 
- >>>>4	belong&0x00fffff0	0x10		\b_m
 
- >>>>4	belong&0x00fffff0	>0x10		\b_m%#x
 
- >>>4	belong&0x0000000f	11		itanium
 
- >>>>4	belong&0x00fffff0	0x00
 
- >>>>4	belong&0x00fffff0	0x10		\b_2
 
- >>>>4	belong&0x00fffff0	>0x10		\b_m%#x
 
- >>>4	belong&0x0000000f	12		xeon
 
- >>>>4	belong&0x00fffff0	0x00
 
- >>>>4	belong&0x00fffff0	0x10		\b_mp
 
- >>>>4	belong&0x00fffff0	>0x10		\b_m%#x
 
- >>>4	belong&0x0000000f	>12		ia32 family=%d
 
- >>>>4	belong&0x00fffff0	0x00
 
- >>>>4	belong&0x00fffff0	>0x00		model=%x
 
- >>0	belong&0x00ffffff	8	mips
 
- >>>4		belong&0x00ffffff	1	R2300
 
- >>>4		belong&0x00ffffff	2	R2600
 
- >>>4		belong&0x00ffffff	3	R2800
 
- >>>4		belong&0x00ffffff	4	R2000a
 
- >>>4		belong&0x00ffffff	5	R2000
 
- >>>4		belong&0x00ffffff	6	R3000a
 
- >>>4		belong&0x00ffffff	7	R3000
 
- >>>4		belong&0x00ffffff	>7	subarchitecture=%d
 
- >>0	belong&0x00ffffff	9	ns32532
 
- >>0	belong&0x00ffffff	10	mc98000
 
- >>0	belong&0x00ffffff	11	hppa
 
- >>>4		belong&0x00ffffff	0	7100
 
- >>>4		belong&0x00ffffff	1	7100LC
 
- >>>4		belong&0x00ffffff	>1	subarchitecture=%d
 
- >>0	belong&0x00ffffff	12	arm
 
- >>>4		belong&0x00ffffff	0
 
- >>>4		belong&0x00ffffff	1	subarchitecture=%d
 
- >>>4		belong&0x00ffffff	2	subarchitecture=%d
 
- >>>4		belong&0x00ffffff	3	subarchitecture=%d
 
- >>>4		belong&0x00ffffff	4	subarchitecture=%d
 
- >>>4		belong&0x00ffffff	5	\bv4t
 
- >>>4		belong&0x00ffffff	6	\bv6
 
- >>>4		belong&0x00ffffff	7	\bv5tej
 
- >>>4		belong&0x00ffffff	8	\bxscale
 
- >>>4		belong&0x00ffffff	9	\bv7
 
- >>>4		belong&0x00ffffff	10	\bv7f
 
- >>>4		belong&0x00ffffff	11	\bv7s
 
- >>>4		belong&0x00ffffff	12	\bv7k
 
- >>>4		belong&0x00ffffff	13	\bv8
 
- >>>4		belong&0x00ffffff	14	\bv6m
 
- >>>4		belong&0x00ffffff	15	\bv7m
 
- >>>4		belong&0x00ffffff	16	\bv7em
 
- >>>4		belong&0x00ffffff	>16	subarchitecture=%d
 
- #				13	m88k
 
- >>0	belong&0x00ffffff	13
 
- >>>4		belong&0x00ffffff	0	mc88000
 
- >>>4		belong&0x00ffffff	1	mc88100
 
- >>>4		belong&0x00ffffff	2	mc88110
 
- >>>4		belong&0x00ffffff	>2	mc88000 subarchitecture=%d
 
- >>0	belong&0x00ffffff	14	SPARC
 
- >>0	belong&0x00ffffff	15	i860g
 
- >>0	belong&0x00ffffff	16	alpha
 
- >>0	belong&0x00ffffff	17	rs6000
 
- >>0	belong&0x00ffffff	18	ppc
 
- >>>4		belong&0x00ffffff	0
 
- >>>4		belong&0x00ffffff	1	\b_601
 
- >>>4		belong&0x00ffffff	2	\b_602
 
- >>>4		belong&0x00ffffff	3	\b_603
 
- >>>4		belong&0x00ffffff	4	\b_603e
 
- >>>4		belong&0x00ffffff	5	\b_603ev
 
- >>>4		belong&0x00ffffff	6	\b_604
 
- >>>4		belong&0x00ffffff	7	\b_604e
 
- >>>4		belong&0x00ffffff	8	\b_620
 
- >>>4		belong&0x00ffffff	9	\b_750
 
- >>>4		belong&0x00ffffff	10	\b_7400
 
- >>>4		belong&0x00ffffff	11	\b_7450
 
- >>>4		belong&0x00ffffff	100	\b_970
 
- >>>4		belong&0x00ffffff	>100	subarchitecture=%d
 
- >>0	belong&0x00ffffff	>18	architecture=%d
 
- >0	belong&0xff000000	0x01000000
 
- #
 
- # 64-bit ABIs.
 
- #
 
- >>0	belong&0x00ffffff	0	64-bit architecture=%d
 
- >>0	belong&0x00ffffff	1	64-bit architecture=%d
 
- >>0	belong&0x00ffffff	2	64-bit architecture=%d
 
- >>0	belong&0x00ffffff	3	64-bit architecture=%d
 
- >>0	belong&0x00ffffff	4	64-bit architecture=%d
 
- >>0	belong&0x00ffffff	5	64-bit architecture=%d
 
- >>0	belong&0x00ffffff	6	64-bit architecture=%d
 
- >>0	belong&0x00ffffff	7	x86_64
 
- >>>4		belong&0x00ffffff	0	subarchitecture=%d
 
- >>>4		belong&0x00ffffff	1	subarchitecture=%d
 
- >>>4		belong&0x00ffffff	2	subarchitecture=%d
 
- >>>4		belong&0x00ffffff	3
 
- >>>4		belong&0x00ffffff	4	\b_arch1
 
- >>>4		belong&0x00ffffff	8	\b_haswell
 
- >>>4		belong&0x00ffffff	>4	subarchitecture=%d
 
- >>0	belong&0x00ffffff	8	64-bit architecture=%d
 
- >>0	belong&0x00ffffff	9	64-bit architecture=%d
 
- >>0	belong&0x00ffffff	10	64-bit architecture=%d
 
- >>0	belong&0x00ffffff	11	64-bit architecture=%d
 
- >>0	belong&0x00ffffff	12	arm64
 
- >>>4		belong&0x00ffffff	0
 
- >>>4		belong&0x00ffffff	1	\bv8
 
- >>>4		belong&0x00ffffff	2	\be
 
- >>>>7		ubyte&0xff		>0	(caps:
 
- >>>>7		ubyte&0xff		<0x80	%#02x
 
- >>>>7		ubyte&0xc0		0x80	PAC
 
- >>>>>7		ubyte&0x3f		x	\b%02d
 
- >>>>7		ubyte&0xc0		0xc0	PAK
 
- >>>>>7		ubyte&0x3f		x	\b%02d
 
- >>>>7		ubyte&0xff		x	\b)
 
- >>>4		belong&0x00ffffff	>2	subarchitecture=%d
 
- >>0	belong&0x00ffffff	13	64-bit architecture=%d
 
- >>0	belong&0x00ffffff	14	64-bit architecture=%d
 
- >>0	belong&0x00ffffff	15	64-bit architecture=%d
 
- >>0	belong&0x00ffffff	16	64-bit architecture=%d
 
- >>0	belong&0x00ffffff	17	64-bit architecture=%d
 
- >>0	belong&0x00ffffff	18	ppc64
 
- >>>4		belong&0x00ffffff	0
 
- >>>4		belong&0x00ffffff	1		\b_601
 
- >>>4		belong&0x00ffffff	2		\b_602
 
- >>>4		belong&0x00ffffff	3		\b_603
 
- >>>4		belong&0x00ffffff	4		\b_603e
 
- >>>4		belong&0x00ffffff	5		\b_603ev
 
- >>>4		belong&0x00ffffff	6		\b_604
 
- >>>4		belong&0x00ffffff	7		\b_604e
 
- >>>4		belong&0x00ffffff	8		\b_620
 
- >>>4		belong&0x00ffffff	9		\b_650
 
- >>>4		belong&0x00ffffff	10		\b_7400
 
- >>>4		belong&0x00ffffff	11		\b_7450
 
- >>>4		belong&0x00ffffff	100		\b_970
 
- >>>4		belong&0x00ffffff	>100		subarchitecture=%d
 
- >>0	belong&0x00ffffff	>18	64-bit architecture=%d
 
- >0	belong&0xff000000	0x02000000
 
- #
 
- # 64_32-bit ABIs.
 
- #
 
- >>0	belong&0x00ffffff	0	64_32-bit architecture=%d
 
- >>0	belong&0x00ffffff	1	64_32-bit architecture=%d
 
- >>0	belong&0x00ffffff	2	64_32-bit architecture=%d
 
- >>0	belong&0x00ffffff	3	64_32-bit architecture=%d
 
- >>0	belong&0x00ffffff	4	64_32-bit architecture=%d
 
- >>0	belong&0x00ffffff	5	64_32-bit architecture=%d
 
- >>0	belong&0x00ffffff	6	64_32-bit architecture=%d
 
- >>0	belong&0x00ffffff	7	64_32-bit architecture=%d
 
- >>0	belong&0x00ffffff	8	64_32-bit architecture=%d
 
- >>0	belong&0x00ffffff	9	64_32-bit architecture=%d
 
- >>0	belong&0x00ffffff	10	64_32-bit architecture=%d
 
- >>0	belong&0x00ffffff	11	64_32-bit architecture=%d
 
- >>0	belong&0x00ffffff	12	64_32-bit arm
 
- >>>4		belong&0x00ffffff	0
 
- >>>4		belong&0x00ffffff	1	\bv8
 
- >>>4		belong&0x00ffffff	>1	subarchitecture=%d
 
- >>0	belong&0x00ffffff	13	64_32-bit architecture=%d
 
- >>0	belong&0x00ffffff	14	64_32-bit architecture=%d
 
- >>0	belong&0x00ffffff	15	64_32-bit architecture=%d
 
- >>0	belong&0x00ffffff	16	64_32-bit architecture=%d
 
- >>0	belong&0x00ffffff	17	64_32-bit architecture=%d
 
- >>0	belong&0x00ffffff	18	64_32-bit architecture=%d
 
- >>0	belong&0x00ffffff	>18	64_32-bit architecture=%d
 
- 0	name		mach-o-be
 
- >0	byte		0xcf		64-bit
 
- >4	use		mach-o-cpu
 
- >12	belong		1		object
 
- # GRR: Does not work for Mach-O with 2 architectures; instead display oo
 
- #!:ext	o
 
- !:ext	o/
 
- >12	belong		2		executable
 
- # the executables normally have no file extension like perl,
 
- # but exceptions like perl5.18 perl5.16
 
- !:ext	16/18/
 
- >12	belong		3		fixed virtual memory shared library
 
- >12	belong		4		core
 
- >12	belong		5		preload executable
 
- >12	belong		6		dynamically linked shared library
 
- # GRR: Does not work for Mach-O with 2 architectures; instead display dylibdylib
 
- #!:ext	dylib
 
- !:ext	dylib/
 
- >12	belong		7		dynamic linker
 
- >12	belong		8		bundle
 
- # normally name extension bundle; but exceptions like: AMDil_r700.dylib 
 
- !:ext	bundle/dylib/
 
- >12	belong		9		dynamically linked shared library stub
 
- >12	belong		10		dSYM companion file
 
- >12	belong		11		kext bundle
 
- >12	belong		>11
 
- >>12	belong		x		filetype=%d
 
- >24	belong		>0		\b, flags:<
 
- >>24	belong		&0x00000001	\bNOUNDEFS
 
- >>24	belong		&0x00000002	\b|INCRLINK
 
- >>24	belong		&0x00000004	\b|DYLDLINK
 
- >>24	belong		&0x00000008	\b|BINDATLOAD
 
- >>24	belong		&0x00000010	\b|PREBOUND
 
- >>24	belong		&0x00000020	\b|SPLIT_SEGS
 
- >>24	belong		&0x00000040	\b|LAZY_INIT
 
- >>24	belong		&0x00000080	\b|TWOLEVEL
 
- >>24	belong		&0x00000100	\b|FORCE_FLAT
 
- >>24	belong		&0x00000200	\b|NOMULTIDEFS
 
- >>24	belong		&0x00000400	\b|NOFIXPREBINDING
 
- >>24	belong		&0x00000800	\b|PREBINDABLE
 
- >>24	belong		&0x00001000	\b|ALLMODSBOUND
 
- >>24	belong		&0x00002000	\b|SUBSECTIONS_VIA_SYMBOLS
 
- >>24	belong		&0x00004000	\b|CANONICAL
 
- >>24	belong		&0x00008000	\b|WEAK_DEFINES
 
- >>24	belong		&0x00010000	\b|BINDS_TO_WEAK
 
- >>24	belong		&0x00020000	\b|ALLOW_STACK_EXECUTION
 
- >>24	belong		&0x00040000	\b|ROOT_SAFE
 
- >>24	belong		&0x00080000	\b|SETUID_SAFE
 
- >>24	belong		&0x00100000	\b|NO_REEXPORTED_DYLIBS
 
- >>24	belong		&0x00200000	\b|PIE
 
- >>24	belong		&0x00400000	\b|DEAD_STRIPPABLE_DYLIB
 
- >>24	belong		&0x00800000	\b|HAS_TLV_DESCRIPTORS
 
- >>24	belong		&0x01000000	\b|NO_HEAP_EXECUTION
 
- >>24	belong		&0x02000000	\b|APP_EXTENSION_SAFE
 
- >>24	belong		&0x04000000	\b|NLIST_OUTOFSYNC_WITH_DYLDINFO
 
- >>24	belong		&0x08000000	\b|SIM_SUPPORT
 
- >>24	belong		&0x80000000	\b|DYLIB_IN_CACHE
 
- >>24	belong		x		\b>
 
- #
 
- 0	lelong&0xfffffffe	0xfeedface	Mach-O
 
- !:strength +1
 
- !:mime application/x-mach-binary
 
- >0	use	\^mach-o-be
 
- 0	belong&0xfffffffe	0xfeedface	Mach-O
 
- !:strength +1
 
- !:mime application/x-mach-binary
 
- >0	use	mach-o-be
 
 
  |