Skip to content

Commit

Permalink
macho: update mach-o/loader.h
Browse files Browse the repository at this point in the history
  • Loading branch information
mrjbq7 committed Feb 4, 2024
1 parent b54f1e1 commit 92b6c51
Showing 1 changed file with 117 additions and 43 deletions.
160 changes: 117 additions & 43 deletions extra/macho/macho.factor
Expand Up @@ -61,6 +61,9 @@ CONSTANT: MH_BUNDLE 0x8
CONSTANT: MH_DYLIB_STUB 0x9
CONSTANT: MH_DSYM 0xa
CONSTANT: MH_KEXT_BUNDLE 0xb
CONSTANT: MH_FILESET 0xc
CONSTANT: MH_GPU_EXECUTE 0xd
CONSTANT: MH_GPU_DYLIB 0xe

CONSTANT: MH_NOUNDEFS 0x1
CONSTANT: MH_INCRLINK 0x2
Expand All @@ -80,62 +83,79 @@ CONSTANT: MH_CANONICAL 0x4000
CONSTANT: MH_WEAK_DEFINES 0x8000
CONSTANT: MH_BINDS_TO_WEAK 0x10000
CONSTANT: MH_ALLOW_STACK_EXECUTION 0x20000
CONSTANT: MH_DEAD_STRIPPABLE_DYLIB 0x400000
CONSTANT: MH_ROOT_SAFE 0x40000
CONSTANT: MH_SETUID_SAFE 0x80000
CONSTANT: MH_NO_REEXPORTED_DYLIBS 0x100000
CONSTANT: MH_PIE 0x200000
CONSTANT: MH_DEAD_STRIPPABLE_DYLIB 0x400000
CONSTANT: MH_HAS_TLV_DESCRIPTORS 0x800000
CONSTANT: MH_NO_HEAP_EXECUTION 0x1000000
CONSTANT: MH_APP_EXTENSION_SAFE 0x2000000
CONSTANT: MH_NLIST_OUTOFSYNC_WITH_DYLDINFO 0x4000000
CONSTANT: MH_SIM_SUPPORT 0x8000000
CONSTANT: MH_DYLIB_IN_CACHE 0x80000000

STRUCT: load_command
{ cmd uint }
{ cmdsize uint } ;

CONSTANT: LC_REQ_DYLD 0x80000000

