F%-      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,=/symbol table index and count for local symbols <symbol table index and count for externally defined symbols 3symbol table index and count for undefined symbols ,list of symbol index and module index pairs modules *list of external reference symbol indices  list of indirect symbol indices external locations local relocations bindicates if the item to be relocated is part of an instruction containing PC-relative addressing alength of item containing address to be relocated (literal form (4) instead of power of two (2)) relocation type 6offset from start of section to place to be relocated raddress of the relocatable expression for the item in the file that needs to be updated if the address is changed 6offset from start of section to place to be relocated #index into symbol or section table bindicates if the item to be relocated is part of an instruction containing PC-relative addressing alength of item containing address to be relocated (literal form (4) instead of power of two (2)) ^indicates whether symbolnum is an index into the symbol table (True) or section table (False) relocation type $Platform-specific relocation types.  !"#$%&'()*+,-./0123456789: module name string table offset ;M(initial, count) pair of symbol table indices for externally defined symbols <E(initial, count) pair of symbol table indices for referenced symbols =@(initial, count) pair of symbol table indices for local symbols >P(initial, count) pair of symbol table indices for externally referenced symbols ?w(initial, count) pair of symbol table indices for the index of the module init section and the number of init pointers @w(initial, count) pair of symbol table indices for the index of the module term section and the number of term pointers Avstatically linked address of the start of the data for this module in the __module_info section in the __OBJC segment Binumber of bytes of data for this module that are used in the __module_info section in the __OBJC segment CDE symbol name F symbol type Gtrue if limited global scope Htrue if external symbol I,section index where the symbol can be found J_for stab entries, Left Word16 is the uninterpreted flags field, otherwise Right [REFERENCE_FLAG] are the symbol flags KHsymbol value, 32-bit symbol values are promoted to 64-bit for simpliciy LMfor two-level mach-o objects, specifies the index of the library in which this symbol is defined. zero specifies current image. Nbindicates the symbol is a weak definition, will be overridden by a strong definition at link-time OQindicates the symbol is a weak reference, set to 0 if definition cannot be found P6set for all symbols referenced by dynamic loader APIs Q\reference to an external lazy symbol and visible only to modules within this shared library R`reference to an external non-lazy symbol and visible only to modules within this shared library SXsymbol is defined in this module and visible only to modules within this shared library T!symbol is defined in this module U%reference to an external lazy symbol V)reference to an external non-lazy symbol WX0stab global pascal symbol: name,,0,subtype,line Y/stab second stab entry with length information Z2stab end common (local name): 0,,n_sect,0,address ["stab end common: name,,n_sect,0,0 \stab begin common: name,,0,0,0 ]/stab right bracket: 0,,0,nesting level,address ^)stab deleted include file: name,,0,0,sum _.stab left bracket: 0,,0,nesting level,address `6stab alternate entry: name,,n_sect,linenumber,address a#stab include file end: name,,0,0,0 b$stab parameter: name,,0,type,offset c$stab compiler -O level: name,,0,0,0 d#stab compiler version: name,,0,0,0 e&stab compiler parameters: name,,0,0,0 fstab #+included file name: name,,n_sect,0,address g+stab include file beginning: name,,0,0,sum h$stab local sym: name,,0,type,offset i*stab object file name: name,,0,0,st_mtime j.stab source file name: name,,n_sect,0,address k/stab structure elt: name,,0,type,struct_offset l(stab end nsect sym: 0,,n_sect,0,address m,stab src line: 0,,n_sect,linenumber,address n)stab register sym: name,,0,type,register o2stab emitted with gcc2_compiled and in gcc source p*stab begin nsect sym: 0,,n_sect,0,address q.stab .lcomm symbol: name,,n_sect,type,address r.stab static symbol: name,,n_sect,type,address s0stab procedure: name,,n_sect,linenumber,address t.stab procedure name (f77 kludge): name,,0,0,0 u#stab global symbol: name,,0,type,0 vxsymbol is defined to be the same as another symbol. n_value is a string table offset indicating the name of that symbol wXsymbol is undefined and the image is using a prebound value for the symbol, n_sect is 0 x$symbol is defined in section n_sect y7absolute symbol, does not need relocation, n_sect is 0 zundefined symbol, n_sect is 0 {|%section has local relocation entries }(section has external relocation entries ~+section contains soem machine instructions a debug section -used with i386 code stubs written on by dyld .blocks are live if they reference live blocks no dead stripping Nok to strip static symbols in this section in files with the MH_DYLDLINK flag Ssetion contains coalesced symbols that are not to be in a ranlib table of contents 0section contains only true machine instructions =section with only lazy symbol pointers to lazy loaded dylibs &section contains DTrace Object Format #section with only 16 byte literals =section with only pairs of function pointers for interposing Bzero fill on demand section (that can be larger than 4 gigabytes) 2section contains symbols that are to be coalesced 4section with only function pointers for termination 7section with only function pointers for initialization Hsection with only symbol stubs, bte size of stub in the reserved2 field 'section with only lazy symbol pointers +section with only non-lazy symbol pointers 'section with only pointers to literals "section with only 8 byte literals "section with only 4 byte literals $section with only literal C strings zero fill on demand section regular section name of section -name of segment that should own this section "virtual memoy address for section size of section Malignment required by section (literal form, not power of two, e.g. 8 not 3) relocations for this section type of section user attributes of section system attibutes of section This segment has nothing that was relocated in it and nothing relocated to it, that is it may be safely replaced without relocation. 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).  segment name ,virtual address where the segment is loaded size of segment at runtime file offset of the segment size of segment in file "maximum virtual memory protection "initial virtual memory protection segment flags sections owned by this segment execute permission write permission read permission  local of info to split segments local of code signature runpath additions (path) Othe uuid for an image or its corresponding dsym file (8 element list of bytes) a64-bit image routines (virtual address of initialization routine, module index where it resides) &64-bit segment of this file to mapped load a dynamically linked shared library that is allowed to be missing (symbols are weak imported) (name, timestamp, current version, compatibility version) prebind checksum (checksum) Utwo-level namespace lookup hints (list of (subimage index, symbol table index) pairs sub library (name) sub client (name) sub umbrella (name) sub framework (name) Zimage routines (virtual address of initialization routine, module index where it resides) Xmodules prebound for a dynamically linked shared library (name, list of module indices) 7dynamic linker identification (name of dynamic linker) /load a dynamic linker (name of dynamic linker) ^dynamically linked shared lib ident (name, timestamp, current version, compatibility version) cload a dynamically linked shared library (name, timestamp, current version, compatibility version) $dynamic link-edit symbol table info Hunix thread state information (includes a stack) (list of (flavor, [long] pairs) 0thread state information (list of (flavor, [long] ) pairs) ,static link-edit symbol table and stab info "segment of this file to be mapped tWhen this bit is set, the OS will load the main executable at a random address. Only used in MH_EXECUTE filetypes. |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 dWhen this bit is set, the binary declares it is safe for use in processes when issetugid() is true YWhen this bit is set, the binary declares it is safe for use in processes with uid zero {When this bit is set, all stacks in the task will be given stack execution privilege. Only used in MH_EXECUTE filetypes. )the final linked image uses weak symbols 6the final linked image contains external weak symbols >the binary has been canonicalized via the unprebind operation Usafe to divide up the sections into sub-sections via symbols for dead code stripping 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. fthe binary is not prebound but can have its prebinding redone. only used when MH_PREBOUND is not set. Cdo not have dyld notify the prebinding agent about this executable this umbrella guarantees no multiple defintions of symbols in its sub-images so the two-level namespace hints can always be used. Ethe executable is forcing all images to use flat name space bindings 1the image is using two-level name space bindings 9the file has its read-only and read-write segments split 8the file has its dynamic undefined references prebound. the object file'Ds undefined references are bound by the dynamic linker when loaded. 7the object file is input for the dynamic linker and can' t be staticly link edited again Pthe object file is the output of an incremental link against a base file and can't be link edited again ,the object file has no undefined references )companion file with only debug. sections Bshared library stub for static. linking only, no section contents dynamically bound bundle file dynamic link editor !dynamically bound shared library preloaded executable file  core file demand paged executable file relocatable object file Header information. 2List of load commands describing Mach-O contents. #CPU family the Mach-O executes on. *Specific CPU type the Mach-O executes on. Type of Mach-o file. Flags.       !"#$%&'()*+-./0123456789,;Parse a ByteString of a Mach-O object into a Macho record. :;<-  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-,&+*)('%$#"!      {~}|Wzyxwvutsrqponmlkjihgfedcba`_^]\[ZYXLVUTSRQPONMCDEFGHIJK89:;<=>?@AB76543210/.-,+*)('&%$#"!     -      76543210/.-,+*)('&%$#"!  !"#$%&'()*+,-./012345678 9:;<=>?@AB9:;<=>?@ABCDEFGHIJKDEFGHIJKL VUTSRQPONMMNOPQRSTUVW#zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{~}||}~   ,%$#"!            !"#$%&+*)(''()*+,=      !"#$%&'()*+,-./01234567899:;<=>?@ABCCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'(()*+,-./01234567 macho-0.22 Data.MachoMachoDynamicSymbolTable localSyms extDefSyms undefSyms tocEntriesmodules extRefSyms indirectSymsextRelslocRels RelocationScatteredRelocationInfors_pcrel rs_lengthrs_type rs_addressrs_valueRelocationInfo ri_address ri_symbolnumri_pcrel ri_length ri_externri_typeR_TYPEPPC_RELOC_LO14_SECTDIFFPPC_RELOC_JBSRPPC_RELOC_HA16_SECTDIFFPPC_RELOC_LO16_SECTDIFFPPC_RELOC_HI16_SECTDIFFPPC_RELOC_PB_LA_PTRPPC_RELOC_LOCAL_SECTDIFFPPC_RELOC_SECTDIFFPPC_RELOC_LO14PPC_RELOC_HA16PPC_RELOC_LO16PPC_RELOC_HI16PPC_RELOC_BR24PPC_RELOC_BR14PPC_RELOC_PAIRPPC_RELOC_VANILLAX86_64_RELOC_SIGNED_4X86_64_RELOC_SIGNED_2X86_64_RELOC_SIGNED_1X86_64_RELOC_SUBTRACTORX86_64_RELOC_UNSIGNEDX86_64_RELOC_SIGNEDX86_64_RELOC_GOTX86_64_RELOC_GOT_LOADX86_64_RELOC_BRANCHGENERIC_RELOC_PB_LA_PTRGENERIC_RELOC_LOCAL_SECTDIFFGENERIC_RELOC_SECTDIFFGENERIC_RELOC_PAIRGENERIC_RELOC_VANILLA DylibModuledylib_module_name_offsetdylib_ext_def_sym dylib_ref_symdylib_local_sym dylib_ext_rel dylib_init dylib_termdylib_objc_module_info_addrdylib_objc_module_info_size MachoSymbolsym_namesym_typesym_pextsym_extsym_sect sym_flags sym_valueREFERENCE_FLAGLIBRARY_ORDINAL N_WEAK_DEF N_WEAK_REFREFERENCED_DYNAMICALLY%REFERENCE_FLAG_PRIVATE_UNDEFINED_LAZY)REFERENCE_FLAG_PRIVATE_UNDEFINED_NON_LAZYREFERENCE_FLAG_PRIVATE_DEFINEDREFERENCE_FLAG_DEFINEDREFERENCE_FLAG_UNDEFINED_LAZY!REFERENCE_FLAG_UNDEFINED_NON_LAZYN_TYPEN_PCN_LENGN_ECOMLN_ECOMMN_BCOMMN_RBRACN_EXCLN_LBRACN_ENTRYN_EINCLN_PSYMN_OLEVEL N_VERSIONN_PARAMSN_SOLN_BINCLN_LSYMN_OSON_SON_SSYMN_ENSYMN_SLINEN_RSYMN_OPTN_BNSYMN_LCSYMN_STSYMN_FUNN_FNAMEN_GSYMN_INDRN_PBUDN_SECTN_ABSN_UNDF S_SYS_ATTRS_ATTR_LOC_RELOCS_ATTR_EXT_RELOCS_ATTR_SOME_INSTRUCTIONS S_USER_ATTR S_ATTR_DEBUGS_ATTR_SELF_MODIFYING_CODES_ATTR_LIVE_SUPPORTS_ATTR_NO_DEAD_STRIPS_ATTR_STRIP_STATIC_SYMS S_ATTR_NO_TOCS_ATTR_PURE_INSTRUCTIONSS_TYPES_LAZY_DYLIB_SYMBOL_POINTERS S_DTRACE_DOFS_16BYTE_LITERALS S_INTERPOSING S_GB_ZEROFILL S_COALESCEDS_MOD_TERM_FUNC_POINTERSS_MOD_INIT_FUNC_POINTERSS_SYMBOL_STUBSS_LAZY_SYMBOL_POINTERSS_NON_LAZY_SYMBOL_POINTERSS_LITERAL_POINTERSS_8BYTE_LITERALSS_4BYTE_LITERALSS_CSTRING_LITERALS S_ZEROFILL S_REGULAR MachoSection sec_sectname sec_segnamesec_addrsec_size sec_align sec_relocssec_typesec_user_attrs sec_sys_attrsSG_FLAG SG_NORELOC SG_HIGHVM MachoSegment seg_segname seg_vmaddr seg_vmsize seg_fileoff seg_filesize seg_maxprot seg_initprot seg_flags seg_sectionsVM_PROTVM_PROT_EXECUTE VM_PROT_WRITE VM_PROT_READ LC_COMMANDLC_SEGMENT_SPLIT_INFOLC_CODE_SIGNATURELC_RPATHLC_UUIDLC_ROUTINES_64 LC_SEGMENT_64LC_LOAD_WEAK_DYLIBLC_PREBIND_CKSUMLC_TWOLEVEL_HINTSLC_SUB_LIBRARY LC_SUB_CLIENTLC_SUB_UMBRELLALC_SUB_FRAMEWORK LC_ROUTINESLC_PREBOUND_DYLIBLC_ID_DYLINKERLC_LOAD_DYLINKER LC_ID_DYLIB LC_LOAD_DYLIB LC_DYSYMTAB LC_UNIXTHREAD LC_THREAD LC_SYMTAB LC_SEGMENTMH_FLAGSMH_PIEMH_NO_REEXPORTED_DYLIBSMH_SETUID_SAFE MH_ROOT_SAFEMH_ALLOW_STACK_EXECUTIONMH_BINDS_TO_WEAKMH_WEAK_DEFINES MH_CANONICALMH_SUBSECTIONS_VIA_SYMBOLSMH_ALLMODSBOUNDMH_PREBINDABLEMH_NOFIXPREBINDINGMH_NOMULTIDEFS MH_FORCE_FLAT MH_TWOLEVEL MH_SPLIT_SEGS MH_PREBOUND MH_BINDATLOAD MH_DYLDLINK MH_INCRLINK MH_NOUNDEFS MH_FILETYPEMH_DSYM MH_DYLIB_STUB MH_BUNDLE MH_DYLINKERMH_DYLIB MH_PRELOADMH_CORE MH_EXECUTE MH_OBJECTMachom_header m_commands MachoHeader mh_cputype mh_cpusubtype mh_filetypemh_flags CPU_SUBTYPECPU_SUBTYPE_ARM_V6CPU_SUBTYPE_ARM_V4TCPU_SUBTYPE_ARM_ALLCPU_SUBTYPE_POWERPC_970CPU_SUBTYPE_POWERPC_7450CPU_SUBTYPE_POWERPC_7400CPU_SUBTYPE_POWERPC_750CPU_SUBTYPE_POWERPC_620CPU_SUBTYPE_POWERPC_604eCPU_SUBTYPE_POWERPC_604CPU_SUBTYPE_POWERPC_603evCPU_SUBTYPE_POWERPC_603eCPU_SUBTYPE_POWERPC_603CPU_SUBTYPE_POWERPC_602CPU_SUBTYPE_POWERPC_601CPU_SUBTYPE_POWERPC_ALLCPU_SUBTYPE_X86_ARCH1CPU_SUBTYPE_X86_64_ALLCPU_SUBTYPE_X86_ALLCPU_SUBTYPE_INTEL_MODEL_ALLCPU_SUBTYPE_INTEL_MODELCPU_SUBTYPE_INTEL_FAMILY_MAXCPU_SUBTYPE_INTEL_FAMILYCPU_SUBTYPE_XEON_MPCPU_SUBTYPE_XEONCPU_SUBTYPE_ITANIUM_2CPU_SUBTYPE_ITANIUMCPU_SUBTYPE_PENTIUM_4_MCPU_SUBTYPE_PENTIUM_4CPU_SUBTYPE_PENTIUM_MCPU_SUBTYPE_PENTIUM_3_XEONCPU_SUBTYPE_PENTIUM_3_MCPU_SUBTYPE_PENTIUM_3CPU_SUBTYPE_CELERON_MOBILECPU_SUBTYPE_CELERONCPU_SUBTYPE_PENTII_M5CPU_SUBTYPE_PENTII_M3CPU_SUBTYPE_PENTPROCPU_SUBTYPE_PENTCPU_SUBTYPE_486SXCPU_SUBTYPE_486CPU_SUBTYPE_386CPU_SUBTYPE_I386_ALLCPU_SUBTYPE_INTELCPU_TYPECPU_TYPE_POWERPC64CPU_TYPE_POWERPC CPU_TYPE_ARMCPU_TYPE_X86_64 CPU_TYPE_X86 parseMacho MachoReaderis64bit getWord16 getWord32 getWord64bitfieldMH_MAGIC MH_CIGAM64 MH_CIGAM32 MH_MAGIC64 MH_MAGIC32getMachoHeadergetMachHeaderFlagsgetDylibCommandgetLinkEditCommand