Modules

executable_formats

moduleSource

Available on macOS, Linux, Windows, Wasm

#import "executable_formats";

Procedures#

Bitfields#

Mach-O#

COFF#

(file_content: string, path := "(unspecified file)", verbose := false, start_offset := 0) -> (success: bool, Coff)
(file_content: string) -> (bool, coff_start: int)
(file_content: string, path := "(unspecified file)", verbose := false) -> (success: bool, Coff)

ELF#

(file_content: string, path := "(unspecified file)") -> (success: bool, elf: Elf)

Universal#

Relocations#

Lexer#

(lexer: *Lexer, format: string, arguments: ..Any)
(lexer: *Lexer, token: *Token, format: string, arguments: ..Any)
(lexer: *Lexer, line: s32, col: s32, format: string, arguments: ..Any)
(lexer: *Lexer, format: string, arguments: ..Any)
(lexer: *Lexer, line: s32, col: s32, format: string, arguments: ..Any)

TBD#

Archive#

(content: string, archive_filename: string, verbose := false) -> (success: bool, Archive)

Types#

:: enum
ANY
VAX
MC680x0
X86
I386
X86_64
MC98000
HPPA
ARM
ARM64
ARM64_32
MC88000
SPARC
I860
POWERPC
POWERPC64
:: enum
MASK
LIB64
PTRAUTH_ABI
ANY
MULTIPLE
LITTLE_ENDIAN
BIG_ENDIAN
VAX_ALL
VAX780
VAX785
VAX750
VAX730
UVAXI
UVAXII
VAX8200
VAX8500
VAX8600
VAX8650
VAX8800
UVAXIII
MC680x0_ALL
MC68030
MC68040
MC68030_ONLY
INTEL_FAMILY_MAX
INTEL_MODEL_ALL
X86_ALL
X86_64_ALL
X86_ARCH1
X86_64_H
MIPS_ALL
MIPS_R2300
MIPS_R2600
MIPS_R2800
MIPS_R2000a
MIPS_R2000
MIPS_R3000a
MIPS_R3000
MC98000_ALL
MC98601
HPPA_ALL
HPPA_7100
HPPA_7100LC
MC88000_ALL
MC88100
MC88110
SPARC_ALL
I860_ALL
I860_860
POWERPC_ALL
POWERPC_601
POWERPC_602
POWERPC_603
POWERPC_603e
POWERPC_603ev
POWERPC_604
POWERPC_604e
POWERPC_620
POWERPC_750
POWERPC_7400
POWERPC_7450
POWERPC_970
ARM_ALL
ARM_V4T
ARM_V6
ARM_V5TEJ
ARM_XSCALE
ARM_V7
ARM_V7F
ARM_V7S
ARM_V7K
ARM_V8
ARM_V6M
ARM_V7M
ARM_V7EM
ARM_V8M
ARM_V8M_MAIN
ARM_V8M_BASE
ARM_V8_1M_MAIN
ARM64_ALL
ARM64_V8
ARM64E
ARM64_PTR_AUTH_MASK
ARM64_32_ALL
ARM64_32_V8
:: enum
UNKNOWN
POWERPC_G3
POWERPC_G4
POWERPC_G5
INTEL_6_13
INTEL_PENRYN
INTEL_NEHALEM
INTEL_WESTMERE
INTEL_SANDYBRIDGE
INTEL_IVYBRIDGE
INTEL_HASWELL
INTEL_BROADWELL
INTEL_SKYLAKE
INTEL_KABYLAKE
INTEL_ICELAKE
INTEL_COMETLAKE
ARM_9
ARM_11
ARM_XSCALE
ARM_12
ARM_13
ARM_14
ARM_15
ARM_SWIFT
ARM_CYCLONE
ARM_TYPHOON
ARM_TWISTER
ARM_HURRICANE
ARM_MONSOON_MISTRAL
ARM_VORTEX_TEMPEST
ARM_LIGHTNING_THUNDER
ARM_FIRESTORM_ICESTORM
ARM_BLIZZARD_AVALANCHE
ARM_EVEREST_SAWTOOTH
ARM_IBIZA
ARM_PALMA
ARM_COLL
ARM_LOBOS
ARM_DONAN
ARM_BRAVA
ARM_TAHITI
ARM_TUPAI
ARM_HIDRA
ARM_THERA
ARM_TILOS
INTEL_6_23
INTEL_6_26
:: enum
REQ_DYLD
SEGMENT
SYMTAB
SYMSEG
THREAD
UNIXTHREAD
LOADFVMLIB
IDFVMLIB
IDENT
FVMFILE
PREPAGE
DYSYMTAB
LOAD_DYLIB
ID_DYLIB
LOAD_DYLINKER
ID_DYLINKER
PREBOUND_DYLIB
ROUTINES
SUB_FRAMEWORK
SUB_UMBRELLA
SUB_CLIENT
SUB_LIBRARY
TWOLEVEL_HINTS
PREBIND_CKSUM
LOAD_WEAK_DYLIB
SEGMENT_64
ROUTINES_64
UUID
RPATH
CODE_SIGNATURE
SEGMENT_SPLIT_INFO
REEXPORT_DYLIB
LAZY_LOAD_DYLIB
ENCRYPTION_INFO
DYLD_INFO
DYLD_INFO_ONLY
LOAD_UPWARD_DYLIB
VERSION_MIN_MACOSX
VERSION_MIN_IPHONEOS
FUNCTION_STARTS
DYLD_ENVIRONMENT
MAIN
DATA_IN_CODE
SOURCE_VERSION
DYLIB_CODE_SIGN_DRS
ENCRYPTION_INFO_64
LINKER_OPTION
LINKER_OPTIMIZATION_HINT
VERSION_MIN_TVOS
VERSION_MIN_WATCHOS
NOTE
BUILD_VERSION
DYLD_EXPORTS_TRIE
DYLD_CHAINED_FIXUPS
FILESET_ENTRY
ATOM_INFO
FUNCTION_VARIANTS
FUNCTION_VARIANT_FIXUPS
TARGET_TRIPLE
:: enum_flags
HIGHVM
FVMLIB
NORELOC
PROTECTED_VERSION_1
READ_ONLY
:: enum_flags
REGULAR
ZEROFILL
CSTRING_LITERALS
_4BYTE_LITERALS
_8BYTE_LITERALS
LITERAL_POINTERS
NON_LAZY_SYMBOL_POINTERS
LAZY_SYMBOL_POINTERS
SYMBOL_STUBS
MOD_INIT_FUNC_POINTERS
MOD_TERM_FUNC_POINTERS
COALESCED
GB_ZEROFILL
INTERPOSING
_16BYTE_LITERALS
DTRACE_DOF
LAZY_DYLIB_SYMBOL_POINTERS
THREAD_LOCAL_REGULAR
THREAD_LOCAL_ZEROFILL
THREAD_LOCAL_VARIABLES
THREAD_LOCAL_VARIABLE_POINTERS
THREAD_LOCAL_INIT_FUNCTION_POINTERS
INIT_FUNC_OFFSETS
ATTR_PURE_INSTRUCTIONS
ATTR_NO_TOC
ATTR_STRIP_STATIC_SYMS
ATTR_NO_DEAD_STRIP
ATTR_LIVE_SUPPORT
ATTR_SELF_MODIFYING_CODE
ATTR_DEBUG
ATTR_SOME_INSTRUCTIONS
ATTR_EXT_RELOC
ATTR_LOC_RELOC
:: struct
magic: u32
cputype: s32
cpusubtype: s32
filetype: u32
ncmds: u32
sizeofcmds: u32
flags: u32
:: struct
magic: u32
cputype: s32
cpusubtype: s32
filetype: u32
ncmds: u32
sizeofcmds: u32
flags: u32
reserved: u32
:: struct
cmd: u32
cmdsize: u32
segname: [16] u8
vmaddr: u32
vmsize: u32
fileoff: u32
filesize: u32
maxprot: s32
initprot: s32
nsects: u32
flags: u32
:: struct
cmd: u32
cmdsize: u32
segname: [16] u8
vmaddr: u64
vmsize: u64
fileoff: u64
filesize: u64
maxprot: s32
initprot: s32
nsects: u32
flags: u32
:: struct
sectname: [16] u8
segname: [16] u8
addr: u32
size: u32
offset: u32
align: u32
reloff: u32
nreloc: u32
flags: u32
reserved1: u32
reserved2: u32
:: struct
sectname: [16] u8
segname: [16] u8
addr: u64
size: u64
offset: u32
align: u32
reloff: u32
nreloc: u32
flags: u32
reserved1: u32
reserved2: u32
reserved3: u32
:: struct
name: lc_str
timestamp: u32
current_version: u32
compatibility_version: u32
:: struct
cmd: u32
cmdsize: u32
nameoff: u32
marker: u32
current_version: u32
compat_version: u32
flags: u32
:: struct
cmd: u32
cmdsize: u32
init_address: u32
init_module: u32
reserved1: u32
reserved2: u32
reserved3: u32
reserved4: u32
reserved5: u32
reserved6: u32
:: struct
cmd: u32
cmdsize: u32
init_address: u64
init_module: u64
reserved1: u64
reserved2: u64
reserved3: u64
reserved4: u64
reserved5: u64
reserved6: u64
:: struct
cmd: u32
cmdsize: u32
symoff: u32
nsyms: u32
stroff: u32
strsize: u32
:: struct
cmd: u32
cmdsize: u32
ilocalsym: u32
nlocalsym: u32
iextdefsym: u32
nextdefsym: u32
iundefsym: u32
nundefsym: u32
tocoff: u32
ntoc: u32
modtaboff: u32
nmodtab: u32
extrefsymoff: u32
nextrefsyms: u32
indirectsymoff: u32
nindirectsyms: u32
extreloff: u32
nextrel: u32
locreloff: u32
nlocrel: u32
:: struct
module_name: u32
iextdefsym: u32
nextdefsym: u32
irefsym: u32
nrefsym: u32
ilocalsym: u32
nlocalsym: u32
iextrel: u32
nextrel: u32
iinit_iterm: u32
ninit_nterm: u32
objc_module_info_addr: u32
objc_module_info_size: u32
:: struct
module_name: u32
iextdefsym: u32
nextdefsym: u32
irefsym: u32
nrefsym: u32
ilocalsym: u32
nlocalsym: u32
iextrel: u32
nextrel: u32
iinit_iterm: u32
ninit_nterm: u32
objc_module_info_size: u32
objc_module_info_addr: u64
:: struct
cmd: u32
cmdsize: u32
rebase_off: u32
rebase_size: u32
bind_off: u32
bind_size: u32
weak_bind_off: u32
weak_bind_size: u32
lazy_bind_off: u32
lazy_bind_size: u32
export_off: u32
export_size: u32
:: struct
cmd: u32
cmdsize: u32
data_owner: [16] u8
offset: u64
size: u64
:: struct
n_un: struct { n_strx: u32; }
n_type: u8
n_sect: u8
n_desc: s16
n_value: u32
:: struct
n_un: struct { n_strx: u32; }
n_type: u8
n_sect: u8
n_desc: u16
n_value: u64
:: enum
UNSIGNED
SIGNED
BRANCH
GOT_LOAD
GOT
SUBTRACTOR
SIGNED_1
SIGNED_2
SIGNED_4
TLV
:: enum
UNSIGNED
SUBTRACTOR
BRANCH26
PAGE21
PAGEOFF12
GOT_LOAD_PAGE21
GOT_LOAD_PAGEOFF12
POINTER_TO_GOT
TLVP_LOAD_PAGE21
TLVP_LOAD_PAGEOFF12
ADDEND
AUTHENTICATED_POINTER
:: struct
magic: Magic
major_linker_version: u8
minor_linker_version: u8
size_of_code: u32
size_of_initialized_data: u32
size_of_uninitialized_data: u32
address_of_entry_point: u32
base_of_code: u32
:: struct
image_base: Size_Offset_Type
section_alignment: u32
file_alignment: u32
major_operating_system_version: u16
minor_operating_system_version: u16
major_image_version: u16
minor_image_version: u16
major_subsystem_version: u16
minor_subsystem_version: u16
win32_version_value: u32
size_of_image: u32
size_of_headers: u32
check_sum: u32
dll_characteristics: Windows_Dll_Characteristics
size_of_stack_reserve: Size_Offset_Type
size_of_stack_commit: Size_Offset_Type
size_of_heap_reserve: Size_Offset_Type
size_of_heap_commit: Size_Offset_Type
loader_flags: u32
number_of_rva_and_sizes: u32
:: enum
Export_Table
Import_Table
Resource_Table
Exception_Table
Certificate_Table
Base_Relocation_Table
Debug
Architecture
Global_Ptr
TLS_Table
Load_Config_Table
Bound_Import
IAT
Delay_Import_Descriptor
CLR_Runtime_Header
Reserved
:: enum
TYPE_UNKNOWN
TYPE_COFF
TYPE_CODEVIEW
TYPE_FPO
TYPE_MISC
TYPE_EXCEPTION
TYPE_FIXUP
TYPE_OMAP_TO_SRC
TYPE_OMAP_FROM_SRC
TYPE_BORLAND
TYPE_RESERVED10
TYPE_CLSID
TYPE_REPRO
TYPE_EMBEDDED
TYPE_CRYPTO_HASH
TYPE_EX_DLLCHARACTERISTICS
:: struct
name: [8] u8
virtual_size: u32
virtual_address: u32
size_of_raw_data: u32
pointer_to_raw_data: u32
pointer_to_relocations: u32
pointer_to_line_numbers: u32
number_of_relocations: u16
number_of_line_numbers: u16
characteristics: Section_Characteristics
:: enum
UNKNOWN
AM33
AMD64
ARM
ARM64
ARMNT
EBC
I386
IA64
LOONGARCH32
LOONGARCH64
M32R
MIPS16
MIPSFPU
MIPSFPU16
POWERPC
POWERPCFP
R4000
RISCV32
RISCV64
RISCV128
SH3
SH3DSP
SH4
SH5
THUMB
WCEMIPSV2
:: enum_flags
RELOCS_STRIPPED
EXECUTABLE_IMAGE
LINE_NUMS_STRIPPED
LOCAL_SYMS_STRIPPED
AGGRESSIVE_WS_TRIM
LARGE_ADDRESS_AWARE
BYTES_REVERSED_LO
_32BIT_MACHINE
DEBUG_STRIPPED
REMOVABLE_RUN_FROM_SWAP
NET_RUN_FROM_SWAP
SYSTEM
DLL
UP_SYSTEM_ONLY
BYTES_REVERSED_HI
:: enum
UNKNOWN
NATIVE
WINDOWS_GUI
WINDOWS_CUI
OS2_CUI
POSIX_CUI
NATIVE_WINDOWS
WINDOWS_CE_GUI
EFI_APPLICATION
EFI_BOOT_SERVICE_DRIVER
EFI_RUNTIME_DRIVER
EFI_ROM
XBOX
WINDOWS_BOOT_APPLICATION
:: enum_flags
HIGH_ENTROPY_VA
DYNAMIC_BASE
FORCE_INTEGRITY
NX_COMPAT
NO_ISOLATION
NO_SEH
NO_BIND
APPCONTAINER
WDM_DRIVER
GUARD_CF
TERMINAL_SERVER_AWARE
:: enum_flags
TYPE_NO_PAD
CNT_CODE
CNT_INITIALIZED_DATA
CNT_UNINITIALIZED_DATA
LNK_OTHER
LNK_INFO
LNK_REMOVE
LNK_COMDAT
GPREL
MEM_PURGEABLE
MEM_16BIT
MEM_LOCKED
MEM_PRELOAD
ALIGN_1BYTES
ALIGN_2BYTES
ALIGN_4BYTES
ALIGN_8BYTES
ALIGN_16BYTES
ALIGN_32BYTES
ALIGN_64BYTES
ALIGN_128BYTES
ALIGN_256BYTES
ALIGN_512BYTES
ALIGN_1024BYTES
ALIGN_2048BYTES
ALIGN_4096BYTES
ALIGN_8192BYTES
LNK_NRELOC_OVFL
MEM_DISCARDABLE
MEM_NOT_CACHED
MEM_NOT_PAGED
MEM_SHARED
MEM_EXECUTE
MEM_READ
MEM_WRITE
:: struct
begin_address: u32
end_address: u32
unwind_info_address: u32
:: enum
ABSOLUTE
ADDR64
ADDR32
ADDR32NB
REL32
REL32_1
REL32_2
REL32_3
REL32_4
REL32_5
SECTION
SECREL
SECREL7
TOKEN
SREL32
PAIR
SSPAN32
:: struct
name: union { short_name: [8] u8; long_name: struct { zeroes: u32 #align 1; offset: u32 #align 1; }; }
value: u32
section_number: u16
type: u16
number_of_aux_symbols: u8
:: enum
END_OF_FUNCTION
NULL
AUTOMATIC
EXTERNAL
STATIC
REGISTER
EXTERNAL_DEF
LABEL
UNDEFINED_LABEL
MEMBER_OF_STRUCT
ARGUMENT
STRUCT_TAG
MEMBER_OF_UNION
UNION_TAG
TYPE_DEFINITION
UNDEFINED_STATIC
ENUM_TAG
MEMBER_OF_ENUM
REGISTER_PARAM
BIT_FIELD
BLOCK
FUNCTION
END_OF_STRUCT
FILE
SECTION
WEAK_EXTERNAL
CLR_TOKEN
:: enum
PUSH_NONVOL
ALLOC_LARGE
ALLOC_SMALL
SET_FPREG
SAVE_NONVOL
SAVE_NONVOL_FAR
SAVE_XMM128
SAVE_XMM128_FAR
PUSH_MACHFRAME
ElfstructSource
:: struct
header: *Elf_Header_64
program_header_table: [] Elf_Program_Header_64
sections: [] Elf_Section_Header
section_names: string
text_section: *Elf_Section_Header
debug_info_section_index: int
debug_line_section_index: int
debug_info_section: *Elf_Section_Header
debug_abbrev_section: *Elf_Section_Header
debug_str_section: *Elf_Section_Header
debug_line_section: *Elf_Section_Header
debug_loc_section: *Elf_Section_Header
debug_ranges_section: *Elf_Section_Header
text: [] u8
symbols: [] Elf_Symbol
symbol_names: string
dynamic_symbols: [] Elf_Symbol
dynamic_symbol_names: string
content: string
:: struct
ident: struct { magic: u32; class: Elf_Class; data: Elf_Endianness; version: u8; os_abi: Elf_Abi; abi_version: u8; pad: [7] u8; }
type: Elf_Type
machine: Elf_Machine
version: u32
entry: Offset_Type
program_header_offset: Offset_Type
section_header_offset: Offset_Type
flags: u32
ehsize: u16
phentsize: u16
phnum: u16
section_header_entry_size: u16
num_section_headers: u16
section_names_section_index: u16
:: enum
NONE
REL
EXEC
DYN
CORE
LOOS
HIOS
LOPROC
HIPROC
:: enum
NULL
PROGBITS
SYMTAB
STRTAB
RELA
HASH
DYNAMIC
NOTE
NOBITS
REL
SHLIB
DYNSYM
INIT_ARRAY
FINI_ARRAY
PREINIT_ARRAY
GROUP
SYMTAB_SHNDX
NUM
LOOS
LLVM_ADDRSIG
:: enum_flags
WRITE
ALLOC
EXECINSTR
MERGE
STRINGS
INFO_LINK
LINK_ORDER
OS_NONCONFORMING
GROUP
TLS
MASKOS
MASKPROC
ORDERED
EXCLUDE
:: enum
NULL
LOAD
DYNAMIC
INTERP
NOTE
SHLIB
PHDR
TLS
NUM
LOOS
GNU_EH_FRAME
GNU_STACK
GNU_RELRO
GNU_PROPERTY
LOSUNW
SUNWBSS
SUNWSTACK
HISUNW
HIOS
LOPROC
HIPROC
:: struct
name_offset: u32
info: u8
other: u8
section_index: u16
value: u64
size: u64
:: enum
AMD64_64
AMD64_PC32
AMD64_PLT32
AMD64_JUMP_SLOT
AMD64_RELATIVE
AMD64_GOTPCREL
AMD64_32
AMD64_32S
X86_64_ORBIS_GOTPCREL_LOAD
AARCH64_ABS64
AARCH64_ABS32
AARCH64_ABS16
AARCH64_PREL64
AARCH64_PREL32
AARCH64_PREL16
AARCH64_PLT32
AARCH64_GLOB_DAT
AARCH64_JUMP_SLOT
AARCH64_RELATIVE
:: enum
NULL
NEEDED
PLTRELSZ
PLTGOT
HASH
STRTAB
SYMTAB
RELA
RELASZ
RELAENT
STRSZ
SYMENT
INIT
FINI
SONAME
RPATH
SYMBOLIC
REL
RELSZ
RELENT
PLTREL
DEBUG
TEXTREL
JMPREL
BIND_NOW
INIT_ARRAY
FINI_ARRAY
INIT_ARRAYSZ
FINI_ARRAYSZ
RUNPATH
FLAGS
ENCODING
PREINIT_ARRAY
PREINIT_ARRAYSZ
SYMTAB_SHNDX
RELRSZ
RELR
RELRENT
NUM
LOOS
HIOS
LOPROC
HIPROC
GNU_HASH
VERSYM
RELACOUNT
VERNEED
VERNEEDNUM
:: enum
GLOBAL
F77_NAME
PROC_NAME
DATA_VAR
BSS_VAR
BEGIN_NSECT
AST
GCC_OPT
REGISTER
SRC_LINE
END_NSECT
STRUCT
SOURCE_FILE
OBJECT_FILE
LOCAL
BEGIN_COMMON
END_COMMON
END_COMMON_LOCAL
LENGTH
:: struct
sectname: [16] u8
segname: [16] u8
addr: u64
size: u64
offset: u32
align: u32
reloff: u32
nreloc: u32
reserved1: u32
reserved2: u32
reserved3: u32
:: enum_flags
NOUNDEFS
INCRLINK
DYLDLINK
BINDATLOAD
PREBOUND
SPLIT_SEGS
LAZY_INIT
TWOLEVEL
FORCE_FLAT
NOMULTIDEFS
NOFIXPREBINDING
PREBINDABLE
ALLMODSBOUND
SUBSECTIONS_VIA_SYMBOLS
CANONICAL
WEAK_DEFINES
BINDS_TO_WEAK
ALLOW_STACK_EXECUTION
ROOT_SAFE
SETUID_SAFE
NO_REEXPORTED_DYLIBS
PIE
DEAD_STRIPPABLE_DYLIB
HAS_TLV_DESCRIPTORS
NO_HEAP_EXECUTION
NLIST_OUTOFSYNC_WITH_DYLDINFO
SIM_SUPPORT
DYLIB_IN_CACHE
:: enum
UNKNOWN
ANY
MACOS
IOS
TVOS
WATCHOS
BRIDGEOS
MACCATALYST
IOSSIMULATOR
TVOSSIMULATOR
WATCHOSSIMULATOR
DRIVERKIT
VISIONOS
VISIONOSSIMULATOR
FIRMWARE
SEPOS
MACOS_EXCLAVECORE
MACOS_EXCLAVEKIT
IOS_EXCLAVECORE
IOS_EXCLAVEKIT
TVOS_EXCLAVECORE
TVOS_EXCLAVEKIT
WATCHOS_EXCLAVECORE
WATCHOS_EXCLAVEKIT
VISIONOS_EXCLAVECORE
VISIONOS_EXCLAVEKIT
:: struct
magic: u16
cblp: u16
cp: u16
crlc: u16
cparhdr: u16
minalloc: u16
maxalloc: u16
ss: u16
sp: u16
csum: u16
ip: u16
cs: u16
lfarlc: u16
ovno: u16
res: [4] u16
oemid: u16
oeminfo: u16
res2: [10] u16
lfanew: u32
:: enum
IDENT
STRING
TRIPLE_MINUS
TRIPLE_DOT
END_OF_INPUT
ERROR
:: enum_flags
HERE_STRING
NUMBER
HEX
BINARY
FLOAT
REQUIRES_FLOAT64
DEFAULTS_TO_FLOAT64
REQUIRES_FLOAT64_DUE_TO_SIGNIFICANT_DIGITS
OVERFLOWED
:: struct
current_line_number: s32
current_external_file_error_report_line_number: s32
current_character_index: s32
token_array_cursor: s32
num_incoming_tokens: s32
input: string
input_cursor: s64
should_free_input: := false
total_lines_processed: s64
nonblank_lines_processed: s64
preceeding_whitespace: s32
previous_token_line_number: s64
eof_token: Token
user_data: *void
scratch_buffer: [MAX_IDENTIFIER_LENGTH] u8
reported_error: := false

Constants#

:: s32

Explicit public ABI transcribed from the executable-formats spec.