Expand description
Mach-O definitions.
These definitions are independent of read/write support, although we do implement some traits useful for those.
This module is based heavily on header files from MacOSX11.1.sdk.
Structs§
- Build
Tool Version - Build
Version Command - Data
InCode Entry - Dyld
Cache Header - The dyld cache header. Corresponds to struct dyld_cache_header from dyld_cache_format.h. This header has grown over time. Only the fields up to and including dyld_base_address are guaranteed to be present. For all other fields, check the header size before accessing the field. The header size is stored in mapping_offset; the mappings start right after the theader.
- Dyld
Cache Image Info - Corresponds to struct dyld_cache_image_info from dyld_cache_format.h.
- Dyld
Cache Mapping Info - Corresponds to struct dyld_cache_mapping_info from dyld_cache_format.h.
- Dyld
Info Command - Dyld
SubCache Entry V1 - Added in dyld-940, which shipped with macOS 12 / iOS 15.
Originally called
dyld_subcache_entry
, renamed todyld_subcache_entry_v1
in dyld-1042.1. - Dyld
SubCache Entry V2 - Added in dyld-1042.1, which shipped with macOS 13 / iOS 16.
Called
dyld_subcache_entry
as of dyld-1042.1. - Dylib
- Dylib
Command - Dylib
Module32 - Dylib
Module64 - Dylib
Reference - Dylib
Table OfContents - Dylinker
Command - Dysymtab
Command - Encryption
Info Command32 - Encryption
Info Command64 - Entry
Point Command - FatArch32
- FatArch64
- FatHeader
- Fileset
Entry Command - Fvmfile
Command - Fvmlib
- Fvmlib
Command - Ident
Command - LcStr
- A variable length string in a load command.
- Linkedit
Data Command - Linker
Option Command - Load
Command - Common fields at the start of every load command.
- Mach
Header32 - The 32-bit mach header.
- Mach
Header64 - The 64-bit mach header.
- Nlist32
- Nlist64
- Note
Command - Prebind
Cksum Command - Prebound
Dylib Command - Relocation
- A relocation entry.
- Relocation
Info - Routines
Command32 - Routines
Command64 - Rpath
Command - Scattered
Relocation Info - Section32
- 32-bit section.
- Section64
- 64-bit section.
- Segment
Command32 - 32-bit segment load command.
- Segment
Command64 - 64-bit segment load command.
- Source
Version Command - SubClient
Command - SubFramework
Command - SubLibrary
Command - SubUmbrella
Command - Symseg
Command - Symtab
Command - Thread
Command - Twolevel
Hint - Twolevel
Hints Command - Uuid
Command - Version
MinCommand
Constants§
- ARM64_
RELOC_ ADDEND - must be followed by PAGE21 or PAGEOFF12
- ARM64_
RELOC_ AUTHENTICATED_ POINTER - ARM64_
RELOC_ BRANC H26 - a B/BL instruction with 26-bit displacement
- ARM64_
RELOC_ GOT_ LOAD_ PAGE21 - pc-rel distance to page of GOT slot
- ARM64_
RELOC_ GOT_ LOAD_ PAGEOF F12 - offset within page of GOT slot, scaled by r_length
- ARM64_
RELOC_ PAGE21 - pc-rel distance to page of target
- ARM64_
RELOC_ PAGEOF F12 - offset within page, scaled by r_length
- ARM64_
RELOC_ POINTER_ TO_ GOT - for pointers to GOT slots
- ARM64_
RELOC_ SUBTRACTOR - must be followed by a ARM64_RELOC_UNSIGNED
- ARM64_
RELOC_ TLVP_ LOAD_ PAGE21 - pc-rel distance to page of TLVP slot
- ARM64_
RELOC_ TLVP_ LOAD_ PAGEOF F12 - offset within page of TLVP slot, scaled by r_length
- ARM64_
RELOC_ UNSIGNED - for pointers
- ARM_
RELOC_ BR24 - 24 bit branch displacement (to a word address)
- ARM_
RELOC_ HALF - ARM_
RELOC_ HALF_ SECTDIFF - ARM_
RELOC_ LOCAL_ SECTDIFF - like ARM_RELOC_SECTDIFF, but the symbol referenced was local.
- ARM_
RELOC_ PAIR - the second relocation entry of a pair
- ARM_
RELOC_ PB_ LA_ PTR - prebound lazy pointer
- ARM_
RELOC_ SECTDIFF - a PAIR follows with subtract symbol value
- ARM_
RELOC_ VANILLA - generic relocation as described above
- ARM_
THUMB_ 32BIT_ BRANCH - obsolete - a thumb 32-bit branch instruction possibly needing page-spanning branch workaround
- ARM_
THUMB_ RELOC_ BR22 - 22 bit branch displacement (to a half-word address)
- BIND_
IMMEDIATE_ MASK - BIND_
OPCODE_ ADD_ ADDR_ ULEB - BIND_
OPCODE_ DONE - BIND_
OPCODE_ DO_ BIND - BIND_
OPCODE_ DO_ BIND_ ADD_ ADDR_ IMM_ SCALED - BIND_
OPCODE_ DO_ BIND_ ADD_ ADDR_ ULEB - BIND_
OPCODE_ DO_ BIND_ ULEB_ TIMES_ SKIPPING_ ULEB - BIND_
OPCODE_ MASK - BIND_
OPCODE_ SET_ ADDEND_ SLEB - BIND_
OPCODE_ SET_ DYLIB_ ORDINAL_ IMM - BIND_
OPCODE_ SET_ DYLIB_ ORDINAL_ ULEB - BIND_
OPCODE_ SET_ DYLIB_ SPECIAL_ IMM - BIND_
OPCODE_ SET_ SEGMENT_ AND_ OFFSET_ ULEB - BIND_
OPCODE_ SET_ SYMBOL_ TRAILING_ FLAGS_ IMM - BIND_
OPCODE_ SET_ TYPE_ IMM - BIND_
OPCODE_ THREADED - BIND_
SPECIAL_ DYLIB_ FLAT_ LOOKUP - BIND_
SPECIAL_ DYLIB_ MAIN_ EXECUTABLE - BIND_
SPECIAL_ DYLIB_ SELF - BIND_
SPECIAL_ DYLIB_ WEAK_ LOOKUP - BIND_
SUBOPCODE_ THREADED_ APPLY - BIND_
SUBOPCODE_ THREADED_ SET_ BIND_ ORDINAL_ TABLE_ SIZE_ ULEB - BIND_
SYMBOL_ FLAGS_ NON_ WEAK_ DEFINITION - BIND_
SYMBOL_ FLAGS_ WEAK_ IMPORT - BIND_
TYPE_ POINTER - BIND_
TYPE_ TEXT_ ABSOLUT E32 - BIND_
TYPE_ TEXT_ PCRE L32 - CPU_
ARCH_ ABI64 - 64 bit ABI
- CPU_
ARCH_ ABI64_ 32 - ABI for 64-bit hardware with 32-bit types; LP32
- CPU_
ARCH_ MASK - mask for architecture bits
- CPU_
SUBTYPE_ 386 - CPU_
SUBTYPE_ 486 - CPU_
SUBTYPE_ 586 - CPU_
SUBTYPE_ 486SX - CPU_
SUBTYPE_ ANY - When selecting a slice, ANY will pick the slice with the best grading for the selected cpu_type_t, unlike the “ALL” subtypes, which are the slices that can run on any hardware for that cpu type.
- CPU_
SUBTYPE_ ARM64E - CPU_
SUBTYPE_ ARM64_ 32_ ALL - CPU_
SUBTYPE_ ARM64_ 32_ V8 - CPU_
SUBTYPE_ ARM64_ ALL - CPU_
SUBTYPE_ ARM64_ V8 - CPU_
SUBTYPE_ ARM_ ALL - CPU_
SUBTYPE_ ARM_ V6 - CPU_
SUBTYPE_ ARM_ V7 - ARMv7-A and ARMv7-R
- CPU_
SUBTYPE_ ARM_ V8 - CPU_
SUBTYPE_ ARM_ V4T - CPU_
SUBTYPE_ ARM_ V5TEJ - CPU_
SUBTYPE_ ARM_ V6M - Not meant to be run under xnu
- CPU_
SUBTYPE_ ARM_ V7EM - Not meant to be run under xnu
- CPU_
SUBTYPE_ ARM_ V7F - Cortex A9
- CPU_
SUBTYPE_ ARM_ V7K - CPU_
SUBTYPE_ ARM_ V7M - Not meant to be run under xnu
- CPU_
SUBTYPE_ ARM_ V7S - Swift
- CPU_
SUBTYPE_ ARM_ V8M - Not meant to be run under xnu
- CPU_
SUBTYPE_ ARM_ XSCALE - CPU_
SUBTYPE_ BIG_ ENDIAN - CPU_
SUBTYPE_ CELERON - CPU_
SUBTYPE_ CELERON_ MOBILE - CPU_
SUBTYPE_ HPPA_ 7100LC - CPU_
SUBTYPE_ HPPA_ ALL - CPU_
SUBTYPE_ I386_ ALL - CPU_
SUBTYPE_ I860_ 860 - CPU_
SUBTYPE_ I860_ ALL - CPU_
SUBTYPE_ INTEL_ FAMILY_ MAX - CPU_
SUBTYPE_ INTEL_ MODEL_ ALL - CPU_
SUBTYPE_ ITANIUM - CPU_
SUBTYPE_ ITANIUM_ 2 - CPU_
SUBTYPE_ LIB64 - 64 bit libraries
- CPU_
SUBTYPE_ LITTLE_ ENDIAN - CPU_
SUBTYPE_ MASK - mask for feature flags
- CPU_
SUBTYPE_ MC680 X0_ ALL - CPU_
SUBTYPE_ MC68030 - CPU_
SUBTYPE_ MC68040 - CPU_
SUBTYPE_ MC88100 - CPU_
SUBTYPE_ MC88110 - CPU_
SUBTYPE_ MC98601 - CPU_
SUBTYPE_ MC68030_ ONLY - CPU_
SUBTYPE_ MC88000_ ALL - CPU_
SUBTYPE_ MC98000_ ALL - CPU_
SUBTYPE_ MIPS_ ALL - CPU_
SUBTYPE_ MIPS_ R2000 - CPU_
SUBTYPE_ MIPS_ R2300 - CPU_
SUBTYPE_ MIPS_ R2600 - CPU_
SUBTYPE_ MIPS_ R2800 - CPU_
SUBTYPE_ MIPS_ R3000 - CPU_
SUBTYPE_ MIPS_ R2000A - pmax
- CPU_
SUBTYPE_ MIPS_ R3000A - 3max
- CPU_
SUBTYPE_ MULTIPLE - CPU_
SUBTYPE_ PENT - CPU_
SUBTYPE_ PENTII_ M3 - CPU_
SUBTYPE_ PENTII_ M5 - CPU_
SUBTYPE_ PENTIUM_ 3 - CPU_
SUBTYPE_ PENTIUM_ 4 - CPU_
SUBTYPE_ PENTIUM_ 3_ M - CPU_
SUBTYPE_ PENTIUM_ 3_ XEON - CPU_
SUBTYPE_ PENTIUM_ 4_ M - CPU_
SUBTYPE_ PENTIUM_ M - CPU_
SUBTYPE_ PENTPRO - CPU_
SUBTYPE_ POWERPC_ 601 - CPU_
SUBTYPE_ POWERPC_ 602 - CPU_
SUBTYPE_ POWERPC_ 603 - CPU_
SUBTYPE_ POWERPC_ 604 - CPU_
SUBTYPE_ POWERPC_ 620 - CPU_
SUBTYPE_ POWERPC_ 750 - CPU_
SUBTYPE_ POWERPC_ 970 - CPU_
SUBTYPE_ POWERPC_ 603E - CPU_
SUBTYPE_ POWERPC_ 603EV - CPU_
SUBTYPE_ POWERPC_ 604E - CPU_
SUBTYPE_ POWERPC_ 7400 - CPU_
SUBTYPE_ POWERPC_ 7450 - CPU_
SUBTYPE_ POWERPC_ ALL - CPU_
SUBTYPE_ PTRAUTH_ ABI - pointer authentication with versioned ABI
- CPU_
SUBTYPE_ SPARC_ ALL - CPU_
SUBTYPE_ UVAXI - CPU_
SUBTYPE_ UVAXII - CPU_
SUBTYPE_ UVAXIII - CPU_
SUBTYPE_ VAX730 - CPU_
SUBTYPE_ VAX750 - CPU_
SUBTYPE_ VAX780 - CPU_
SUBTYPE_ VAX785 - CPU_
SUBTYPE_ VAX8200 - CPU_
SUBTYPE_ VAX8500 - CPU_
SUBTYPE_ VAX8600 - CPU_
SUBTYPE_ VAX8650 - CPU_
SUBTYPE_ VAX8800 - CPU_
SUBTYPE_ VAX_ ALL - CPU_
SUBTYPE_ X86_ 64_ ALL - CPU_
SUBTYPE_ X86_ 64_ H - Haswell feature subset
- CPU_
SUBTYPE_ X86_ ALL - CPU_
SUBTYPE_ X86_ ARCH1 - CPU_
SUBTYPE_ XEON - CPU_
SUBTYPE_ XEON_ MP - CPU_
TYPE_ ALPHA - CPU_
TYPE_ ANY - CPU_
TYPE_ ARM - CPU_
TYPE_ ARM64 - CPU_
TYPE_ ARM64_ 32 - CPU_
TYPE_ HPPA - CPU_
TYPE_ I860 - CPU_
TYPE_ MC680 X0 - CPU_
TYPE_ MC88000 - CPU_
TYPE_ MC98000 - CPU_
TYPE_ MIPS - CPU_
TYPE_ POWERPC - CPU_
TYPE_ POWERP C64 - CPU_
TYPE_ SPARC - CPU_
TYPE_ VAX - CPU_
TYPE_ X86 - CPU_
TYPE_ X86_ 64 - DICE_
KIND_ ABS_ JUMP_ TABL E32 - DICE_
KIND_ DATA - DICE_
KIND_ JUMP_ TABL E8 - DICE_
KIND_ JUMP_ TABL E16 - DICE_
KIND_ JUMP_ TABL E32 - DYNAMIC_
LOOKUP_ ORDINAL - EXECUTABLE_
ORDINAL - EXPORT_
SYMBOL_ FLAGS_ KIND_ ABSOLUTE - EXPORT_
SYMBOL_ FLAGS_ KIND_ MASK - EXPORT_
SYMBOL_ FLAGS_ KIND_ REGULAR - EXPORT_
SYMBOL_ FLAGS_ KIND_ THREAD_ LOCAL - EXPORT_
SYMBOL_ FLAGS_ REEXPORT - EXPORT_
SYMBOL_ FLAGS_ STUB_ AND_ RESOLVER - EXPORT_
SYMBOL_ FLAGS_ WEAK_ DEFINITION - FAT_
CIGAM - NXSwapLong(FAT_MAGIC)
- FAT_
CIGAM_ 64 - NXSwapLong(FAT_MAGIC_64)
- FAT_
MAGIC - FAT_
MAGIC_ 64 - GENERIC_
RELOC_ LOCAL_ SECTDIFF - GENERIC_
RELOC_ PAIR - Only follows a GENERIC_RELOC_SECTDIFF
- GENERIC_
RELOC_ PB_ LA_ PTR - prebound lazy pointer
- GENERIC_
RELOC_ SECTDIFF - GENERIC_
RELOC_ TLV - thread local variables
- GENERIC_
RELOC_ VANILLA - generic relocation as described above
- INDIRECT_
SYMBOL_ ABS - INDIRECT_
SYMBOL_ LOCAL - LC_
BUILD_ VERSION - build for platform min OS version
- LC_
CODE_ SIGNATURE - local of code signature
- LC_
DATA_ IN_ CODE - table of non-instructions in __text
- LC_
DYLD_ CHAINED_ FIXUPS - used with
LinkeditDataCommand
- LC_
DYLD_ ENVIRONMENT - string for dyld to treat like environment variable
- LC_
DYLD_ EXPORTS_ TRIE - used with
LinkeditDataCommand
, payload is trie - LC_
DYLD_ INFO - compressed dyld information
- LC_
DYLD_ INFO_ ONLY - compressed dyld information only
- LC_
DYLIB_ CODE_ SIGN_ DRS - Code signing DRs copied from linked dylibs
- LC_
DYSYMTAB - dynamic link-edit symbol table info
- LC_
ENCRYPTION_ INFO - encrypted segment information
- LC_
ENCRYPTION_ INFO_ 64 - 64-bit encrypted segment information
- LC_
FILESET_ ENTRY - used with
FilesetEntryCommand
- LC_
FUNCTION_ STARTS - compressed table of function start addresses
- LC_
FVMFILE - fixed VM file inclusion (internal use)
- LC_
IDENT - object identification info (obsolete)
- LC_
IDFVMLIB - fixed VM shared library identification
- LC_
ID_ DYLIB - dynamically linked shared lib ident
- LC_
ID_ DYLINKER - dynamic linker identification
- LC_
LAZY_ LOAD_ DYLIB - delay load of dylib until first use
- LC_
LINKER_ OPTIMIZATION_ HINT - optimization hints in MH_OBJECT files
- LC_
LINKER_ OPTION - linker options in MH_OBJECT files
- LC_
LOADFVMLIB - load a specified fixed VM shared library
- LC_
LOAD_ DYLIB - load a dynamically linked shared library
- LC_
LOAD_ DYLINKER - load a dynamic linker
- LC_
LOAD_ UPWARD_ DYLIB - load upward dylib
- LC_
LOAD_ WEAK_ DYLIB - load a dynamically linked shared library that is allowed to be missing (all symbols are weak imported).
- LC_MAIN
- replacement for LC_UNIXTHREAD
- LC_NOTE
- arbitrary data included within a Mach-O file
- LC_
PREBIND_ CKSUM - prebind checksum
- LC_
PREBOUND_ DYLIB - modules prebound for a dynamically linked shared library
- LC_
PREPAGE - prepage command (internal use)
- LC_
REEXPORT_ DYLIB - load and re-export dylib
- LC_
REQ_ DYLD - LC_
ROUTINES - image routines
- LC_
ROUTINES_ 64 - 64-bit image routines
- LC_
RPATH - runpath additions
- LC_
SEGMENT - segment of this file to be mapped
- LC_
SEGMENT_ 64 - 64-bit segment of this file to be mapped
- LC_
SEGMENT_ SPLIT_ INFO - local of info to split segments
- LC_
SOURCE_ VERSION - source version used to build binary
- LC_
SUB_ CLIENT - sub client
- LC_
SUB_ FRAMEWORK - sub framework
- LC_
SUB_ LIBRARY - sub library
- LC_
SUB_ UMBRELLA - sub umbrella
- LC_
SYMSEG - link-edit gdb symbol table info (obsolete)
- LC_
SYMTAB - link-edit stab symbol table info
- LC_
THREAD - thread
- LC_
TWOLEVEL_ HINTS - two-level namespace lookup hints
- LC_
UNIXTHREAD - unix thread (includes a stack)
- LC_UUID
- the uuid
- LC_
VERSION_ MIN_ IPHONEOS - build for iPhoneOS min OS version
- LC_
VERSION_ MIN_ MACOSX - build for MacOSX min OS version
- LC_
VERSION_ MIN_ TVOS - build for AppleTV min OS version
- LC_
VERSION_ MIN_ WATCHOS - build for Watch min OS version
- MAX_
LIBRARY_ ORDINAL - MAX_
SECT - 1 thru 255 inclusive
- MH_
ALLMODSBOUND - indicates that this binary binds to all two-level namespace modules of its dependent libraries. only used when MH_PREBINDABLE and MH_TWOLEVEL are both set.
- MH_
ALLOW_ STACK_ EXECUTION - When this bit is set, all stacks in the task will be given stack execution privilege. Only used in MH_EXECUTE filetypes.
- MH_
APP_ EXTENSION_ SAFE - The code was linked for use in an application extension.
- MH_
BINDATLOAD - the object file’s undefined references are bound by the dynamic linker when loaded.
- MH_
BINDS_ TO_ WEAK - the final linked image uses weak symbols
- MH_
BUNDLE - dynamically bound bundle file
- MH_
CANONICAL - the binary has been canonicalized via the unprebind operation
- MH_
CIGAM - NXSwapInt(MH_MAGIC)
- MH_
CIGAM_ 64 - NXSwapInt(MH_MAGIC_64)
- MH_CORE
- core file
- MH_
DEAD_ STRIPPABLE_ DYLIB - Only for use on dylibs. When linking against a dylib that has this bit set, the static linker will automatically not create a LC_LOAD_DYLIB load command to the dylib if no symbols are being referenced from the dylib.
- MH_DSYM
- companion file with only debug sections
- MH_
DYLDLINK - the object file is input for the dynamic linker and can’t be statically link edited again
- MH_
DYLIB - dynamically bound shared library
- MH_
DYLIB_ IN_ CACHE - Only for use on dylibs. When this bit is set, the dylib is part of the dyld shared cache, rather than loose in the filesystem.
- MH_
DYLIB_ STUB - shared library stub for static linking only, no section contents
- MH_
DYLINKER - dynamic link editor
- MH_
EXECUTE - demand paged executable file
- MH_
FILESET - set of mach-o’s
- MH_
FORCE_ FLAT - the executable is forcing all images to use flat name space bindings
- MH_
FVMLIB - fixed VM shared library file
- MH_
HAS_ TLV_ DESCRIPTORS - Contains a section of type S_THREAD_LOCAL_VARIABLES
- MH_
INCRLINK - the object file is the output of an incremental link against a base file and can’t be link edited again
- MH_
KEXT_ BUNDLE - x86_64 kexts
- MH_
LAZY_ INIT - the shared library init routine is to be run lazily via catching memory faults to its writeable segments (obsolete)
- MH_
MAGIC - the mach magic number
- MH_
MAGIC_ 64 - the 64-bit mach magic number
- MH_
NLIST_ OUTOFSYNC_ WITH_ DYLDINFO - The external symbols listed in the nlist symbol table do not include all the symbols listed in the dyld info.
- MH_
NOFIXPREBINDING - do not have dyld notify the prebinding agent about this executable
- MH_
NOMULTIDEFS - this umbrella guarantees no multiple definitions of symbols in its sub-images so the two-level namespace hints can always be used.
- MH_
NOUNDEFS - the object file has no undefined references
- MH_
NO_ HEAP_ EXECUTION - When this bit is set, the OS will run the main executable with a non-executable heap even on platforms (e.g. i386) that don’t require it. Only used in MH_EXECUTE filetypes.
- MH_
NO_ REEXPORTED_ DYLIBS - When this bit is set on a dylib, the static linker does not need to examine dependent dylibs to see if any are re-exported
- MH_
OBJECT - relocatable object file
- MH_PIE
- When this bit is set, the OS will load the main executable at a random address. Only used in MH_EXECUTE filetypes.
- MH_
PREBINDABLE - the binary is not prebound but can have its prebinding redone. only used when MH_PREBOUND is not set.
- MH_
PREBOUND - the file has its dynamic undefined references prebound.
- MH_
PRELOAD - preloaded executable file
- MH_
ROOT_ SAFE - When this bit is set, the binary declares it is safe for use in processes with uid zero
- MH_
SETUID_ SAFE - When this bit is set, the binary declares it is safe for use in processes when issetugid() is true
- MH_
SIM_ SUPPORT - Allow LC_MIN_VERSION_MACOS and LC_BUILD_VERSION load commands with the platforms macOS, iOSMac, iOSSimulator, tvOSSimulator and watchOSSimulator.
- MH_
SPLIT_ SEGS - the file has its read-only and read-write segments split
- MH_
SUBSECTIONS_ VIA_ SYMBOLS - safe to divide up the sections into sub-sections via symbols for dead code stripping
- MH_
TWOLEVEL - the image is using two-level name space bindings
- MH_
WEAK_ DEFINES - the final linked image contains external weak symbols
- NO_SECT
- symbol is not in any section
- N_ABS
- absolute, n_sect == NO_SECT
- N_
ALT_ ENTRY - N_
ARM_ THUMB_ DEF - symbol is a Thumb function (ARM)
- N_AST
- AST file path: name,,NO_SECT,0,0
- N_BCOMM
- begin common: name,,NO_SECT,0,0
- N_BINCL
- include file beginning: name,,NO_SECT,0,sum
- N_BNSYM
- begin nsect sym: 0,,n_sect,0,address
- N_
DESC_ DISCARDED - symbol is discarded
- N_ECOML
- end common (local name): 0,,n_sect,0,address
- N_ECOMM
- end common: name,,n_sect,0,0
- N_EINCL
- include file end: name,,NO_SECT,0,0
- N_ENSYM
- end nsect sym: 0,,n_sect,0,address
- N_ENTRY
- alternate entry: name,,n_sect,linenumber,address
- N_EXCL
- deleted include file: name,,NO_SECT,0,sum
- N_EXT
- external symbol bit, set for external symbols
- N_FNAME
- procedure name (f77 kludge): name,,NO_SECT,0,0
- N_FUN
- procedure: name,,n_sect,linenumber,address
- N_GSYM
- global symbol: name,,NO_SECT,type,0
- N_INDR
- indirect
- N_LBRAC
- left bracket: 0,,NO_SECT,nesting level,address
- N_LCSYM
- .lcomm symbol: name,,n_sect,type,address
- N_LENG
- second stab entry with length information
- N_LSYM
- local sym: name,,NO_SECT,type,offset
- N_
NO_ DEAD_ STRIP - symbol is not to be dead stripped
- N_
OLEVEL - compiler -O level: name,,NO_SECT,0,0
- N_OPT
- emitted with gcc2_compiled and in gcc source
- N_OSO
- object file name: name,,0,0,st_mtime
- N_
PARAMS - compiler parameters: name,,NO_SECT,0,0
- N_PBUD
- prebound undefined (defined in a dylib)
- N_PC
- global pascal symbol: name,,NO_SECT,subtype,line
- N_PEXT
- private external symbol bit
- N_PSYM
- parameter: name,,NO_SECT,type,offset
- N_RBRAC
- right bracket: 0,,NO_SECT,nesting level,address
- N_
REF_ TO_ WEAK - reference to a weak symbol
- N_RSYM
- register sym: name,,NO_SECT,type,register
- N_SECT
- defined in section number n_sect
- N_SLINE
- src line: 0,,n_sect,linenumber,address
- N_SO
- source file name: name,,n_sect,0,address
- N_SOL
- #included file name: name,,n_sect,0,address
- N_SSYM
- structure elt: name,,NO_SECT,type,struct_offset
- N_STAB
- if any of these bits set, a symbolic debugging entry
- N_STSYM
- static symbol: name,,n_sect,type,address
- N_
SYMBOL_ RESOLVER - N_TYPE
- mask for the type bits
- N_UNDF
- undefined, n_sect == NO_SECT
- N_
VERSION - compiler version: name,,NO_SECT,0,0
- N_
WEAK_ DEF - coalesced symbol is a weak definition
- N_
WEAK_ REF - symbol is weak referenced
- PLATFORM_
BRIDGEOS - PLATFORM_
DRIVERKIT - PLATFORM_
IOS - PLATFORM_
IOSSIMULATOR - PLATFORM_
MACCATALYST - PLATFORM_
MACOS - PLATFORM_
TVOS - PLATFORM_
TVOSSIMULATOR - PLATFORM_
WATCHOS - PLATFORM_
WATCHOSSIMULATOR - PLATFORM_
XROS - PLATFORM_
XROSSIMULATOR - PPC_
RELOC_ BR14 - 14 bit branch displacement (to a word address)
- PPC_
RELOC_ BR24 - 24 bit branch displacement (to a word address)
- PPC_
RELOC_ HA16 - Same as the RELOC_HI16 except the low 16 bits and the high 16 bits are added together with the low 16 bits sign extended first. This means if bit 15 of the low 16 bits is set the high 16 bits stored in the instruction will be adjusted.
- PPC_
RELOC_ HA16_ SECTDIFF - PPC_
RELOC_ HI16 - a PAIR follows with the low half
- PPC_
RELOC_ HI16_ SECTDIFF - section difference forms of above. a PAIR
- PPC_
RELOC_ JBSR - PPC_
RELOC_ LO14 - Same as the LO16 except that the low 2 bits are not stored in the instruction and are always zero. This is used in double word load/store instructions.
- PPC_
RELOC_ LO16 - a PAIR follows with the high half
- PPC_
RELOC_ LO14_ SECTDIFF - PPC_
RELOC_ LO16_ SECTDIFF - follows these with subtract symbol value
- PPC_
RELOC_ LOCAL_ SECTDIFF - like PPC_RELOC_SECTDIFF, but the symbol referenced was local.
- PPC_
RELOC_ PAIR - the second relocation entry of a pair
- PPC_
RELOC_ PB_ LA_ PTR - prebound lazy pointer
- PPC_
RELOC_ SECTDIFF - a PAIR follows with subtract symbol value
- PPC_
RELOC_ VANILLA - generic relocation as described above
- REBASE_
IMMEDIATE_ MASK - REBASE_
OPCODE_ ADD_ ADDR_ IMM_ SCALED - REBASE_
OPCODE_ ADD_ ADDR_ ULEB - REBASE_
OPCODE_ DONE - REBASE_
OPCODE_ DO_ REBASE_ ADD_ ADDR_ ULEB - REBASE_
OPCODE_ DO_ REBASE_ IMM_ TIMES - REBASE_
OPCODE_ DO_ REBASE_ ULEB_ TIMES - REBASE_
OPCODE_ DO_ REBASE_ ULEB_ TIMES_ SKIPPING_ ULEB - REBASE_
OPCODE_ MASK - REBASE_
OPCODE_ SET_ SEGMENT_ AND_ OFFSET_ ULEB - REBASE_
OPCODE_ SET_ TYPE_ IMM - REBASE_
TYPE_ POINTER - REBASE_
TYPE_ TEXT_ ABSOLUT E32 - REBASE_
TYPE_ TEXT_ PCRE L32 - REFERENCED_
DYNAMICALLY - REFERENCE_
FLAG_ DEFINED - REFERENCE_
FLAG_ PRIVATE_ DEFINED - REFERENCE_
FLAG_ PRIVATE_ UNDEFINED_ LAZY - REFERENCE_
FLAG_ PRIVATE_ UNDEFINED_ NON_ LAZY - REFERENCE_
FLAG_ UNDEFINED_ LAZY - REFERENCE_
FLAG_ UNDEFINED_ NON_ LAZY - REFERENCE_
TYPE - R_ABS
- absolute relocation type for Mach-O files
- R_
SCATTERED - Bit set in
Relocation::r_word0
for scattered relocations. - SECTION_
ATTRIBUTES - 24 section attributes
- SECTION_
ATTRIBUTES_ SYS - system setable attributes
- SECTION_
ATTRIBUTES_ USR - User setable attributes
- SECTION_
TYPE - 256 section types
- SECT_
BSS - the real uninitialized data section no padding
- SECT_
COMMON - the section common symbols are allocated in by the link editor
- SECT_
DATA - the real initialized data section no padding, no bss overlap
- SECT_
FVMLIB_ INIT0 - the fvmlib initialization section
- SECT_
FVMLIB_ INIT1 - the section following the fvmlib initialization section
- SECT_
ICON_ HEADER - the icon headers
- SECT_
ICON_ TIFF - the icons in tiff format
- SECT_
OBJC_ MODULES - module information
- SECT_
OBJC_ REFS - string table
- SECT_
OBJC_ STRINGS - string table
- SECT_
OBJC_ SYMBOLS - symbol table
- SECT_
TEXT - the real text part of the text section no headers, and no padding
- SEG_
DATA - the tradition UNIX data segment
- SEG_
ICON - the icon segment
- SEG_
IMPORT - the segment for the self (dyld) modifying code stubs that has read, write and execute permissions
- SEG_
LINKEDIT - the segment containing all structs created and maintained by the link editor. Created with -seglinkedit option to ld(1) for MH_EXECUTE and FVMLIB file types only
- SEG_
LINKINFO - the segment overlapping with linkedit containing linking information
- SEG_
OBJC - objective-C runtime segment
- SEG_
PAGEZERO - the pagezero segment which has no protections and catches NULL references for MH_EXECUTE files
- SEG_
TEXT - the tradition UNIX text segment
- SEG_
UNIXSTACK - the unix stack segment
- SELF_
LIBRARY_ ORDINAL - SG_
FVMLIB - this segment is the VM that is allocated by a fixed VM library, for overlap checking in the link editor
- SG_
HIGHVM - the file contents for this segment is for the high part of the VM space, the low part is zero filled (for stacks in core files)
- SG_
NORELOC - this segment has nothing that was relocated in it and nothing relocated to it, that is it maybe safely replaced without relocation
- SG_
PROTECTED_ VERSION_ 1 - This segment is protected. If the segment starts at file offset 0, the first page of the segment is not protected. All other pages of the segment are protected.
- SG_
READ_ ONLY - This segment is made read-only after fixups
- S_
4BYTE_ LITERALS - section with only 4 byte literals
- S_
8BYTE_ LITERALS - section with only 8 byte literals
- S_
16BYTE_ LITERALS - section with only 16 byte literals
- S_
ATTR_ DEBUG - a debug section
- S_
ATTR_ EXT_ RELOC - section has external relocation entries
- S_
ATTR_ LIVE_ SUPPORT - blocks are live if they reference live blocks
- S_
ATTR_ LOC_ RELOC - section has local relocation entries
- S_
ATTR_ NO_ DEAD_ STRIP - no dead stripping
- S_
ATTR_ NO_ TOC - section contains coalesced symbols that are not to be in a ranlib table of contents
- S_
ATTR_ PURE_ INSTRUCTIONS - section contains only true machine instructions
- S_
ATTR_ SELF_ MODIFYING_ CODE - Used with i386 code stubs written on by dyld
- S_
ATTR_ SOME_ INSTRUCTIONS - section contains some machine instructions
- S_
ATTR_ STRIP_ STATIC_ SYMS - ok to strip static symbols in this section in files with the MH_DYLDLINK flag
- S_
COALESCED - section contains symbols that are to be coalesced
- S_
CSTRING_ LITERALS - section with only literal C strings
- S_
DTRACE_ DOF - section contains DTrace Object Format
- S_
GB_ ZEROFILL - zero fill on demand section (that can be larger than 4 gigabytes)
- S_
INIT_ FUNC_ OFFSETS - 32-bit offsets to initializers
- S_
INTERPOSING - section with only pairs of function pointers for interposing
- S_
LAZY_ DYLIB_ SYMBOL_ POINTERS - section with only lazy symbol pointers to lazy loaded dylibs
- S_
LAZY_ SYMBOL_ POINTERS - section with only lazy symbol pointers
- S_
LITERAL_ POINTERS - section with only pointers to literals
- S_
MOD_ INIT_ FUNC_ POINTERS - section with only function pointers for initialization
- S_
MOD_ TERM_ FUNC_ POINTERS - section with only function pointers for termination
- S_
NON_ LAZY_ SYMBOL_ POINTERS - section with only non-lazy symbol pointers
- S_
REGULAR - regular section
- S_
SYMBOL_ STUBS - section with only symbol stubs, byte size of stub in the reserved2 field
- S_
THREAD_ LOCAL_ INIT_ FUNCTION_ POINTERS - functions to call to initialize TLV values
- S_
THREAD_ LOCAL_ REGULAR - template of initial values for TLVs
- S_
THREAD_ LOCAL_ VARIABLES - TLV descriptors
- S_
THREAD_ LOCAL_ VARIABLE_ POINTERS - pointers to TLV descriptors
- S_
THREAD_ LOCAL_ ZEROFILL - template of initial values for TLVs
- S_
ZEROFILL - zero fill on demand section
- TOOL_
CLANG - TOOL_LD
- TOOL_
SWIFT - VM_
PROT_ EXECUTE - execute permission
- VM_
PROT_ READ - read permission
- VM_
PROT_ WRITE - write permission
- X86_
64_ RELOC_ BRANCH - a CALL/JMP instruction with 32-bit displacement
- X86_
64_ RELOC_ GOT - other GOT references
- X86_
64_ RELOC_ GOT_ LOAD - a MOVQ load of a GOT entry
- X86_
64_ RELOC_ SIGNED - for signed 32-bit displacement
- X86_
64_ RELOC_ SIGNED_ 1 - for signed 32-bit displacement with a -1 addend
- X86_
64_ RELOC_ SIGNED_ 2 - for signed 32-bit displacement with a -2 addend
- X86_
64_ RELOC_ SIGNED_ 4 - for signed 32-bit displacement with a -4 addend
- X86_
64_ RELOC_ SUBTRACTOR - must be followed by a X86_64_RELOC_UNSIGNED
- X86_
64_ RELOC_ TLV - for thread local variables
- X86_
64_ RELOC_ UNSIGNED - for absolute addresses