CONSTANT: LC_SEGMENT 0x1
CONSTANT: LC_SYMTAB 0x2
CONSTANT: LC_SYMSEG 0x3
CONSTANT: LC_THREAD 0x4
CONSTANT: LC_UNIXTHREAD 0x5
CONSTANT: LC_LOADFVMLIB 0x6
CONSTANT: LC_IDFVMLIB 0x7
CONSTANT: LC_IDENT 0x8
CONSTANT: LC_FVMFILE 0x9
CONSTANT: LC_PREPAGE 0xa
CONSTANT: LC_DYSYMTAB 0xb
CONSTANT: LC_LOAD_DYLIB 0xc
CONSTANT: LC_ID_DYLIB 0xd
CONSTANT: LC_LOAD_DYLINKER 0xe
CONSTANT: LC_ID_DYLINKER 0xf
CONSTANT: LC_PREBOUND_DYLIB 0x10
CONSTANT: LC_ROUTINES 0x11
CONSTANT: LC_SUB_FRAMEWORK 0x12
CONSTANT: LC_SUB_UMBRELLA 0x13
CONSTANT: LC_SUB_CLIENT 0x14
CONSTANT: LC_SUB_LIBRARY 0x15
CONSTANT: LC_TWOLEVEL_HINTS 0x16
CONSTANT: LC_PREBIND_CKSUM 0x17
CONSTANT: LC_LOAD_WEAK_DYLIB 0x80000018
CONSTANT: LC_SEGMENT_64 0x19
CONSTANT: LC_ROUTINES_64 0x1a
CONSTANT: LC_UUID 0x1b
CONSTANT: LC_RPATH 0x8000001c
CONSTANT: LC_CODE_SIGNATURE 0x1d
CONSTANT: LC_SEGMENT_SPLIT_INFO 0x1e
CONSTANT: LC_REEXPORT_DYLIB 0x8000001f
CONSTANT: LC_LAZY_LOAD_DYLIB 0x20
CONSTANT: LC_ENCRYPTION_INFO 0x21
CONSTANT: LC_DYLD_INFO 0x22
CONSTANT: LC_DYLD_INFO_ONLY 0x80000022
CONSTANT: LC_LOAD_UPWARD_DYLIB 0x80000023
CONSTANT: LC_VERSION_MIN_MACOSX 0x24
CONSTANT: LC_SEGMENT 0x1
CONSTANT: LC_SYMTAB 0x2
CONSTANT: LC_SYMSEG 0x3
CONSTANT: LC_THREAD 0x4
CONSTANT: LC_UNIXTHREAD 0x5
CONSTANT: LC_LOADFVMLIB 0x6
CONSTANT: LC_IDFVMLIB 0x7
CONSTANT: LC_IDENT 0x8
CONSTANT: LC_FVMFILE 0x9
CONSTANT: LC_PREPAGE 0xa
CONSTANT: LC_DYSYMTAB 0xb
CONSTANT: LC_LOAD_DYLIB 0xc
CONSTANT: LC_ID_DYLIB 0xd
CONSTANT: LC_LOAD_DYLINKER 0xe
CONSTANT: LC_ID_DYLINKER 0xf
CONSTANT: LC_PREBOUND_DYLIB 0x10
CONSTANT: LC_ROUTINES 0x11
CONSTANT: LC_SUB_FRAMEWORK 0x12
CONSTANT: LC_SUB_UMBRELLA 0x13
CONSTANT: LC_SUB_CLIENT 0x14
CONSTANT: LC_SUB_LIBRARY 0x15
CONSTANT: LC_TWOLEVEL_HINTS 0x16
CONSTANT: LC_PREBIND_CKSUM 0x17
CONSTANT: LC_LOAD_WEAK_DYLIB 0x80000018
CONSTANT: LC_SEGMENT_64 0x19
CONSTANT: LC_ROUTINES_64 0x1a
CONSTANT: LC_UUID 0x1b
CONSTANT: LC_RPATH 0x8000001c
CONSTANT: LC_CODE_SIGNATURE 0x1d
CONSTANT: LC_SEGMENT_SPLIT_INFO 0x1e
CONSTANT: LC_REEXPORT_DYLIB 0x8000001f
CONSTANT: LC_LAZY_LOAD_DYLIB 0x20
CONSTANT: LC_ENCRYPTION_INFO 0x21
CONSTANT: LC_DYLD_INFO 0x22
CONSTANT: LC_DYLD_INFO_ONLY 0x80000022
CONSTANT: LC_LOAD_UPWARD_DYLIB 0x80000023
CONSTANT: LC_VERSION_MIN_MACOSX 0x24
CONSTANT: LC_VERSION_MIN_IPHONEOS 0x25
CONSTANT: LC_FUNCTION_STARTS 0x26
CONSTANT: LC_DYLD_ENVIRONMENT 0x27
CONSTANT: LC_MAIN 0x80000028
CONSTANT: LC_DATA_IN_CODE 0x29
CONSTANT: LC_SOURCE_VERSION 0x2A
CONSTANT: LC_FUNCTION_STARTS 0x26
CONSTANT: LC_DYLD_ENVIRONMENT 0x27
CONSTANT: LC_MAIN 0x80000028
CONSTANT: LC_DATA_IN_CODE 0x29
CONSTANT: LC_SOURCE_VERSION 0x2A
CONSTANT: LC_DYLIB_CODE_SIGN_DRS 0x2B
CONSTANT: LC_ENCRYPTION_INFO_64 0x2C
CONSTANT: LC_LINKER_OPTION 0x2D
CONSTANT: LC_LINKER_OPTIMIZATION_HINT 0x2E
CONSTANT: LC_VERSION_MIN_TVOS 0x2F
CONSTANT: LC_VERSION_MIN_WATCHOS 0x30
CONSTANT: LC_NOTE 0x31
CONSTANT: LC_BUILD_VERSION 0x32
CONSTANT: LC_DYLD_EXPORTS_TRIE 0x80000033
CONSTANT: LC_DYLD_CHAINED_FIXUPS 0x80000034
CONSTANT: LC_FILESET_ENTRY 0x80000035
CONSTANT: LC_ATOM_INFO 0x36

UNION-STRUCT: lc_str
{ offset uint }
Expand Down Expand Up @@ -171,6 +191,7 @@ CONSTANT: SG_HIGHVM 0x1
CONSTANT: SG_FVMLIB 0x2
CONSTANT: SG_NORELOC 0x4
CONSTANT: SG_PROTECTED_VERSION_1 0x8
CONSTANT: SG_READ_ONLY 0x10

STRUCT: section
{ sectname char[16] }
Expand Down Expand Up @@ -219,6 +240,12 @@ CONSTANT: S_INTERPOSING 0xd
CONSTANT: S_16BYTE_LITERALS 0xe
CONSTANT: S_DTRACE_DOF 0xf
CONSTANT: S_LAZY_DYLIB_SYMBOL_POINTERS 0x10
CONSTANT: S_THREAD_LOCAL_REGULAR 0x11
CONSTANT: S_THREAD_LOCAL_ZEROFILL 0x12
CONSTANT: S_THREAD_LOCAL_VARIABLES 0x13
CONSTANT: S_THREAD_LOCAL_VARIABLE_POINTERS 0x14
CONSTANT: S_THREAD_LOCAL_INIT_FUNCTION_POINTERS 0x15
CONSTANT: S_INIT_FUNC_OFFSETS 0x16

CONSTANT: SECTION_ATTRIBUTES_USR 0xff000000
CONSTANT: S_ATTR_PURE_INSTRUCTIONS 0x80000000
Expand Down Expand Up @@ -462,6 +489,47 @@ STRUCT: version_min_command
{ version uint32_t }
{ sdk uint32_t } ;

