Blame


1 1b2e4315 2006-08-10 matthias> /*
2 678ddfbf 2012-09-11 matthias * Copyright (c) 1999-2010 Apple Inc. All Rights Reserved.
3 1b2e4315 2006-08-10 matthias> *
4 1b2e4315 2006-08-10 matthias> * @APPLE_LICENSE_HEADER_START@
5 1b2e4315 2006-08-10 matthias> *
6 678ddfbf 2012-09-11 matthias * This file contains Original Code and/or Modifications of Original Code
7 678ddfbf 2012-09-11 matthias * as defined in and that are subject to the Apple Public Source License
8 678ddfbf 2012-09-11 matthias * Version 2.0 (the 'License'). You may not use this file except in
9 678ddfbf 2012-09-11 matthias * compliance with the License. Please obtain a copy of the License at
10 678ddfbf 2012-09-11 matthias * http://www.opensource.apple.com/apsl/ and read it before using this
11 678ddfbf 2012-09-11 matthias * file.
12 1b2e4315 2006-08-10 matthias> *
13 678ddfbf 2012-09-11 matthias * The Original Code and all software distributed under the License are
14 678ddfbf 2012-09-11 matthias * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 1b2e4315 2006-08-10 matthias> * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 1b2e4315 2006-08-10 matthias> * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 678ddfbf 2012-09-11 matthias * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 678ddfbf 2012-09-11 matthias * Please see the License for the specific language governing rights and
19 678ddfbf 2012-09-11 matthias * limitations under the License.
20 1b2e4315 2006-08-10 matthias> *
21 1b2e4315 2006-08-10 matthias> * @APPLE_LICENSE_HEADER_END@
22 1b2e4315 2006-08-10 matthias> */
23 1b2e4315 2006-08-10 matthias>
24 678ddfbf 2012-09-11 matthias
25 1b2e4315 2006-08-10 matthias> #ifndef __MACH_H
26 1b2e4315 2006-08-10 matthias> #define __MACH_H
27 1b2e4315 2006-08-10 matthias>
28 1b2e4315 2006-08-10 matthias> #define MH_OBJECT 0x1
29 1b2e4315 2006-08-10 matthias> #define MH_EXECUTE 0x2
30 1b2e4315 2006-08-10 matthias> #define MH_FVMLIB 0x3
31 1b2e4315 2006-08-10 matthias> #define MH_CORE 0x4
32 1b2e4315 2006-08-10 matthias> #define MH_PRELOAD 0x5
33 1b2e4315 2006-08-10 matthias> #define MH_DYLIB 0x6
34 1b2e4315 2006-08-10 matthias> #define MH_DYLINKER 0x7
35 1b2e4315 2006-08-10 matthias> #define MH_BUNDLE 0x8
36 1b2e4315 2006-08-10 matthias> #define MH_DYLIB_STUB 0x9
37 1b2e4315 2006-08-10 matthias> #define MH_NOUNDEFS 0x1
38 1b2e4315 2006-08-10 matthias> #define MH_INCRLINK 0x2
39 1b2e4315 2006-08-10 matthias> #define MH_DYLDLINK 0x4
40 1b2e4315 2006-08-10 matthias> #define MH_BINDATLOAD 0x8
41 1b2e4315 2006-08-10 matthias> #define MH_PREBOUND 0x10
42 1b2e4315 2006-08-10 matthias> #define MH_SPLIT_SEGS 0x20
43 1b2e4315 2006-08-10 matthias> #define MH_LAZY_INIT 0x40
44 1b2e4315 2006-08-10 matthias> #define MH_TWOLEVEL 0x80
45 1b2e4315 2006-08-10 matthias> #define MH_FORCE_FLAT 0x100
46 1b2e4315 2006-08-10 matthias> #define MH_NOMULTIDEFS 0x200
47 1b2e4315 2006-08-10 matthias> #define MH_NOFIXPREBINDING 0x400
48 1b2e4315 2006-08-10 matthias> #define MH_PREBINDABLE 0x800
49 1b2e4315 2006-08-10 matthias> #define MH_ALLMODSBOUND 0x1000
50 1b2e4315 2006-08-10 matthias> #define MH_SUBSECTIONS_VIA_SYMBOLS 0x2000
51 1b2e4315 2006-08-10 matthias> #define MH_CANONICAL 0x4000
52 1b2e4315 2006-08-10 matthias> #define MH_WEAK_DEFINES 0x8000
53 1b2e4315 2006-08-10 matthias> #define MH_BINDS_TO_WEAK 0x10000
54 1b2e4315 2006-08-10 matthias> #define MH_ALLOW_STACK_EXECUTION 0x20000
55 1b2e4315 2006-08-10 matthias>
56 1b2e4315 2006-08-10 matthias> #define LC_REQ_DYLD 0x80000000
57 1b2e4315 2006-08-10 matthias>
58 1b2e4315 2006-08-10 matthias> #define LC_SEGMENT 0x1
59 1b2e4315 2006-08-10 matthias> #define LC_SYMTAB 0x2
60 1b2e4315 2006-08-10 matthias> #define LC_SYMSEG 0x3
61 1b2e4315 2006-08-10 matthias> #define LC_THREAD 0x4
62 1b2e4315 2006-08-10 matthias> #define LC_UNIXTHREAD 0x5
63 1b2e4315 2006-08-10 matthias> #define LC_LOADFVMLIB 0x6
64 1b2e4315 2006-08-10 matthias> #define LC_IDFVMLIB 0x7
65 1b2e4315 2006-08-10 matthias> #define LC_IDENT 0x8
66 1b2e4315 2006-08-10 matthias> #define LC_FVMFILE 0x9
67 1b2e4315 2006-08-10 matthias> #define LC_PREPAGE 0xa
68 1b2e4315 2006-08-10 matthias> #define LC_DYSYMTAB 0xb
69 1b2e4315 2006-08-10 matthias> #define LC_LOAD_DYLIB 0xc
70 1b2e4315 2006-08-10 matthias> #define LC_ID_DYLIB 0xd
71 1b2e4315 2006-08-10 matthias> #define LC_LOAD_DYLINKER 0xe
72 1b2e4315 2006-08-10 matthias> #define LC_ID_DYLINKER 0xf
73 1b2e4315 2006-08-10 matthias> #define LC_PREBOUND_DYLIB 0x10
74 1b2e4315 2006-08-10 matthias> #define LC_ROUTINES 0x11
75 1b2e4315 2006-08-10 matthias> #define LC_SUB_FRAMEWORK 0x12
76 1b2e4315 2006-08-10 matthias> #define LC_SUB_UMBRELLA 0x13
77 1b2e4315 2006-08-10 matthias> #define LC_SUB_CLIENT 0x14
78 1b2e4315 2006-08-10 matthias> #define LC_SUB_LIBRARY 0x15
79 1b2e4315 2006-08-10 matthias> #define LC_TWOLEVEL_HINTS 0x16
80 1b2e4315 2006-08-10 matthias> #define LC_PREBIND_CKSUM 0x17
81 1b2e4315 2006-08-10 matthias>
82 1b2e4315 2006-08-10 matthias> #define LC_LOAD_WEAK_DYLIB (0x18 | LC_REQ_DYLD)
83 1b2e4315 2006-08-10 matthias>
84 1b2e4315 2006-08-10 matthias> #define SG_HIGHVM 0x1
85 1b2e4315 2006-08-10 matthias> #define SG_FVMLIB 0x2
86 1b2e4315 2006-08-10 matthias> #define SG_NORELOC 0x4
87 1b2e4315 2006-08-10 matthias> #define SG_PROTECTED_VERSION_1 0x8
88 1b2e4315 2006-08-10 matthias>
89 1b2e4315 2006-08-10 matthias> #define SECTION_TYPE 0x000000ff
90 1b2e4315 2006-08-10 matthias> #define SECTION_ATTRIBUTES 0xffffff00
91 1b2e4315 2006-08-10 matthias>
92 1b2e4315 2006-08-10 matthias> #define S_REGULAR 0x0
93 1b2e4315 2006-08-10 matthias> #define S_ZEROFILL 0x1
94 1b2e4315 2006-08-10 matthias> #define S_CSTRING_LITERALS 0x2
95 1b2e4315 2006-08-10 matthias> #define S_4BYTE_LITERALS 0x3
96 1b2e4315 2006-08-10 matthias> #define S_8BYTE_LITERALS 0x4
97 1b2e4315 2006-08-10 matthias> #define S_LITERAL_POINTERS 0x5
98 1b2e4315 2006-08-10 matthias>
99 1b2e4315 2006-08-10 matthias> #define S_NON_LAZY_SYMBOL_POINTERS 0x6
100 1b2e4315 2006-08-10 matthias> #define S_LAZY_SYMBOL_POINTERS 0x7
101 1b2e4315 2006-08-10 matthias> #define S_SYMBOL_STUBS 0x8
102 1b2e4315 2006-08-10 matthias> #define S_MOD_INIT_FUNC_POINTERS 0x9
103 1b2e4315 2006-08-10 matthias> #define S_MOD_TERM_FUNC_POINTERS 0xa
104 1b2e4315 2006-08-10 matthias> #define S_COALESCED 0xb
105 1b2e4315 2006-08-10 matthias> #define S_GB_ZEROFILL 0xc
106 1b2e4315 2006-08-10 matthias> #define S_INTERPOSING 0xd
107 1b2e4315 2006-08-10 matthias>
108 1b2e4315 2006-08-10 matthias> #define SECTION_ATTRIBUTES_USR 0xff000000
109 1b2e4315 2006-08-10 matthias> #define S_ATTR_PURE_INSTRUCTIONS 0x80000000
110 1b2e4315 2006-08-10 matthias> #define S_ATTR_NO_TOC 0x40000000
111 1b2e4315 2006-08-10 matthias> #define S_ATTR_STRIP_STATIC_SYMS 0x20000000
112 1b2e4315 2006-08-10 matthias> #define S_ATTR_NO_DEAD_STRIP 0x10000000
113 1b2e4315 2006-08-10 matthias> #define S_ATTR_LIVE_SUPPORT 0x08000000
114 1b2e4315 2006-08-10 matthias> #define S_ATTR_SELF_MODIFYING_CODE 0x04000000
115 1b2e4315 2006-08-10 matthias> #define SECTION_ATTRIBUTES_SYS 0x00ffff00
116 1b2e4315 2006-08-10 matthias> #define S_ATTR_SOME_INSTRUCTIONS 0x00000400
117 1b2e4315 2006-08-10 matthias> #define S_ATTR_EXT_RELOC 0x00000200
118 1b2e4315 2006-08-10 matthias> #define S_ATTR_LOC_RELOC 0x00000100
119 1b2e4315 2006-08-10 matthias>
120 1b2e4315 2006-08-10 matthias> #define SEG_PAGEZERO "__PAGEZERO"
121 1b2e4315 2006-08-10 matthias> #define SEG_TEXT "__TEXT"
122 1b2e4315 2006-08-10 matthias> #define SECT_TEXT "__text"
123 1b2e4315 2006-08-10 matthias> #define SECT_FVMLIB_INIT0 "__fvmlib_init0"
124 1b2e4315 2006-08-10 matthias> #define SECT_FVMLIB_INIT1 "__fvmlib_init1"
125 1b2e4315 2006-08-10 matthias> #define SEG_DATA "__DATA"
126 1b2e4315 2006-08-10 matthias> #define SECT_DATA "__data"
127 1b2e4315 2006-08-10 matthias> #define SECT_BSS "__bss"
128 1b2e4315 2006-08-10 matthias> #define SECT_COMMON "__common"
129 1b2e4315 2006-08-10 matthias> #define SEG_OBJC "__OBJC"
130 1b2e4315 2006-08-10 matthias> #define SECT_OBJC_SYMBOLS "__symbol_table"
131 1b2e4315 2006-08-10 matthias> #define SECT_OBJC_MODULES "__module_info"
132 1b2e4315 2006-08-10 matthias> #define SECT_OBJC_STRINGS "__selector_strs"
133 1b2e4315 2006-08-10 matthias> #define SECT_OBJC_REFS "__selector_refs"
134 1b2e4315 2006-08-10 matthias> #define SEG_ICON "__ICON"
135 1b2e4315 2006-08-10 matthias> #define SECT_ICON_HEADER "__header"
136 1b2e4315 2006-08-10 matthias> #define SECT_ICON_TIFF "__tiff"
137 1b2e4315 2006-08-10 matthias> #define SEG_LINKEDIT "__LINKEDIT"
138 1b2e4315 2006-08-10 matthias> #define SEG_UNIXSTACK "__UNIXSTACK"
139 1b2e4315 2006-08-10 matthias> #define SEG_IMPORT "__IMPORT"
140 1b2e4315 2006-08-10 matthias>
141 678ddfbf 2012-09-11 matthias /*
142 678ddfbf 2012-09-11 matthias * Capability bits used in the definition of cpu_type.
143 678ddfbf 2012-09-11 matthias */
144 678ddfbf 2012-09-11 matthias #define CPU_ARCH_MASK 0xff000000 /* mask for architecture bits */
145 678ddfbf 2012-09-11 matthias #define CPU_ARCH_ABI64 0x01000000 /* 64 bit ABI */
146 678ddfbf 2012-09-11 matthias
147 678ddfbf 2012-09-11 matthias #define CPU_TYPE_ANY ((cpu_type_t) -1)
148 678ddfbf 2012-09-11 matthias
149 678ddfbf 2012-09-11 matthias #define CPU_TYPE_VAX ((cpu_type_t) 1)
150 678ddfbf 2012-09-11 matthias /* skip ((cpu_type_t) 2) */
151 678ddfbf 2012-09-11 matthias /* skip ((cpu_type_t) 3) */
152 678ddfbf 2012-09-11 matthias /* skip ((cpu_type_t) 4) */
153 678ddfbf 2012-09-11 matthias /* skip ((cpu_type_t) 5) */
154 678ddfbf 2012-09-11 matthias #define CPU_TYPE_MC680x0 ((cpu_type_t) 6)
155 678ddfbf 2012-09-11 matthias #define CPU_TYPE_X86 ((cpu_type_t) 7)
156 678ddfbf 2012-09-11 matthias #define CPU_TYPE_I386 CPU_TYPE_X86 /* compatibility */
157 678ddfbf 2012-09-11 matthias #define CPU_TYPE_X86_64 (CPU_TYPE_X86 | CPU_ARCH_ABI64)
158 678ddfbf 2012-09-11 matthias
159 678ddfbf 2012-09-11 matthias /* skip CPU_TYPE_MIPS ((cpu_type_t) 8) */
160 678ddfbf 2012-09-11 matthias /* skip ((cpu_type_t) 9) */
161 678ddfbf 2012-09-11 matthias #define CPU_TYPE_MC98000 ((cpu_type_t) 10)
162 1b2e4315 2006-08-10 matthias> #define CPU_TYPE_HPPA ((cpu_type_t) 11)
163 678ddfbf 2012-09-11 matthias #define CPU_TYPE_ARM ((cpu_type_t) 12)
164 678ddfbf 2012-09-11 matthias #define CPU_TYPE_MC88000 ((cpu_type_t) 13)
165 678ddfbf 2012-09-11 matthias #define CPU_TYPE_SPARC ((cpu_type_t) 14)
166 678ddfbf 2012-09-11 matthias #define CPU_TYPE_I860 ((cpu_type_t) 15)
167 678ddfbf 2012-09-11 matthias /* skip CPU_TYPE_ALPHA ((cpu_type_t) 16) */
168 678ddfbf 2012-09-11 matthias /* skip ((cpu_type_t) 17) */
169 678ddfbf 2012-09-11 matthias #define CPU_TYPE_POWERPC ((cpu_type_t) 18)
170 678ddfbf 2012-09-11 matthias #define CPU_TYPE_POWERPC64 (CPU_TYPE_POWERPC | CPU_ARCH_ABI64)
171 678ddfbf 2012-09-11 matthias
172 678ddfbf 2012-09-11 matthias /*
173 678ddfbf 2012-09-11 matthias * Machine subtypes (these are defined here, instead of in a machine
174 678ddfbf 2012-09-11 matthias * dependent directory, so that any program can get all definitions
175 678ddfbf 2012-09-11 matthias * regardless of where is it compiled).
176 678ddfbf 2012-09-11 matthias */
177 678ddfbf 2012-09-11 matthias
178 678ddfbf 2012-09-11 matthias /*
179 678ddfbf 2012-09-11 matthias * Capability bits used in the definition of cpu_subtype.
180 678ddfbf 2012-09-11 matthias */
181 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_MASK 0xff000000 /* mask for feature flags */
182 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_LIB64 0x80000000 /* 64 bit libraries */
183 678ddfbf 2012-09-11 matthias
184 678ddfbf 2012-09-11 matthias
185 678ddfbf 2012-09-11 matthias /*
186 678ddfbf 2012-09-11 matthias * Object files that are hand-crafted to run on any
187 678ddfbf 2012-09-11 matthias * implementation of an architecture are tagged with
188 678ddfbf 2012-09-11 matthias * CPU_SUBTYPE_MULTIPLE. This functions essentially the same as
189 678ddfbf 2012-09-11 matthias * the "ALL" subtype of an architecture except that it allows us
190 678ddfbf 2012-09-11 matthias * to easily find object files that may need to be modified
191 678ddfbf 2012-09-11 matthias * whenever a new implementation of an architecture comes out.
192 678ddfbf 2012-09-11 matthias *
193 678ddfbf 2012-09-11 matthias * It is the responsibility of the implementor to make sure the
194 678ddfbf 2012-09-11 matthias * software handles unsupported implementations elegantly.
195 678ddfbf 2012-09-11 matthias */
196 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_MULTIPLE ((cpu_subtype_t) -1)
197 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_LITTLE_ENDIAN ((cpu_subtype_t) 0)
198 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_BIG_ENDIAN ((cpu_subtype_t) 1)
199 678ddfbf 2012-09-11 matthias
200 678ddfbf 2012-09-11 matthias /*
201 678ddfbf 2012-09-11 matthias * Machine threadtypes.
202 678ddfbf 2012-09-11 matthias * This is none - not defined - for most machine types/subtypes.
203 678ddfbf 2012-09-11 matthias */
204 678ddfbf 2012-09-11 matthias #define CPU_THREADTYPE_NONE ((cpu_threadtype_t) 0)
205 678ddfbf 2012-09-11 matthias
206 678ddfbf 2012-09-11 matthias /*
207 678ddfbf 2012-09-11 matthias * VAX subtypes (these do *not* necessary conform to the actual cpu
208 678ddfbf 2012-09-11 matthias * ID assigned by DEC available via the SID register).
209 678ddfbf 2012-09-11 matthias */
210 678ddfbf 2012-09-11 matthias
211 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_VAX_ALL ((cpu_subtype_t) 0)
212 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_VAX780 ((cpu_subtype_t) 1)
213 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_VAX785 ((cpu_subtype_t) 2)
214 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_VAX750 ((cpu_subtype_t) 3)
215 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_VAX730 ((cpu_subtype_t) 4)
216 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_UVAXI ((cpu_subtype_t) 5)
217 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_UVAXII ((cpu_subtype_t) 6)
218 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_VAX8200 ((cpu_subtype_t) 7)
219 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_VAX8500 ((cpu_subtype_t) 8)
220 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_VAX8600 ((cpu_subtype_t) 9)
221 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_VAX8650 ((cpu_subtype_t) 10)
222 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_VAX8800 ((cpu_subtype_t) 11)
223 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_UVAXIII ((cpu_subtype_t) 12)
224 678ddfbf 2012-09-11 matthias
225 678ddfbf 2012-09-11 matthias /*
226 678ddfbf 2012-09-11 matthias * 680x0 subtypes
227 678ddfbf 2012-09-11 matthias *
228 678ddfbf 2012-09-11 matthias * The subtype definitions here are unusual for historical reasons.
229 678ddfbf 2012-09-11 matthias * NeXT used to consider 68030 code as generic 68000 code. For
230 678ddfbf 2012-09-11 matthias * backwards compatability:
231 678ddfbf 2012-09-11 matthias *
232 678ddfbf 2012-09-11 matthias * CPU_SUBTYPE_MC68030 symbol has been preserved for source code
233 678ddfbf 2012-09-11 matthias * compatability.
234 678ddfbf 2012-09-11 matthias *
235 678ddfbf 2012-09-11 matthias * CPU_SUBTYPE_MC680x0_ALL has been defined to be the same
236 678ddfbf 2012-09-11 matthias * subtype as CPU_SUBTYPE_MC68030 for binary comatability.
237 678ddfbf 2012-09-11 matthias *
238 678ddfbf 2012-09-11 matthias * CPU_SUBTYPE_MC68030_ONLY has been added to allow new object
239 678ddfbf 2012-09-11 matthias * files to be tagged as containing 68030-specific instructions.
240 678ddfbf 2012-09-11 matthias */
241 678ddfbf 2012-09-11 matthias
242 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_MC680x0_ALL ((cpu_subtype_t) 1)
243 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_MC68030 ((cpu_subtype_t) 1) /* compat */
244 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_MC68040 ((cpu_subtype_t) 2)
245 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_MC68030_ONLY ((cpu_subtype_t) 3)
246 678ddfbf 2012-09-11 matthias
247 678ddfbf 2012-09-11 matthias /*
248 678ddfbf 2012-09-11 matthias * I386 subtypes
249 678ddfbf 2012-09-11 matthias */
250 678ddfbf 2012-09-11 matthias
251 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_INTEL(f, m) ((cpu_subtype_t) (f) + ((m) << 4))
252 678ddfbf 2012-09-11 matthias
253 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_I386_ALL CPU_SUBTYPE_INTEL(3, 0)
254 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_386 CPU_SUBTYPE_INTEL(3, 0)
255 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_486 CPU_SUBTYPE_INTEL(4, 0)
256 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_486SX CPU_SUBTYPE_INTEL(4, 8) // 8 << 4 = 128
257 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_586 CPU_SUBTYPE_INTEL(5, 0)
258 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_PENT CPU_SUBTYPE_INTEL(5, 0)
259 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_PENTPRO CPU_SUBTYPE_INTEL(6, 1)
260 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_PENTII_M3 CPU_SUBTYPE_INTEL(6, 3)
261 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_PENTII_M5 CPU_SUBTYPE_INTEL(6, 5)
262 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_CELERON CPU_SUBTYPE_INTEL(7, 6)
263 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_CELERON_MOBILE CPU_SUBTYPE_INTEL(7, 7)
264 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_PENTIUM_3 CPU_SUBTYPE_INTEL(8, 0)
265 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_PENTIUM_3_M CPU_SUBTYPE_INTEL(8, 1)
266 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_PENTIUM_3_XEON CPU_SUBTYPE_INTEL(8, 2)
267 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_PENTIUM_M CPU_SUBTYPE_INTEL(9, 0)
268 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_PENTIUM_4 CPU_SUBTYPE_INTEL(10, 0)
269 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_PENTIUM_4_M CPU_SUBTYPE_INTEL(10, 1)
270 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_ITANIUM CPU_SUBTYPE_INTEL(11, 0)
271 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_ITANIUM_2 CPU_SUBTYPE_INTEL(11, 1)
272 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_XEON CPU_SUBTYPE_INTEL(12, 0)
273 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_XEON_MP CPU_SUBTYPE_INTEL(12, 1)
274 1b2e4315 2006-08-10 matthias>
275 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_INTEL_FAMILY(x) ((x) & 15)
276 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_INTEL_FAMILY_MAX 15
277 678ddfbf 2012-09-11 matthias
278 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_INTEL_MODEL(x) ((x) >> 4)
279 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_INTEL_MODEL_ALL 0
280 678ddfbf 2012-09-11 matthias
281 678ddfbf 2012-09-11 matthias /*
282 678ddfbf 2012-09-11 matthias * X86 subtypes.
283 678ddfbf 2012-09-11 matthias */
284 678ddfbf 2012-09-11 matthias
285 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_X86_ALL ((cpu_subtype_t)3)
286 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_X86_64_ALL ((cpu_subtype_t)3)
287 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_X86_ARCH1 ((cpu_subtype_t)4)
288 678ddfbf 2012-09-11 matthias
289 678ddfbf 2012-09-11 matthias
290 678ddfbf 2012-09-11 matthias #define CPU_THREADTYPE_INTEL_HTT ((cpu_threadtype_t) 1)
291 678ddfbf 2012-09-11 matthias
292 678ddfbf 2012-09-11 matthias /*
293 678ddfbf 2012-09-11 matthias * Mips subtypes.
294 678ddfbf 2012-09-11 matthias */
295 678ddfbf 2012-09-11 matthias
296 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_MIPS_ALL ((cpu_subtype_t) 0)
297 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_MIPS_R2300 ((cpu_subtype_t) 1)
298 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_MIPS_R2600 ((cpu_subtype_t) 2)
299 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_MIPS_R2800 ((cpu_subtype_t) 3)
300 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_MIPS_R2000a ((cpu_subtype_t) 4) /* pmax */
301 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_MIPS_R2000 ((cpu_subtype_t) 5)
302 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_MIPS_R3000a ((cpu_subtype_t) 6) /* 3max */
303 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_MIPS_R3000 ((cpu_subtype_t) 7)
304 678ddfbf 2012-09-11 matthias
305 678ddfbf 2012-09-11 matthias /*
306 678ddfbf 2012-09-11 matthias * MC98000 (PowerPC) subtypes
307 678ddfbf 2012-09-11 matthias */
308 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_MC98000_ALL ((cpu_subtype_t) 0)
309 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_MC98601 ((cpu_subtype_t) 1)
310 678ddfbf 2012-09-11 matthias
311 678ddfbf 2012-09-11 matthias /*
312 678ddfbf 2012-09-11 matthias * HPPA subtypes for Hewlett-Packard HP-PA family of
313 678ddfbf 2012-09-11 matthias * risc processors. Port by NeXT to 700 series.
314 678ddfbf 2012-09-11 matthias */
315 678ddfbf 2012-09-11 matthias
316 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_HPPA_ALL ((cpu_subtype_t) 0)
317 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_HPPA_7100 ((cpu_subtype_t) 0) /* compat */
318 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_HPPA_7100LC ((cpu_subtype_t) 1)
319 678ddfbf 2012-09-11 matthias
320 678ddfbf 2012-09-11 matthias /*
321 678ddfbf 2012-09-11 matthias * MC88000 subtypes.
322 678ddfbf 2012-09-11 matthias */
323 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_MC88000_ALL ((cpu_subtype_t) 0)
324 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_MC88100 ((cpu_subtype_t) 1)
325 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_MC88110 ((cpu_subtype_t) 2)
326 678ddfbf 2012-09-11 matthias
327 678ddfbf 2012-09-11 matthias /*
328 678ddfbf 2012-09-11 matthias * SPARC subtypes
329 678ddfbf 2012-09-11 matthias */
330 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_SPARC_ALL ((cpu_subtype_t) 0)
331 678ddfbf 2012-09-11 matthias
332 678ddfbf 2012-09-11 matthias /*
333 678ddfbf 2012-09-11 matthias * I860 subtypes
334 678ddfbf 2012-09-11 matthias */
335 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_I860_ALL ((cpu_subtype_t) 0)
336 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_I860_860 ((cpu_subtype_t) 1)
337 678ddfbf 2012-09-11 matthias
338 678ddfbf 2012-09-11 matthias /*
339 678ddfbf 2012-09-11 matthias * PowerPC subtypes
340 678ddfbf 2012-09-11 matthias */
341 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_POWERPC_ALL ((cpu_subtype_t) 0)
342 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_POWERPC_601 ((cpu_subtype_t) 1)
343 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_POWERPC_602 ((cpu_subtype_t) 2)
344 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_POWERPC_603 ((cpu_subtype_t) 3)
345 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_POWERPC_603e ((cpu_subtype_t) 4)
346 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_POWERPC_603ev ((cpu_subtype_t) 5)
347 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_POWERPC_604 ((cpu_subtype_t) 6)
348 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_POWERPC_604e ((cpu_subtype_t) 7)
349 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_POWERPC_620 ((cpu_subtype_t) 8)
350 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_POWERPC_750 ((cpu_subtype_t) 9)
351 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_POWERPC_7400 ((cpu_subtype_t) 10)
352 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_POWERPC_7450 ((cpu_subtype_t) 11)
353 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_POWERPC_970 ((cpu_subtype_t) 100)
354 678ddfbf 2012-09-11 matthias
355 678ddfbf 2012-09-11 matthias /*
356 678ddfbf 2012-09-11 matthias * ARM subtypes
357 678ddfbf 2012-09-11 matthias */
358 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_ARM_ALL ((cpu_subtype_t) 0)
359 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_ARM_V4T ((cpu_subtype_t) 5)
360 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_ARM_V6 ((cpu_subtype_t) 6)
361 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_ARM_V5TEJ ((cpu_subtype_t) 7)
362 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_ARM_XSCALE ((cpu_subtype_t) 8)
363 678ddfbf 2012-09-11 matthias #define CPU_SUBTYPE_ARM_V7 ((cpu_subtype_t) 9)
364 678ddfbf 2012-09-11 matthias
365 678ddfbf 2012-09-11 matthias
366 1b2e4315 2006-08-10 matthias> typedef int vm_prot_t;
367 1b2e4315 2006-08-10 matthias> typedef int cpu_type_t;
368 1b2e4315 2006-08-10 matthias> typedef int cpu_subtype_t;
369 1b2e4315 2006-08-10 matthias> typedef int cpu_threadtype_t;
370 1b2e4315 2006-08-10 matthias>
371 678ddfbf 2012-09-11 matthias #define FAT_MAGIC 0xcafebabe
372 678ddfbf 2012-09-11 matthias #define FAT_CIGAM 0xbebafeca
373 678ddfbf 2012-09-11 matthias
374 678ddfbf 2012-09-11 matthias #define MH_MAGIC 0xfeedface
375 678ddfbf 2012-09-11 matthias #define MH_CIGAM 0xcefaedfe
376 678ddfbf 2012-09-11 matthias #define MH_MAGIC_64 0xfeedfacf /* the 64-bit mach magic number */
377 678ddfbf 2012-09-11 matthias #define MH_CIGAM_64 0xcffaedfe /* NXSwapInt(MH_MAGIC_64) */
378 678ddfbf 2012-09-11 matthias
379 1b2e4315 2006-08-10 matthias> struct fat_header {
380 1b2e4315 2006-08-10 matthias> uint32_t magic;
381 1b2e4315 2006-08-10 matthias> uint32_t nfat_arch;
382 1b2e4315 2006-08-10 matthias> };
383 1b2e4315 2006-08-10 matthias>
384 1b2e4315 2006-08-10 matthias> struct fat_arch {
385 1b2e4315 2006-08-10 matthias> cpu_type_t cputype;
386 1b2e4315 2006-08-10 matthias> cpu_subtype_t cpusubtype;
387 1b2e4315 2006-08-10 matthias> uint32_t offset;
388 1b2e4315 2006-08-10 matthias> uint32_t size;
389 1b2e4315 2006-08-10 matthias> uint32_t align;
390 1b2e4315 2006-08-10 matthias> };
391 1b2e4315 2006-08-10 matthias>
392 678ddfbf 2012-09-11 matthias struct mach_header_magic {
393 678ddfbf 2012-09-11 matthias uint32_t magic;
394 678ddfbf 2012-09-11 matthias };
395 678ddfbf 2012-09-11 matthias
396 1b2e4315 2006-08-10 matthias> struct mach_header {
397 1b2e4315 2006-08-10 matthias> uint32_t magic;
398 1b2e4315 2006-08-10 matthias> cpu_type_t cputype;
399 1b2e4315 2006-08-10 matthias> cpu_subtype_t cpusubtype;
400 1b2e4315 2006-08-10 matthias> uint32_t filetype;
401 1b2e4315 2006-08-10 matthias> uint32_t ncmds;
402 1b2e4315 2006-08-10 matthias> uint32_t sizeofcmds;
403 1b2e4315 2006-08-10 matthias> uint32_t flags;
404 1b2e4315 2006-08-10 matthias> };
405 1b2e4315 2006-08-10 matthias>
406 678ddfbf 2012-09-11 matthias struct mach_header_64 {
407 678ddfbf 2012-09-11 matthias uint32_t magic; /* mach magic number identifier */
408 678ddfbf 2012-09-11 matthias cpu_type_t cputype; /* cpu specifier */
409 678ddfbf 2012-09-11 matthias cpu_subtype_t cpusubtype; /* machine specifier */
410 678ddfbf 2012-09-11 matthias uint32_t filetype; /* type of file */
411 678ddfbf 2012-09-11 matthias uint32_t ncmds; /* number of load commands */
412 678ddfbf 2012-09-11 matthias uint32_t sizeofcmds; /* the size of all the load commands */
413 678ddfbf 2012-09-11 matthias uint32_t flags; /* flags */
414 678ddfbf 2012-09-11 matthias uint32_t reserved; /* reserved */
415 678ddfbf 2012-09-11 matthias };
416 678ddfbf 2012-09-11 matthias
417 1b2e4315 2006-08-10 matthias> struct load_command {
418 1b2e4315 2006-08-10 matthias> uint32_t cmd;
419 1b2e4315 2006-08-10 matthias> uint32_t cmdsize;
420 1b2e4315 2006-08-10 matthias> };
421 1b2e4315 2006-08-10 matthias>
422 1b2e4315 2006-08-10 matthias> struct segment_command {
423 1b2e4315 2006-08-10 matthias> uint32_t cmd;
424 1b2e4315 2006-08-10 matthias> uint32_t cmdsize;
425 1b2e4315 2006-08-10 matthias> char segname[16];
426 1b2e4315 2006-08-10 matthias> uint32_t vmaddr;
427 1b2e4315 2006-08-10 matthias> uint32_t vmsize;
428 1b2e4315 2006-08-10 matthias> uint32_t fileoff;
429 1b2e4315 2006-08-10 matthias> uint32_t filesize;
430 1b2e4315 2006-08-10 matthias> vm_prot_t maxprot;
431 1b2e4315 2006-08-10 matthias> vm_prot_t initprot;
432 1b2e4315 2006-08-10 matthias> uint32_t nsects;
433 1b2e4315 2006-08-10 matthias> uint32_t flags;
434 1b2e4315 2006-08-10 matthias> };
435 1b2e4315 2006-08-10 matthias>
436 678ddfbf 2012-09-11 matthias struct segment_command_64 { /* for 64-bit architectures */
437 678ddfbf 2012-09-11 matthias uint32_t cmd; /* LC_SEGMENT_64 */
438 678ddfbf 2012-09-11 matthias uint32_t cmdsize; /* includes sizeof section_64 structs */
439 678ddfbf 2012-09-11 matthias char segname[16]; /* segment name */
440 678ddfbf 2012-09-11 matthias uint64_t vmaddr; /* memory address of this segment */
441 678ddfbf 2012-09-11 matthias uint64_t vmsize; /* memory size of this segment */
442 678ddfbf 2012-09-11 matthias uint64_t fileoff; /* file offset of this segment */
443 678ddfbf 2012-09-11 matthias uint64_t filesize; /* amount to map from the file */
444 678ddfbf 2012-09-11 matthias vm_prot_t maxprot; /* maximum VM protection */
445 678ddfbf 2012-09-11 matthias vm_prot_t initprot; /* initial VM protection */
446 678ddfbf 2012-09-11 matthias uint32_t nsects; /* number of sections in segment */
447 678ddfbf 2012-09-11 matthias uint32_t flags; /* flags */
448 678ddfbf 2012-09-11 matthias };
449 678ddfbf 2012-09-11 matthias
450 1b2e4315 2006-08-10 matthias> struct section {
451 1b2e4315 2006-08-10 matthias> char sectname[16];
452 1b2e4315 2006-08-10 matthias> char segname[16];
453 1b2e4315 2006-08-10 matthias> uint32_t addr;
454 1b2e4315 2006-08-10 matthias> uint32_t size;
455 1b2e4315 2006-08-10 matthias> uint32_t offset;
456 1b2e4315 2006-08-10 matthias> uint32_t align;
457 1b2e4315 2006-08-10 matthias> uint32_t reloff;
458 1b2e4315 2006-08-10 matthias> uint32_t nreloc;
459 1b2e4315 2006-08-10 matthias> uint32_t flags;
460 1b2e4315 2006-08-10 matthias> uint32_t reserved1;
461 1b2e4315 2006-08-10 matthias> uint32_t reserved2;
462 1b2e4315 2006-08-10 matthias> };
463 1b2e4315 2006-08-10 matthias>
464 678ddfbf 2012-09-11 matthias struct section_64 { /* for 64-bit architectures */
465 678ddfbf 2012-09-11 matthias char sectname[16]; /* name of this section */
466 678ddfbf 2012-09-11 matthias char segname[16]; /* segment this section goes in */
467 678ddfbf 2012-09-11 matthias uint64_t addr; /* memory address of this section */
468 678ddfbf 2012-09-11 matthias uint64_t size; /* size in bytes of this section */
469 678ddfbf 2012-09-11 matthias uint32_t offset; /* file offset of this section */
470 678ddfbf 2012-09-11 matthias uint32_t align; /* section alignment (power of 2) */
471 678ddfbf 2012-09-11 matthias uint32_t reloff; /* file offset of relocation entries */
472 678ddfbf 2012-09-11 matthias uint32_t nreloc; /* number of relocation entries */
473 678ddfbf 2012-09-11 matthias uint32_t flags; /* flags (section type and attributes)*/
474 678ddfbf 2012-09-11 matthias uint32_t reserved1; /* reserved (for offset or index) */
475 678ddfbf 2012-09-11 matthias uint32_t reserved2; /* reserved (for count or sizeof) */
476 678ddfbf 2012-09-11 matthias uint32_t reserved3; /* reserved */
477 678ddfbf 2012-09-11 matthias };
478 678ddfbf 2012-09-11 matthias
479 1b2e4315 2006-08-10 matthias> union lc_str {
480 1b2e4315 2006-08-10 matthias> uint32_t offset;
481 1b2e4315 2006-08-10 matthias> #ifndef __LP64__
482 1b2e4315 2006-08-10 matthias> char *ptr;
483 1b2e4315 2006-08-10 matthias> #endif
484 1b2e4315 2006-08-10 matthias> };
485 1b2e4315 2006-08-10 matthias>
486 1b2e4315 2006-08-10 matthias> struct symtab_command {
487 1b2e4315 2006-08-10 matthias> uint32_t cmd;
488 1b2e4315 2006-08-10 matthias> uint32_t cmdsize;
489 1b2e4315 2006-08-10 matthias> uint32_t symoff;
490 1b2e4315 2006-08-10 matthias> uint32_t nsyms;
491 1b2e4315 2006-08-10 matthias> uint32_t stroff;
492 1b2e4315 2006-08-10 matthias> uint32_t strsize;
493 1b2e4315 2006-08-10 matthias> };
494 1b2e4315 2006-08-10 matthias>
495 1b2e4315 2006-08-10 matthias> struct dylib {
496 1b2e4315 2006-08-10 matthias> union lc_str name;
497 1b2e4315 2006-08-10 matthias> uint32_t timestamp;
498 1b2e4315 2006-08-10 matthias> uint32_t current_version;
499 1b2e4315 2006-08-10 matthias> uint32_t compatibility_version;
500 1b2e4315 2006-08-10 matthias> };
501 1b2e4315 2006-08-10 matthias>
502 1b2e4315 2006-08-10 matthias> struct dylib_command {
503 1b2e4315 2006-08-10 matthias> uint32_t cmd;
504 1b2e4315 2006-08-10 matthias> uint32_t cmdsize;
505 1b2e4315 2006-08-10 matthias> struct dylib dylib;
506 1b2e4315 2006-08-10 matthias> };
507 1b2e4315 2006-08-10 matthias>
508 1b2e4315 2006-08-10 matthias> struct dylinker_command {
509 1b2e4315 2006-08-10 matthias> uint32_t cmd;
510 1b2e4315 2006-08-10 matthias> uint32_t cmdsize;
511 1b2e4315 2006-08-10 matthias> union lc_str name;
512 1b2e4315 2006-08-10 matthias> };
513 1b2e4315 2006-08-10 matthias>
514 1b2e4315 2006-08-10 matthias> struct dysymtab_command {
515 1b2e4315 2006-08-10 matthias> uint32_t cmd;
516 1b2e4315 2006-08-10 matthias> uint32_t cmdsize;
517 1b2e4315 2006-08-10 matthias> uint32_t ilocalsym;
518 1b2e4315 2006-08-10 matthias> uint32_t nlocalsym;
519 1b2e4315 2006-08-10 matthias> uint32_t iextdefsym;
520 1b2e4315 2006-08-10 matthias> uint32_t nextdefsym;
521 1b2e4315 2006-08-10 matthias> uint32_t iundefsym;
522 1b2e4315 2006-08-10 matthias> uint32_t nundefsym;
523 1b2e4315 2006-08-10 matthias> uint32_t tocoff;
524 1b2e4315 2006-08-10 matthias> uint32_t ntoc;
525 1b2e4315 2006-08-10 matthias> uint32_t modtaboff;
526 1b2e4315 2006-08-10 matthias> uint32_t nmodtab;
527 1b2e4315 2006-08-10 matthias> uint32_t extrefsymoff;
528 1b2e4315 2006-08-10 matthias> uint32_t nextrefsyms;
529 1b2e4315 2006-08-10 matthias> uint32_t indirectsymoff;
530 1b2e4315 2006-08-10 matthias> uint32_t nindirectsyms;
531 1b2e4315 2006-08-10 matthias> uint32_t extreloff;
532 1b2e4315 2006-08-10 matthias> uint32_t nextrel;
533 1b2e4315 2006-08-10 matthias> uint32_t locreloff;
534 1b2e4315 2006-08-10 matthias> uint32_t nlocrel;
535 1b2e4315 2006-08-10 matthias> };
536 1b2e4315 2006-08-10 matthias>
537 1b2e4315 2006-08-10 matthias> struct dylib_table_of_contents {
538 1b2e4315 2006-08-10 matthias> uint32_t symbol_index;
539 1b2e4315 2006-08-10 matthias> uint32_t module_index;
540 1b2e4315 2006-08-10 matthias> };
541 1b2e4315 2006-08-10 matthias>
542 1b2e4315 2006-08-10 matthias> struct dylib_module {
543 1b2e4315 2006-08-10 matthias> uint32_t module_name;
544 1b2e4315 2006-08-10 matthias> uint32_t iextdefsym;
545 1b2e4315 2006-08-10 matthias> uint32_t nextdefsym;
546 1b2e4315 2006-08-10 matthias> uint32_t irefsym;
547 1b2e4315 2006-08-10 matthias> uint32_t nrefsym;
548 1b2e4315 2006-08-10 matthias> uint32_t ilocalsym;
549 1b2e4315 2006-08-10 matthias> uint32_t nlocalsym;
550 1b2e4315 2006-08-10 matthias> uint32_t iextrel;
551 1b2e4315 2006-08-10 matthias> uint32_t nextrel;
552 1b2e4315 2006-08-10 matthias> uint32_t iinit_iterm;
553 1b2e4315 2006-08-10 matthias> uint32_t ninit_nterm;
554 1b2e4315 2006-08-10 matthias> uint32_t objc_module_info_addr;
555 1b2e4315 2006-08-10 matthias> uint32_t objc_module_info_size;
556 1b2e4315 2006-08-10 matthias> };
557 1b2e4315 2006-08-10 matthias>
558 1b2e4315 2006-08-10 matthias> struct twolevel_hints_command {
559 1b2e4315 2006-08-10 matthias> uint32_t cmd;
560 1b2e4315 2006-08-10 matthias> uint32_t cmdsize;
561 1b2e4315 2006-08-10 matthias> uint32_t offset;
562 1b2e4315 2006-08-10 matthias> uint32_t nhints;
563 1b2e4315 2006-08-10 matthias> };
564 1b2e4315 2006-08-10 matthias>
565 1b2e4315 2006-08-10 matthias>
566 5bb64da4 2006-08-10 matthias> #endif