package owee
-
owee
Legend:
Library
Module
Module type
Parameter
Class
Class type
Library
Module
Module type
Parameter
Class
Class type
val string_of_magic : magic -> string
type cpu_subtype = [
|
`Intel
|
`I386_ALL
|
`I386
|
`I486
|
`I486SX
|
`PENT
|
`PENTPRO
|
`PENTII_M3
|
`PENTII_M5
|
`CELERON
|
`CELERON_MOBILE
|
`PENTIUM_3
|
`PENTIUM_3_M
|
`PENTIUM_3_XEON
|
`PENTIUM_M
|
`PENTIUM_4
|
`PENTIUM_4_M
|
`ITANIUM
|
`ITANIUM_2
|
`XEON
|
`XEON_MP
|
`INTEL_FAMILY
|
`INTEL_FAMILY_MAX
|
`INTEL_MODEL
|
`INTEL_MODEL_ALL
|
`X86_ALL
|
`X86_64_ALL
|
`X86_ARCH1
|
`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
|
unknown
]
type file_type = [
|
`OBJECT
|
`EXECUTE
|
`CORE
|
`PRELOAD
|
`DYLIB
|
`DYLINKER
|
`BUNDLE
|
`DYLIB_STUB
|
`DSYM
|
unknown
]
type header_flag = [
|
`NOUNDEFS
|
`INCRLINK
|
`DYLDLINK
|
`BINDATLOAD
|
`PREBOUND
|
`SPLIT_SEGS
|
`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
]
type header = {
magic : magic;
cpu_type : cpu_type;
cpu_subtype : cpu_subtype;
file_type : file_type;
flags : header_flag list;
}
type reloc_type = [
|
`GENERIC_RELOC_VANILLA
|
`GENERIC_RELOC_PAIR
|
`GENERIC_RELOC_SECTDIFF
|
`GENERIC_RELOC_LOCAL_SECTDIFF
|
`GENERIC_RELOC_PB_LA_PTR
|
`X86_64_RELOC_BRANCH
|
`X86_64_RELOC_GOT_LOAD
|
`X86_64_RELOC_GOT
|
`X86_64_RELOC_SIGNED
|
`X86_64_RELOC_UNSIGNED
|
`X86_64_RELOC_SUBTRACTOR
|
`X86_64_RELOC_SIGNED_1
|
`X86_64_RELOC_SIGNED_2
|
`X86_64_RELOC_SIGNED_4
|
`PPC_RELOC_VANILLA
|
`PPC_RELOC_PAIR
|
`PPC_RELOC_BR14
|
`PPC_RELOC_BR24
|
`PPC_RELOC_HI16
|
`PPC_RELOC_LO16
|
`PPC_RELOC_HA16
|
`PPC_RELOC_LO14
|
`PPC_RELOC_SECTDIFF
|
`PPC_RELOC_LOCAL_SECTDIFF
|
`PPC_RELOC_PB_LA_PTR
|
`PPC_RELOC_HI16_SECTDIFF
|
`PPC_RELOC_LO16_SECTDIFF
|
`PPC_RELOC_HA16_SECTDIFF
|
`PPC_RELOC_JBSR
|
`PPC_RELOC_LO14_SECTDIFF
|
unknown
]
type relocation_info = {
ri_address : int;
ri_symbolnum : Owee_buf.u32;
ri_pcrel : bool;
ri_length : Owee_buf.u32;
ri_extern : bool;
ri_type : reloc_type;
}
type scattered_relocation_info = {
rs_pcrel : bool;
rs_length : Owee_buf.u32;
rs_type : reloc_type;
rs_address : Owee_buf.u32;
rs_value : Owee_buf.s32;
}
type relocation = [
|
`Relocation_info of relocation_info
|
`Scattered_relocation_info of scattered_relocation_info
]
type sec_type = [
|
`S_REGULAR
|
`S_ZEROFILL
|
`S_CSTRING_LITERALS
|
`S_4BYTE_LITERALS
|
`S_8BYTE_LITERALS
|
`S_LITERAL_POINTERS
|
`S_NON_LAZY_SYMBOL_POINTERS
|
`S_LAZY_SYMBOL_POINTERS
|
`S_SYMBOL_STUBS
|
`S_MOD_INIT_FUNC_POINTERS
|
`S_MOD_TERM_FUNC_POINTERS
|
`S_COALESCED
|
`S_GB_ZEROFILL
|
`S_INTERPOSING
|
`S_16BYTE_LITERALS
|
`S_DTRACE_DOF
|
`S_LAZY_DYLIB_SYMBOL_POINTERS
|
unknown
]
type section = {
sec_sectname : string;
sec_segname : string;
sec_addr : Owee_buf.u64;
sec_size : Owee_buf.u64;
sec_align : int;
sec_relocs : relocation array;
sec_type : sec_type;
sec_user_attrs : sec_user_attr list;
sec_sys_attrs : sec_sys_attr list;
}
type segment = {
seg_segname : string;
seg_vmaddr : Owee_buf.u64;
seg_vmsize : Owee_buf.u64;
seg_fileoff : Owee_buf.u64;
seg_filesize : Owee_buf.u64;
seg_maxprot : vm_prot list;
seg_initprot : vm_prot list;
seg_flags : seg_flag list;
seg_sections : section array;
}
type sym_type = [
|
`UNDF
|
`ABS
|
`SECT
|
`PBUD
|
`INDR
|
`GSYM
|
`FNAME
|
`FUN
|
`STSYM
|
`LCSYM
|
`BNSYM
|
`OPT
|
`RSYM
|
`SLINE
|
`ENSYM
|
`SSYM
|
`SO
|
`OSO
|
`LSYM
|
`BINCL
|
`SOL
|
`PARAMS
|
`VERSION
|
`OLEVEL
|
`PSYM
|
`EINCL
|
`ENTRY
|
`LBRAC
|
`EXCL
|
`RBRAC
|
`BCOMM
|
`ECOMM
|
`ECOML
|
`LENG
|
`PC
|
unknown
]
type reference_flag = [
|
`UNDEFINED_NON_LAZY
|
`UNDEFINED_LAZY
|
`DEFINED
|
`PRIVATE_DEFINED
|
`PRIVATE_UNDEFINED_NON_LAZY
|
`PRIVATE_UNDEFINED_LAZY
|
`REFERENCED_DYNAMICALLY
|
`SYM_WEAK_REF
|
`SYM_WEAK_DEF
|
`LIBRARY_ORDINAL of Owee_buf.u16
|
unknown
]
type symbol = {
sym_name : string;
sym_type : sym_type;
sym_pext : bool;
sym_ext : bool;
sym_sect : Owee_buf.u8;
sym_flags : [ `Uninterpreted of Owee_buf.u16 | `Flags of reference_flag list ];
sym_value : Owee_buf.u64;
}
type dylib_module = {
dylib_module_name_offset : Owee_buf.u32;
dylib_ext_def_sym : Owee_buf.u32 * Owee_buf.u32;
dylib_ref_sym : Owee_buf.u32 * Owee_buf.u32;
dylib_local_sym : Owee_buf.u32 * Owee_buf.u32;
dylib_ext_rel : Owee_buf.u32 * Owee_buf.u32;
dylib_init : Owee_buf.u32 * Owee_buf.u32;
dylib_term : Owee_buf.u32 * Owee_buf.u32;
dylib_objc_module_info_addr : Owee_buf.u32;
dylib_objc_module_info_size : Owee_buf.u64;
}
type dynamic_symbol_table = {
localSyms : Owee_buf.u32 * Owee_buf.u32;
extDefSyms : Owee_buf.u32 * Owee_buf.u32;
undefSyms : Owee_buf.u32 * Owee_buf.u32;
toc_entries : toc_entry array;
modules : dylib_module array;
extRefSyms : Owee_buf.u32 array;
indirectSyms : Owee_buf.u32 array;
extRels : relocation array;
locRels : relocation array;
}
type dylib = {
dylib_name : string;
dylib_timestamp : Owee_buf.u32;
dylib_current_version : Owee_buf.u32;
dylib_compatibility_version : Owee_buf.u32;
}
type command =
| LC_SEGMENT_32 of segment lazy_t
| LC_SYMTAB of (symbol array * Owee_buf.t) lazy_t
| LC_THREAD of (Owee_buf.u32 * Owee_buf.u32 array) list lazy_t
| LC_UNIXTHREAD of (Owee_buf.u32 * Owee_buf.u32 array) list lazy_t
| LC_DYSYMTAB of dynamic_symbol_table lazy_t
| LC_LOAD_DYLIB of dylib lazy_t
| LC_ID_DYLIB of dylib lazy_t
| LC_LOAD_DYLINKER of string
| LC_ID_DYLINKER of string
| LC_PREBOUND_DYLIB of (string * Owee_buf.u8 array) lazy_t
| LC_ROUTINES_32 of Owee_buf.u32 * Owee_buf.u32
| LC_SUB_FRAMEWORK of string
| LC_SUB_UMBRELLA of string
| LC_SUB_CLIENT of string
| LC_SUB_LIBRARY of string
| LC_TWOLEVEL_HINTS of (Owee_buf.u32 * Owee_buf.u32) array lazy_t
| LC_PREBIND_CKSUM of Owee_buf.u32
| LC_LOAD_WEAK_DYLIB of dylib lazy_t
| LC_SEGMENT_64 of segment lazy_t
| LC_ROUTINES_64 of Owee_buf.u64 * Owee_buf.u64
| LC_UUID of string
| LC_RPATH of string
| LC_CODE_SIGNATURE of Owee_buf.u32 * Owee_buf.u32
| LC_SEGMENT_SPLIT_INFO of Owee_buf.u32 * Owee_buf.u32
| LC_UNHANDLED of int * Owee_buf.t
val read : Owee_buf.t -> header * command list
val section_body : Owee_buf.t -> segment -> section -> Owee_buf.t