STRUCT: build_version_command
{ cmd uint32_t }
{ cmdsize uint32_t }
{ platform uint32_t }
{ minos uint32_t }
{ sdk uint32_t }
{ ntools uint32_t } ;

STRUCT: build_tool_version
{ tool uint32_t }
{ version uint32_t } ;

CONSTANT: PLATFORM_UNKNOWN 0
CONSTANT: PLATFORM_ANY 0xFFFFFFFF
CONSTANT: PLATFORM_MACOS 1
CONSTANT: PLATFORM_IOS 2
CONSTANT: PLATFORM_TVOS 3
CONSTANT: PLATFORM_WATCHOS 4
CONSTANT: PLATFORM_BRIDGEOS 5
CONSTANT: PLATFORM_MACCATALYST 6
CONSTANT: PLATFORM_IOSSIMULATOR 7
CONSTANT: PLATFORM_TVOSSIMULATOR 8
CONSTANT: PLATFORM_WATCHOSSIMULATOR 9
CONSTANT: PLATFORM_DRIVERKIT 10
CONSTANT: PLATFORM_VISIONOS 11
CONSTANT: PLATFORM_VISIONOSSIMULATOR 12
CONSTANT: PLATFORM_FIRMWARE 13
CONSTANT: PLATFORM_SEPOS 14

CONSTANT: TOOL_CLANG 1
CONSTANT: TOOL_SWIFT 2
CONSTANT: TOOL_LD 3
CONSTANT: TOOL_LLD 4
CONSTANT: TOOL_METAL 1024
CONSTANT: TOOL_AIRLLD 1025
CONSTANT: TOOL_AIRNT 1026
CONSTANT: TOOL_AIRNT_PLUGIN 1027
CONSTANT: TOOL_AIRPACK 1028
CONSTANT: TOOL_GPUARCHIVER 1031
CONSTANT: TOOL_METAL_FRAMEWORK 1032

CONSTANT: REBASE_TYPE_POINTER 1
CONSTANT: REBASE_TYPE_TEXT_ABSOLUTE32 2
CONSTANT: REBASE_TYPE_TEXT_PCREL32 3
Expand All @@ -485,6 +553,7 @@ CONSTANT: BIND_TYPE_TEXT_PCREL32 3
CONSTANT: BIND_SPECIAL_DYLIB_SELF 0
CONSTANT: BIND_SPECIAL_DYLIB_MAIN_EXECUTABLE -1
CONSTANT: BIND_SPECIAL_DYLIB_FLAT_LOOKUP -2
CONSTANT: BIND_SPECIAL_DYLIB_WEAK_LOOKUP -3

CONSTANT: BIND_SYMBOL_FLAGS_WEAK_IMPORT 0x1
CONSTANT: BIND_SYMBOL_FLAGS_NON_WEAK_DEFINITION 0x8
Expand All @@ -504,13 +573,17 @@ CONSTANT: BIND_OPCODE_DO_BIND 0x90
CONSTANT: BIND_OPCODE_DO_BIND_ADD_ADDR_ULEB 0xA0
CONSTANT: BIND_OPCODE_DO_BIND_ADD_ADDR_IMM_SCALED 0xB0
CONSTANT: BIND_OPCODE_DO_BIND_ULEB_TIMES_SKIPPING_ULEB 0xC0
CONSTANT: BIND_OPCODE_THREADED 0xD0
CONSTANT: BIND_SUBOPCODE_THREADED_SET_BIND_ORDINAL_TABLE_SIZE_ULEB 0x00
CONSTANT: BIND_SUBOPCODE_THREADED_APPLY 0x01

CONSTANT: EXPORT_SYMBOL_FLAGS_KIND_MASK 0x03
CONSTANT: EXPORT_SYMBOL_FLAGS_KIND_REGULAR 0x00
CONSTANT: EXPORT_SYMBOL_FLAGS_KIND_THREAD_LOCAL 0x01
CONSTANT: EXPORT_SYMBOL_FLAGS_WEAK_DEFINITION 0x04
CONSTANT: EXPORT_SYMBOL_FLAGS_INDIRECT_DEFINITION 0x08
CONSTANT: EXPORT_SYMBOL_FLAGS_HAS_SPECIALIZATIONS 0x10
CONSTANT: EXPORT_SYMBOL_FLAGS_STATIC_RESOLVER 0x20

STRUCT: symseg_command
{ cmd uint }
Expand Down Expand Up @@ -920,6 +993,7 @@ TYPED: 64-bit? ( macho: mach_header_32/64 -- ? )
{ LC_DATA_IN_CODE [ data_in_code_entry ] }
{ LC_SOURCE_VERSION [ source_version_command ] }
{ LC_DYLIB_CODE_SIGN_DRS [ linkedit_data_command ] }
{ LC_BUILD_VERSION [ build_version_command ] }
} case ;

: read-command ( cmd -- next-cmd )
Expand Down

0 comments on commit 92b6c51

Please sign in to comment.