1 ! Copyright (C) 2010 Erik Charlebois.
2 ! See http:// factorcode.org/license.txt for BSD license.
3 USING: alien.c-types alien.syntax classes.struct kernel literals math
9 TYPEDEF: integer_t cpu_type_t
10 TYPEDEF: integer_t cpu_subtype_t
11 TYPEDEF: integer_t cpu_threadtype_t
13 CONSTANT: VM_PROT_NONE HEX: 00
14 CONSTANT: VM_PROT_READ HEX: 01
15 CONSTANT: VM_PROT_WRITE HEX: 02
16 CONSTANT: VM_PROT_EXECUTE HEX: 04
17 CONSTANT: VM_PROT_DEFAULT HEX: 03
18 CONSTANT: VM_PROT_ALL HEX: 07
19 CONSTANT: VM_PROT_NO_CHANGE HEX: 08
20 CONSTANT: VM_PROT_COPY HEX: 10
21 CONSTANT: VM_PROT_WANTS_COPY HEX: 10
26 { cputype cpu_type_t }
27 { cpusubtype cpu_subtype_t }
30 { sizeofcmds uint32_t }
33 CONSTANT: MH_MAGIC HEX: feedface
34 CONSTANT: MH_CIGAM HEX: cefaedfe
36 STRUCT: mach_header_64
38 { cputype cpu_type_t }
39 { cpusubtype cpu_subtype_t }
42 { sizeofcmds uint32_t }
44 { reserved uint32_t } ;
46 CONSTANT: MH_MAGIC_64 HEX: feedfacf
47 CONSTANT: MH_CIGAM_64 HEX: cffaedfe
49 CONSTANT: MH_OBJECT HEX: 1
50 CONSTANT: MH_EXECUTE HEX: 2
51 CONSTANT: MH_FVMLIB HEX: 3
52 CONSTANT: MH_CORE HEX: 4
53 CONSTANT: MH_PRELOAD HEX: 5
54 CONSTANT: MH_DYLIB HEX: 6
55 CONSTANT: MH_DYLINKER HEX: 7
56 CONSTANT: MH_BUNDLE HEX: 8
57 CONSTANT: MH_DYLIB_STUB HEX: 9
58 CONSTANT: MH_DSYM HEX: a
59 CONSTANT: MH_KEXT_BUNDLE HEX: b
61 CONSTANT: MH_NOUNDEFS HEX: 1
62 CONSTANT: MH_INCRLINK HEX: 2
63 CONSTANT: MH_DYLDLINK HEX: 4
64 CONSTANT: MH_BINDATLOAD HEX: 8
65 CONSTANT: MH_PREBOUND HEX: 10
66 CONSTANT: MH_SPLIT_SEGS HEX: 20
67 CONSTANT: MH_LAZY_INIT HEX: 40
68 CONSTANT: MH_TWOLEVEL HEX: 80
69 CONSTANT: MH_FORCE_FLAT HEX: 100
70 CONSTANT: MH_NOMULTIDEFS HEX: 200
71 CONSTANT: MH_NOFIXPREBINDING HEX: 400
72 CONSTANT: MH_PREBINDABLE HEX: 800
73 CONSTANT: MH_ALLMODSBOUND HEX: 1000
74 CONSTANT: MH_SUBSECTIONS_VIA_SYMBOLS HEX: 2000
75 CONSTANT: MH_CANONICAL HEX: 4000
76 CONSTANT: MH_WEAK_DEFINES HEX: 8000
77 CONSTANT: MH_BINDS_TO_WEAK HEX: 10000
78 CONSTANT: MH_ALLOW_STACK_EXECUTION HEX: 20000
79 CONSTANT: MH_DEAD_STRIPPABLE_DYLIB HEX: 400000
80 CONSTANT: MH_ROOT_SAFE HEX: 40000
81 CONSTANT: MH_SETUID_SAFE HEX: 80000
82 CONSTANT: MH_NO_REEXPORTED_DYLIBS HEX: 100000
83 CONSTANT: MH_PIE HEX: 200000
87 { cmdsize uint32_t } ;
89 CONSTANT: LC_REQ_DYLD HEX: 80000000
91 CONSTANT: LC_SEGMENT HEX: 1
92 CONSTANT: LC_SYMTAB HEX: 2
93 CONSTANT: LC_SYMSEG HEX: 3
94 CONSTANT: LC_THREAD HEX: 4
95 CONSTANT: LC_UNIXTHREAD HEX: 5
96 CONSTANT: LC_LOADFVMLIB HEX: 6
97 CONSTANT: LC_IDFVMLIB HEX: 7
98 CONSTANT: LC_IDENT HEX: 8
99 CONSTANT: LC_FVMFILE HEX: 9
100 CONSTANT: LC_PREPAGE HEX: a
101 CONSTANT: LC_DYSYMTAB HEX: b
102 CONSTANT: LC_LOAD_DYLIB HEX: c
103 CONSTANT: LC_ID_DYLIB HEX: d
104 CONSTANT: LC_LOAD_DYLINKER HEX: e
105 CONSTANT: LC_ID_DYLINKER HEX: f
106 CONSTANT: LC_PREBOUND_DYLIB HEX: 10
107 CONSTANT: LC_ROUTINES HEX: 11
108 CONSTANT: LC_SUB_FRAMEWORK HEX: 12
109 CONSTANT: LC_SUB_UMBRELLA HEX: 13
110 CONSTANT: LC_SUB_CLIENT HEX: 14
111 CONSTANT: LC_SUB_LIBRARY HEX: 15
112 CONSTANT: LC_TWOLEVEL_HINTS HEX: 16
113 CONSTANT: LC_PREBIND_CKSUM HEX: 17
114 CONSTANT: LC_LOAD_WEAK_DYLIB HEX: 80000018
115 CONSTANT: LC_SEGMENT_64 HEX: 19
116 CONSTANT: LC_ROUTINES_64 HEX: 1a
117 CONSTANT: LC_UUID HEX: 1b
118 CONSTANT: LC_RPATH HEX: 8000001c
119 CONSTANT: LC_CODE_SIGNATURE HEX: 1d
120 CONSTANT: LC_SEGMENT_SPLIT_INFO HEX: 1e
121 CONSTANT: LC_REEXPORT_DYLIB HEX: 8000001f
122 CONSTANT: LC_LAZY_LOAD_DYLIB HEX: 20
123 CONSTANT: LC_ENCRYPTION_INFO HEX: 21
124 CONSTANT: LC_DYLD_INFO HEX: 22
125 CONSTANT: LC_DYLD_INFO_ONLY HEX: 80000022
131 STRUCT: segment_command
138 { filesize uint32_t }
139 { maxprot vm_prot_t }
140 { initprot vm_prot_t }
144 STRUCT: segment_command_64
151 { filesize uint64_t }
152 { maxprot vm_prot_t }
153 { initprot vm_prot_t }
157 CONSTANT: SG_HIGHVM HEX: 1
158 CONSTANT: SG_FVMLIB HEX: 2
159 CONSTANT: SG_NORELOC HEX: 4
160 CONSTANT: SG_PROTECTED_VERSION_1 HEX: 8
163 { sectname char[16] }
172 { reserved1 uint32_t }
173 { reserved2 uint32_t } ;
176 { sectname char[16] }
185 { reserved1 uint32_t }
186 { reserved2 uint32_t }
187 { reserved3 uint32_t } ;
189 CONSTANT: SECTION_TYPE HEX: 000000ff
190 CONSTANT: SECTION_ATTRIBUTES HEX: ffffff00
192 CONSTANT: S_REGULAR HEX: 0
193 CONSTANT: S_ZEROFILL HEX: 1
194 CONSTANT: S_CSTRING_LITERALS HEX: 2
195 CONSTANT: S_4BYTE_LITERALS HEX: 3
196 CONSTANT: S_8BYTE_LITERALS HEX: 4
197 CONSTANT: S_LITERAL_POINTERS HEX: 5
198 CONSTANT: S_NON_LAZY_SYMBOL_POINTERS HEX: 6
199 CONSTANT: S_LAZY_SYMBOL_POINTERS HEX: 7
200 CONSTANT: S_SYMBOL_STUBS HEX: 8
201 CONSTANT: S_MOD_INIT_FUNC_POINTERS HEX: 9
202 CONSTANT: S_MOD_TERM_FUNC_POINTERS HEX: a
203 CONSTANT: S_COALESCED HEX: b
204 CONSTANT: S_GB_ZEROFILL HEX: c
205 CONSTANT: S_INTERPOSING HEX: d
206 CONSTANT: S_16BYTE_LITERALS HEX: e
207 CONSTANT: S_DTRACE_DOF HEX: f
208 CONSTANT: S_LAZY_DYLIB_SYMBOL_POINTERS HEX: 10
210 CONSTANT: SECTION_ATTRIBUTES_USR HEX: ff000000
211 CONSTANT: S_ATTR_PURE_INSTRUCTIONS HEX: 80000000
212 CONSTANT: S_ATTR_NO_TOC HEX: 40000000
213 CONSTANT: S_ATTR_STRIP_STATIC_SYMS HEX: 20000000
214 CONSTANT: S_ATTR_NO_DEAD_STRIP HEX: 10000000
215 CONSTANT: S_ATTR_LIVE_SUPPORT HEX: 08000000
216 CONSTANT: S_ATTR_SELF_MODIFYING_CODE HEX: 04000000
217 CONSTANT: S_ATTR_DEBUG HEX: 02000000
218 CONSTANT: SECTION_ATTRIBUTES_SYS HEX: 00ffff00
219 CONSTANT: S_ATTR_SOME_INSTRUCTIONS HEX: 00000400
220 CONSTANT: S_ATTR_EXT_RELOC HEX: 00000200
221 CONSTANT: S_ATTR_LOC_RELOC HEX: 00000100
223 CONSTANT: SEG_PAGEZERO "__PAGEZERO"
224 CONSTANT: SEG_TEXT "__TEXT"
225 CONSTANT: SECT_TEXT "__text"
226 CONSTANT: SECT_FVMLIB_INIT0 "__fvmlib_init0"
227 CONSTANT: SECT_FVMLIB_INIT1 "__fvmlib_init1"
228 CONSTANT: SEG_DATA "__DATA"
229 CONSTANT: SECT_DATA "__data"
230 CONSTANT: SECT_BSS "__bss"
231 CONSTANT: SECT_COMMON "__common"
232 CONSTANT: SEG_OBJC "__OBJC"
233 CONSTANT: SECT_OBJC_SYMBOLS "__symbol_table"
234 CONSTANT: SECT_OBJC_MODULES "__module_info"
235 CONSTANT: SECT_OBJC_STRINGS "__selector_strs"
236 CONSTANT: SECT_OBJC_REFS "__selector_refs"
237 CONSTANT: SEG_ICON "__ICON"
238 CONSTANT: SECT_ICON_HEADER "__header"
239 CONSTANT: SECT_ICON_TIFF "__tiff"
240 CONSTANT: SEG_LINKEDIT "__LINKEDIT"
241 CONSTANT: SEG_UNIXSTACK "__UNIXSTACK"
242 CONSTANT: SEG_IMPORT "__IMPORT"
246 { minor_version uint32_t }
247 { header_addr uint32_t } ;
249 STRUCT: fvmlib_command
256 { timestamp uint32_t }
257 { current_version uint32_t }
258 { compatibility_version uint32_t } ;
260 STRUCT: dylib_command
265 STRUCT: sub_framework_command
268 { umbrella lc_str } ;
270 STRUCT: sub_client_command
275 STRUCT: sub_umbrella_command
278 { sub_umbrella lc_str } ;
280 STRUCT: sub_library_command
283 { sub_library lc_str } ;
285 STRUCT: prebound_dylib_command
289 { nmodules uint32_t }
290 { linked_modules lc_str } ;
292 STRUCT: dylinker_command
297 STRUCT: thread_command
299 { cmdsize uint32_t } ;
301 STRUCT: routines_command
304 { init_address uint32_t }
305 { init_module uint32_t }
306 { reserved1 uint32_t }
307 { reserved2 uint32_t }
308 { reserved3 uint32_t }
309 { reserved4 uint32_t }
310 { reserved5 uint32_t }
311 { reserved6 uint32_t } ;
313 STRUCT: routines_command_64
316 { init_address uint64_t }
317 { init_module uint64_t }
318 { reserved1 uint64_t }
319 { reserved2 uint64_t }
320 { reserved3 uint64_t }
321 { reserved4 uint64_t }
322 { reserved5 uint64_t }
323 { reserved6 uint64_t } ;
325 STRUCT: symtab_command
331 { strsize uint32_t } ;
333 STRUCT: dysymtab_command
336 { ilocalsym uint32_t }
337 { nlocalsym uint32_t }
338 { iextdefsym uint32_t }
339 { nextdefsym uint32_t }
340 { iundefsym uint32_t }
341 { nundefsym uint32_t }
344 { modtaboff uint32_t }
346 { extrefsymoff uint32_t }
347 { nextrefsyms uint32_t }
348 { indirectsymoff uint32_t }
349 { nindirectsyms uint32_t }
350 { extreloff uint32_t }
352 { locreloff uint32_t }
353 { nlocrel uint32_t } ;
355 CONSTANT: INDIRECT_SYMBOL_LOCAL HEX: 80000000
356 CONSTANT: INDIRECT_SYMBOL_ABS HEX: 40000000
358 STRUCT: dylib_table_of_contents
359 { symbol_index uint32_t }
360 { module_index uint32_t } ;
363 { module_name uint32_t }
364 { iextdefsym uint32_t }
365 { nextdefsym uint32_t }
368 { ilocalsym uint32_t }
369 { nlocalsym uint32_t }
372 { iinit_iterm uint32_t }
373 { ninit_nterm uint32_t }
374 { objc_module_info_addr uint32_t }
375 { objc_module_info_size uint32_t } ;
377 STRUCT: dylib_module_64
378 { module_name uint32_t }
379 { iextdefsym uint32_t }
380 { nextdefsym uint32_t }
383 { ilocalsym uint32_t }
384 { nlocalsym uint32_t }
387 { iinit_iterm uint32_t }
388 { ninit_nterm uint32_t }
389 { objc_module_info_size uint32_t }
390 { objc_module_info_addr uint64_t } ;
392 STRUCT: dylib_reference
393 { isym_flags uint32_t } ;
395 STRUCT: twolevel_hints_command
399 { nhints uint32_t } ;
401 STRUCT: twolevel_hint
402 { isub_image_itoc uint32_t } ;
404 STRUCT: prebind_cksum_command
412 { uuid uint8_t[16] } ;
414 STRUCT: rpath_command
419 STRUCT: linkedit_data_command
423 { datasize uint32_t } ;
425 STRUCT: encryption_info_command
428 { cryptoff uint32_t }
429 { cryptsize uint32_t }
430 { cryptid uint32_t } ;
432 STRUCT: dyld_info_command
435 { rebase_off uint32_t }
436 { rebase_size uint32_t }
437 { bind_off uint32_t }
438 { bind_size uint32_t }
439 { weak_bind_off uint32_t }
440 { weak_bind_size uint32_t }
441 { lazy_bind_off uint32_t }
442 { lazy_bind_size uint32_t }
443 { export_off uint32_t }
444 { export_size uint32_t } ;
446 CONSTANT: REBASE_TYPE_POINTER 1
447 CONSTANT: REBASE_TYPE_TEXT_ABSOLUTE32 2
448 CONSTANT: REBASE_TYPE_TEXT_PCREL32 3
450 CONSTANT: REBASE_OPCODE_MASK HEX: F0
451 CONSTANT: REBASE_IMMEDIATE_MASK HEX: 0F
452 CONSTANT: REBASE_OPCODE_DONE HEX: 00
453 CONSTANT: REBASE_OPCODE_SET_TYPE_IMM HEX: 10
454 CONSTANT: REBASE_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB HEX: 20
455 CONSTANT: REBASE_OPCODE_ADD_ADDR_ULEB HEX: 30
456 CONSTANT: REBASE_OPCODE_ADD_ADDR_IMM_SCALED HEX: 40
457 CONSTANT: REBASE_OPCODE_DO_REBASE_IMM_TIMES HEX: 50
458 CONSTANT: REBASE_OPCODE_DO_REBASE_ULEB_TIMES HEX: 60
459 CONSTANT: REBASE_OPCODE_DO_REBASE_ADD_ADDR_ULEB HEX: 70
460 CONSTANT: REBASE_OPCODE_DO_REBASE_ULEB_TIMES_SKIPPING_ULEB HEX: 80
462 CONSTANT: BIND_TYPE_POINTER 1
463 CONSTANT: BIND_TYPE_TEXT_ABSOLUTE32 2
464 CONSTANT: BIND_TYPE_TEXT_PCREL32 3
466 CONSTANT: BIND_SPECIAL_DYLIB_SELF 0
467 CONSTANT: BIND_SPECIAL_DYLIB_MAIN_EXECUTABLE -1
468 CONSTANT: BIND_SPECIAL_DYLIB_FLAT_LOOKUP -2
470 CONSTANT: BIND_SYMBOL_FLAGS_WEAK_IMPORT HEX: 1
471 CONSTANT: BIND_SYMBOL_FLAGS_NON_WEAK_DEFINITION HEX: 8
473 CONSTANT: BIND_OPCODE_MASK HEX: F0
474 CONSTANT: BIND_IMMEDIATE_MASK HEX: 0F
475 CONSTANT: BIND_OPCODE_DONE HEX: 00
476 CONSTANT: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM HEX: 10
477 CONSTANT: BIND_OPCODE_SET_DYLIB_ORDINAL_ULEB HEX: 20
478 CONSTANT: BIND_OPCODE_SET_DYLIB_SPECIAL_IMM HEX: 30
479 CONSTANT: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM HEX: 40
480 CONSTANT: BIND_OPCODE_SET_TYPE_IMM HEX: 50
481 CONSTANT: BIND_OPCODE_SET_ADDEND_SLEB HEX: 60
482 CONSTANT: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB HEX: 70
483 CONSTANT: BIND_OPCODE_ADD_ADDR_ULEB HEX: 80
484 CONSTANT: BIND_OPCODE_DO_BIND HEX: 90
485 CONSTANT: BIND_OPCODE_DO_BIND_ADD_ADDR_ULEB HEX: A0
486 CONSTANT: BIND_OPCODE_DO_BIND_ADD_ADDR_IMM_SCALED HEX: B0
487 CONSTANT: BIND_OPCODE_DO_BIND_ULEB_TIMES_SKIPPING_ULEB HEX: C0
489 CONSTANT: EXPORT_SYMBOL_FLAGS_KIND_MASK HEX: 03
490 CONSTANT: EXPORT_SYMBOL_FLAGS_KIND_REGULAR HEX: 00
491 CONSTANT: EXPORT_SYMBOL_FLAGS_KIND_THREAD_LOCAL HEX: 01
492 CONSTANT: EXPORT_SYMBOL_FLAGS_WEAK_DEFINITION HEX: 04
493 CONSTANT: EXPORT_SYMBOL_FLAGS_INDIRECT_DEFINITION HEX: 08
494 CONSTANT: EXPORT_SYMBOL_FLAGS_HAS_SPECIALIZATIONS HEX: 10
496 STRUCT: symseg_command
502 STRUCT: ident_command
504 { cmdsize uint32_t } ;
506 STRUCT: fvmfile_command
510 { header_addr uint32_t } ;
513 CONSTANT: CPU_STATE_MAX 4
514 CONSTANT: CPU_STATE_USER 0
515 CONSTANT: CPU_STATE_SYSTEM 1
516 CONSTANT: CPU_STATE_IDLE 2
517 CONSTANT: CPU_STATE_NICE 3
519 CONSTANT: CPU_ARCH_MASK HEX: ff000000
520 CONSTANT: CPU_ARCH_ABI64 HEX: 01000000
522 CONSTANT: CPU_TYPE_ANY -1
523 CONSTANT: CPU_TYPE_VAX 1
524 CONSTANT: CPU_TYPE_MC680x0 6
525 CONSTANT: CPU_TYPE_X86 7
526 CONSTANT: CPU_TYPE_I386 $ CPU_TYPE_X86
527 CONSTANT: CPU_TYPE_X86_64 $[ CPU_TYPE_X86 CPU_ARCH_ABI64 bitor ]
528 CONSTANT: CPU_TYPE_MC98000 10
529 CONSTANT: CPU_TYPE_HPPA 11
530 CONSTANT: CPU_TYPE_ARM 12
531 CONSTANT: CPU_TYPE_MC88000 13
532 CONSTANT: CPU_TYPE_SPARC 14
533 CONSTANT: CPU_TYPE_I860 15
534 CONSTANT: CPU_TYPE_POWERPC 18
535 CONSTANT: CPU_TYPE_POWERPC64 $[ $ CPU_TYPE_POWERPC CPU_ARCH_ABI64 bitor ]
537 CONSTANT: CPU_SUBTYPE_MASK HEX: ff000000
538 CONSTANT: CPU_SUBTYPE_LIB64 HEX: 80000000
540 CONSTANT: CPU_SUBTYPE_MULTIPLE -1
541 CONSTANT: CPU_SUBTYPE_LITTLE_ENDIAN 0
542 CONSTANT: CPU_SUBTYPE_BIG_ENDIAN 1
544 CONSTANT: CPU_THREADTYPE_NONE 0
546 CONSTANT: CPU_SUBTYPE_VAX_ALL 0
547 CONSTANT: CPU_SUBTYPE_VAX780 1
548 CONSTANT: CPU_SUBTYPE_VAX785 2
549 CONSTANT: CPU_SUBTYPE_VAX750 3
550 CONSTANT: CPU_SUBTYPE_VAX730 4
551 CONSTANT: CPU_SUBTYPE_UVAXI 5
552 CONSTANT: CPU_SUBTYPE_UVAXII 6
553 CONSTANT: CPU_SUBTYPE_VAX8200 7
554 CONSTANT: CPU_SUBTYPE_VAX8500 8
555 CONSTANT: CPU_SUBTYPE_VAX8600 9
556 CONSTANT: CPU_SUBTYPE_VAX8650 10
557 CONSTANT: CPU_SUBTYPE_VAX8800 11
558 CONSTANT: CPU_SUBTYPE_UVAXIII 12
560 CONSTANT: CPU_SUBTYPE_MC680x0_ALL 1
561 CONSTANT: CPU_SUBTYPE_MC68030 1
562 CONSTANT: CPU_SUBTYPE_MC68040 2
563 CONSTANT: CPU_SUBTYPE_MC68030_ONLY 3
565 : CPU_SUBTYPE_INTEL ( f m -- subtype ) 4 shift + ; inline
567 CONSTANT: CPU_SUBTYPE_I386_ALL 3
568 CONSTANT: CPU_SUBTYPE_386 3
569 CONSTANT: CPU_SUBTYPE_486 4
570 CONSTANT: CPU_SUBTYPE_486SX 132
571 CONSTANT: CPU_SUBTYPE_586 5
572 CONSTANT: CPU_SUBTYPE_PENT 5
573 CONSTANT: CPU_SUBTYPE_PENTPRO 22
574 CONSTANT: CPU_SUBTYPE_PENTII_M3 54
575 CONSTANT: CPU_SUBTYPE_PENTII_M5 86
576 CONSTANT: CPU_SUBTYPE_CELERON 103
577 CONSTANT: CPU_SUBTYPE_CELERON_MOBILE 119
578 CONSTANT: CPU_SUBTYPE_PENTIUM_3 8
579 CONSTANT: CPU_SUBTYPE_PENTIUM_3_M 24
580 CONSTANT: CPU_SUBTYPE_PENTIUM_3_XEON 40
581 CONSTANT: CPU_SUBTYPE_PENTIUM_M 9
582 CONSTANT: CPU_SUBTYPE_PENTIUM_4 10
583 CONSTANT: CPU_SUBTYPE_PENTIUM_4_M 26
584 CONSTANT: CPU_SUBTYPE_ITANIUM 11
585 CONSTANT: CPU_SUBTYPE_ITANIUM_2 27
586 CONSTANT: CPU_SUBTYPE_XEON 12
587 CONSTANT: CPU_SUBTYPE_XEON_MP 28
589 : CPU_SUBTYPE_INTEL_FAMILY ( x -- family ) 15 bitand ; inline
591 CONSTANT: CPU_SUBTYPE_INTEL_FAMILY_MAX 15
593 : CPU_SUBTYPE_INTEL_MODEL ( x -- model ) -4 shift ; inline
595 CONSTANT: CPU_SUBTYPE_INTEL_MODEL_ALL 0
596 CONSTANT: CPU_SUBTYPE_X86_ALL 3
597 CONSTANT: CPU_SUBTYPE_X86_64_ALL 3
598 CONSTANT: CPU_SUBTYPE_X86_ARCH1 4
599 CONSTANT: CPU_THREADTYPE_INTEL_HTT 1
601 CONSTANT: CPU_SUBTYPE_MIPS_ALL 0
602 CONSTANT: CPU_SUBTYPE_MIPS_R2300 1
603 CONSTANT: CPU_SUBTYPE_MIPS_R2600 2
604 CONSTANT: CPU_SUBTYPE_MIPS_R2800 3
605 CONSTANT: CPU_SUBTYPE_MIPS_R2000a 4
606 CONSTANT: CPU_SUBTYPE_MIPS_R2000 5
607 CONSTANT: CPU_SUBTYPE_MIPS_R3000a 6
608 CONSTANT: CPU_SUBTYPE_MIPS_R3000 7
610 CONSTANT: CPU_SUBTYPE_MC98000_ALL 0
611 CONSTANT: CPU_SUBTYPE_MC98601 1
613 CONSTANT: CPU_SUBTYPE_HPPA_ALL 0
614 CONSTANT: CPU_SUBTYPE_HPPA_7100 0
615 CONSTANT: CPU_SUBTYPE_HPPA_7100LC 1
617 CONSTANT: CPU_SUBTYPE_MC88000_ALL 0
618 CONSTANT: CPU_SUBTYPE_MC88100 1
619 CONSTANT: CPU_SUBTYPE_MC88110 2
621 CONSTANT: CPU_SUBTYPE_SPARC_ALL 0
623 CONSTANT: CPU_SUBTYPE_I860_ALL 0
624 CONSTANT: CPU_SUBTYPE_I860_860 1
626 CONSTANT: CPU_SUBTYPE_POWERPC_ALL 0
627 CONSTANT: CPU_SUBTYPE_POWERPC_601 1
628 CONSTANT: CPU_SUBTYPE_POWERPC_602 2
629 CONSTANT: CPU_SUBTYPE_POWERPC_603 3
630 CONSTANT: CPU_SUBTYPE_POWERPC_603e 4
631 CONSTANT: CPU_SUBTYPE_POWERPC_603ev 5
632 CONSTANT: CPU_SUBTYPE_POWERPC_604 6
633 CONSTANT: CPU_SUBTYPE_POWERPC_604e 7
634 CONSTANT: CPU_SUBTYPE_POWERPC_620 8
635 CONSTANT: CPU_SUBTYPE_POWERPC_750 9
636 CONSTANT: CPU_SUBTYPE_POWERPC_7400 10
637 CONSTANT: CPU_SUBTYPE_POWERPC_7450 11
638 CONSTANT: CPU_SUBTYPE_POWERPC_970 100
640 CONSTANT: CPU_SUBTYPE_ARM_ALL 0
641 CONSTANT: CPU_SUBTYPE_ARM_V4T 5
642 CONSTANT: CPU_SUBTYPE_ARM_V6 6
643 CONSTANT: CPU_SUBTYPE_ARM_V5TEJ 7
644 CONSTANT: CPU_SUBTYPE_ARM_XSCALE 8
645 CONSTANT: CPU_SUBTYPE_ARM_V7 9
647 CONSTANT: CPUFAMILY_UNKNOWN 0
648 CONSTANT: CPUFAMILY_POWERPC_G3 HEX: cee41549
649 CONSTANT: CPUFAMILY_POWERPC_G4 HEX: 77c184ae
650 CONSTANT: CPUFAMILY_POWERPC_G5 HEX: ed76d8aa
651 CONSTANT: CPUFAMILY_INTEL_6_13 HEX: aa33392b
652 CONSTANT: CPUFAMILY_INTEL_6_14 HEX: 73d67300
653 CONSTANT: CPUFAMILY_INTEL_6_15 HEX: 426f69ef
654 CONSTANT: CPUFAMILY_INTEL_6_23 HEX: 78ea4fbc
655 CONSTANT: CPUFAMILY_INTEL_6_26 HEX: 6b5a4cd2
656 CONSTANT: CPUFAMILY_ARM_9 HEX: e73283ae
657 CONSTANT: CPUFAMILY_ARM_11 HEX: 8ff620d8
658 CONSTANT: CPUFAMILY_ARM_XSCALE HEX: 53b005f5
659 CONSTANT: CPUFAMILY_ARM_13 HEX: 0cc90e64
661 CONSTANT: CPUFAMILY_INTEL_YONAH $ CPUFAMILY_INTEL_6_14
662 CONSTANT: CPUFAMILY_INTEL_MEROM $ CPUFAMILY_INTEL_6_15
663 CONSTANT: CPUFAMILY_INTEL_PENRYN $ CPUFAMILY_INTEL_6_23
664 CONSTANT: CPUFAMILY_INTEL_NEHALEM $ CPUFAMILY_INTEL_6_26
666 CONSTANT: CPUFAMILY_INTEL_CORE $ CPUFAMILY_INTEL_6_14
667 CONSTANT: CPUFAMILY_INTEL_CORE2 $ CPUFAMILY_INTEL_6_15
670 CONSTANT: FAT_MAGIC HEX: cafebabe
671 CONSTANT: FAT_CIGAM HEX: bebafeca
675 { nfat_arch uint32_t } ;
678 { cputype cpu_type_t }
679 { cpusubtype cpu_subtype_t }
690 { n_value uint32_t } ;
697 { n_value uint64_t } ;
699 CONSTANT: N_STAB HEX: e0
700 CONSTANT: N_PEXT HEX: 10
701 CONSTANT: N_TYPE HEX: 0e
702 CONSTANT: N_EXT HEX: 01
704 CONSTANT: N_UNDF HEX: 0
705 CONSTANT: N_ABS HEX: 2
706 CONSTANT: N_SECT HEX: e
707 CONSTANT: N_PBUD HEX: c
708 CONSTANT: N_INDR HEX: a
711 CONSTANT: MAX_SECT 255
713 : GET_COMM_ALIGN ( n_desc -- align )
714 -8 shift HEX: 0f bitand ; inline
716 : SET_COMM_ALIGN ( n_desc align -- n_desc )
718 [ HEX: 000f bitand 8 shift ] bi* bitor ; inline
720 CONSTANT: REFERENCE_TYPE 7
721 CONSTANT: REFERENCE_FLAG_UNDEFINED_NON_LAZY 0
722 CONSTANT: REFERENCE_FLAG_UNDEFINED_LAZY 1
723 CONSTANT: REFERENCE_FLAG_DEFINED 2
724 CONSTANT: REFERENCE_FLAG_PRIVATE_DEFINED 3
725 CONSTANT: REFERENCE_FLAG_PRIVATE_UNDEFINED_NON_LAZY 4
726 CONSTANT: REFERENCE_FLAG_PRIVATE_UNDEFINED_LAZY 5
728 CONSTANT: REFERENCED_DYNAMICALLY HEX: 0010
730 : GET_LIBRARY_ORDINAL ( n_desc -- ordinal )
731 -8 shift HEX: ff bitand ; inline
733 : SET_LIBRARY_ORDINAL ( n_desc ordinal -- n_desc )
735 [ HEX: 00ff bitand 8 shift ] bi* bitor ; inline
737 CONSTANT: SELF_LIBRARY_ORDINAL HEX: 0
738 CONSTANT: MAX_LIBRARY_ORDINAL HEX: fd
739 CONSTANT: DYNAMIC_LOOKUP_ORDINAL HEX: fe
740 CONSTANT: EXECUTABLE_ORDINAL HEX: ff
742 CONSTANT: N_NO_DEAD_STRIP HEX: 0020
743 CONSTANT: N_DESC_DISCARDED HEX: 0020
744 CONSTANT: N_WEAK_REF HEX: 0040
745 CONSTANT: N_WEAK_DEF HEX: 0080
746 CONSTANT: N_REF_TO_WEAK HEX: 0080
747 CONSTANT: N_ARM_THUMB_DEF HEX: 0008
750 CONSTANT: SYMDEF "__.SYMDEF"
751 CONSTANT: SYMDEF_SORTED "__.SYMDEF SORTED"
754 { ran_strx uint32_t }
755 { ran_off uint32_t } ;
758 STRUCT: relocation_info
759 { r_address int32_t }
760 { r_symbolnum_pcrel_length_extern_type uint32_t } ;
763 CONSTANT: R_SCATTERED HEX: 80000000
765 STRUCT: scattered_relocation_info_big_endian
766 { r_scattered_pcrel_length_type_address uint32_t }
767 { r_value int32_t } ;
769 STRUCT: scattered_relocation_info_little_endian
770 { r_address_type_length_pcrel_scattered uint32_t }
771 { r_value int32_t } ;
773 C-ENUM: reloc_type_generic
774 GENERIC_RELOC_VANILLA
776 GENERIC_RELOC_SECTDIFF
777 GENERIC_RELOC_PB_LA_PTR
778 GENERIC_RELOC_LOCAL_SECTDIFF ;
780 C-ENUM: reloc_type_x86_64
781 X86_64_RELOC_UNSIGNED
784 X86_64_RELOC_GOT_LOAD
786 X86_64_RELOC_SUBTRACTOR
787 X86_64_RELOC_SIGNED_1
788 X86_64_RELOC_SIGNED_2
789 X86_64_RELOC_SIGNED_4 ;
791 C-ENUM: reloc_type_ppc
802 PPC_RELOC_HI16_SECTDIFF
803 PPC_RELOC_LO16_SECTDIFF
804 PPC_RELOC_HA16_SECTDIFF
806 PPC_RELOC_LO14_SECTDIFF
807 PPC_RELOC_LOCAL_SECTDIFF ;