#![allow(dead_code)]
#![allow(non_camel_case_types)]
use std::collections::HashMap;
pub type cpu_type_t = i32;
pub type cpu_subtype_t = i32;
pub type vm_prot_t = i32;
pub type off_t = u32;
pub const CPU_ARCH_MASK: cpu_type_t = 0xff00_0000u32 as cpu_type_t;
pub const CPU_ARCH_ABI64: cpu_type_t = 0x0100_0000i32;
pub const CPU_TYPE_ANY: cpu_type_t = -1;
pub const CPU_TYPE_VAX: cpu_type_t = 1;
pub const CPU_TYPE_ROMP: cpu_type_t = 2;
pub const CPU_TYPE_NS32032: cpu_type_t = 4;
pub const CPU_TYPE_NS32332: cpu_type_t = 5;
pub const CPU_TYPE_MC680X0: cpu_type_t = 6;
pub const CPU_TYPE_X86: cpu_type_t = 7;
pub const CPU_TYPE_I386: cpu_type_t = CPU_TYPE_X86;
pub const CPU_TYPE_X86_64: cpu_type_t = CPU_TYPE_X86 | CPU_ARCH_ABI64;
pub const CPU_TYPE_MIPS: cpu_type_t = 8;
pub const CPU_TYPE_NS32532: cpu_type_t = 9;
pub const CPU_TYPE_MC98000: cpu_type_t = 10;
pub const CPU_TYPE_HPPA: cpu_type_t = 11;
pub const CPU_TYPE_ARM: cpu_type_t = 12;
pub const CPU_TYPE_ARM64: cpu_type_t = CPU_TYPE_ARM | CPU_ARCH_ABI64;
pub const CPU_TYPE_MC88000: cpu_type_t = 13;
pub const CPU_TYPE_SPARC: cpu_type_t = 14;
pub const CPU_TYPE_I860: cpu_type_t = 15;
pub const CPU_TYPE_ALPHA: cpu_type_t = 16;
pub const CPU_TYPE_RS6000: cpu_type_t = 17;
pub const CPU_TYPE_POWERPC: cpu_type_t = 18;
pub const CPU_TYPE_POWERPC64: cpu_type_t = CPU_TYPE_POWERPC | CPU_ARCH_ABI64;
pub const CPU_SUBTYPE_MASK: cpu_subtype_t = 0xff00_0000u32 as cpu_subtype_t;
pub const CPU_SUBTYPE_LIB64: cpu_subtype_t = 0x8000_0000u32 as cpu_subtype_t;
pub fn get_cpu_subtype_type(subtype: cpu_subtype_t) -> u32 {
(subtype as u32) & !(CPU_SUBTYPE_MASK as u32)
}
pub fn get_cpu_subtype_feature(subtype: cpu_subtype_t) -> u32 {
((subtype as u32) & (CPU_SUBTYPE_MASK as u32)) >> 24
}
pub const CPU_SUBTYPE_MULTIPLE: cpu_subtype_t = -1;
pub const CPU_SUBTYPE_LITTLE_ENDIAN: cpu_subtype_t = 0;
pub const CPU_SUBTYPE_BIG_ENDIAN: cpu_subtype_t = 1;
pub const CPU_SUBTYPE_VAX_ALL: cpu_subtype_t = 0;
pub const CPU_SUBTYPE_VAX780: cpu_subtype_t = 1;
pub const CPU_SUBTYPE_VAX785: cpu_subtype_t = 2;
pub const CPU_SUBTYPE_VAX750: cpu_subtype_t = 3;
pub const CPU_SUBTYPE_VAX730: cpu_subtype_t = 4;
pub const CPU_SUBTYPE_UVAXI: cpu_subtype_t = 5;
pub const CPU_SUBTYPE_UVAXII: cpu_subtype_t = 6;
pub const CPU_SUBTYPE_VAX8200: cpu_subtype_t = 7;
pub const CPU_SUBTYPE_VAX8500: cpu_subtype_t = 8;
pub const CPU_SUBTYPE_VAX8600: cpu_subtype_t = 9;
pub const CPU_SUBTYPE_VAX8650: cpu_subtype_t = 10;
pub const CPU_SUBTYPE_VAX8800: cpu_subtype_t = 11;
pub const CPU_SUBTYPE_UVAXIII: cpu_subtype_t = 12;
pub const CPU_SUBTYPE_MC680X0_ALL: cpu_subtype_t = 1;
pub const CPU_SUBTYPE_MC68030: cpu_subtype_t = 1;
pub const CPU_SUBTYPE_MC68040: cpu_subtype_t = 2;
pub const CPU_SUBTYPE_MC68030_ONLY: cpu_subtype_t = 3;
macro_rules! CPU_SUBTYPE_INTEL {
($f:expr, $m:expr) => {{
($f) + (($m) << 4)
}};
}
pub const CPU_SUBTYPE_I386_ALL: cpu_subtype_t = CPU_SUBTYPE_INTEL!(3, 0);
pub const CPU_SUBTYPE_386: cpu_subtype_t = CPU_SUBTYPE_INTEL!(3, 0);
pub const CPU_SUBTYPE_486: cpu_subtype_t = CPU_SUBTYPE_INTEL!(4, 0);
pub const CPU_SUBTYPE_486SX: cpu_subtype_t = CPU_SUBTYPE_INTEL!(4, 8); pub const CPU_SUBTYPE_586: cpu_subtype_t = CPU_SUBTYPE_INTEL!(5, 0);
pub const CPU_SUBTYPE_PENT: cpu_subtype_t = CPU_SUBTYPE_INTEL!(5, 0);
pub const CPU_SUBTYPE_PENTPRO: cpu_subtype_t = CPU_SUBTYPE_INTEL!(6, 1);
pub const CPU_SUBTYPE_PENTII_M3: cpu_subtype_t = CPU_SUBTYPE_INTEL!(6, 3);
pub const CPU_SUBTYPE_PENTII_M5: cpu_subtype_t = CPU_SUBTYPE_INTEL!(6, 5);
pub const CPU_SUBTYPE_CELERON: cpu_subtype_t = CPU_SUBTYPE_INTEL!(7, 6);
pub const CPU_SUBTYPE_CELERON_MOBILE: cpu_subtype_t = CPU_SUBTYPE_INTEL!(7, 7);
pub const CPU_SUBTYPE_PENTIUM_3: cpu_subtype_t = CPU_SUBTYPE_INTEL!(8, 0);
pub const CPU_SUBTYPE_PENTIUM_3_M: cpu_subtype_t = CPU_SUBTYPE_INTEL!(8, 1);
pub const CPU_SUBTYPE_PENTIUM_3_XEON: cpu_subtype_t = CPU_SUBTYPE_INTEL!(8, 2);
pub const CPU_SUBTYPE_PENTIUM_M: cpu_subtype_t = CPU_SUBTYPE_INTEL!(9, 0);
pub const CPU_SUBTYPE_PENTIUM_4: cpu_subtype_t = CPU_SUBTYPE_INTEL!(10, 0);
pub const CPU_SUBTYPE_PENTIUM_4_M: cpu_subtype_t = CPU_SUBTYPE_INTEL!(10, 1);
pub const CPU_SUBTYPE_ITANIUM: cpu_subtype_t = CPU_SUBTYPE_INTEL!(11, 0);
pub const CPU_SUBTYPE_ITANIUM_2: cpu_subtype_t = CPU_SUBTYPE_INTEL!(11, 1);
pub const CPU_SUBTYPE_XEON: cpu_subtype_t = CPU_SUBTYPE_INTEL!(12, 0);
pub const CPU_SUBTYPE_XEON_MP: cpu_subtype_t = CPU_SUBTYPE_INTEL!(12, 1);
pub const CPU_SUBTYPE_INTEL_FAMILY_MAX: cpu_subtype_t = 15;
pub const CPU_SUBTYPE_INTEL_MODEL_ALL: cpu_subtype_t = 0;
pub const CPU_SUBTYPE_X86_ALL: cpu_subtype_t = 3;
pub const CPU_SUBTYPE_X86_64_ALL: cpu_subtype_t = 3;
pub const CPU_SUBTYPE_X86_ARCH1: cpu_subtype_t = 4;
pub const CPU_SUBTYPE_X86_64_H: cpu_subtype_t = 8;
pub const CPU_SUBTYPE_MIPS_ALL: cpu_subtype_t = 0;
pub const CPU_SUBTYPE_MIPS_R2300: cpu_subtype_t = 1;
pub const CPU_SUBTYPE_MIPS_R2600: cpu_subtype_t = 2;
pub const CPU_SUBTYPE_MIPS_R2800: cpu_subtype_t = 3;
pub const CPU_SUBTYPE_MIPS_R2000A: cpu_subtype_t = 4;
pub const CPU_SUBTYPE_MIPS_R2000: cpu_subtype_t = 5;
pub const CPU_SUBTYPE_MIPS_R3000A: cpu_subtype_t = 6;
pub const CPU_SUBTYPE_MIPS_R3000: cpu_subtype_t = 7;
pub const CPU_SUBTYPE_MC98000_ALL: cpu_subtype_t = 0;
pub const CPU_SUBTYPE_MC98601: cpu_subtype_t = 1;
pub const CPU_SUBTYPE_HPPA_ALL: cpu_subtype_t = 0;
pub const CPU_SUBTYPE_HPPA_7100: cpu_subtype_t = 0;
pub const CPU_SUBTYPE_HPPA_7100LC: cpu_subtype_t = 1;
pub const CPU_SUBTYPE_MC88000_ALL: cpu_subtype_t = 0;
pub const CPU_SUBTYPE_MC88100: cpu_subtype_t = 1;
pub const CPU_SUBTYPE_MC88110: cpu_subtype_t = 2;
pub const CPU_SUBTYPE_SPARC_ALL: cpu_subtype_t = 0;
pub const CPU_SUBTYPE_I860_ALL: cpu_subtype_t = 0;
pub const CPU_SUBTYPE_I860_860: cpu_subtype_t = 1;
pub const CPU_SUBTYPE_POWERPC_ALL: cpu_subtype_t = 0;
pub const CPU_SUBTYPE_POWERPC_601: cpu_subtype_t = 1;
pub const CPU_SUBTYPE_POWERPC_602: cpu_subtype_t = 2;
pub const CPU_SUBTYPE_POWERPC_603: cpu_subtype_t = 3;
pub const CPU_SUBTYPE_POWERPC_603E: cpu_subtype_t = 4;
pub const CPU_SUBTYPE_POWERPC_603EV: cpu_subtype_t = 5;
pub const CPU_SUBTYPE_POWERPC_604: cpu_subtype_t = 6;
pub const CPU_SUBTYPE_POWERPC_604E: cpu_subtype_t = 7;
pub const CPU_SUBTYPE_POWERPC_620: cpu_subtype_t = 8;
pub const CPU_SUBTYPE_POWERPC_750: cpu_subtype_t = 9;
pub const CPU_SUBTYPE_POWERPC_7400: cpu_subtype_t = 10;
pub const CPU_SUBTYPE_POWERPC_7450: cpu_subtype_t = 11;
pub const CPU_SUBTYPE_POWERPC_970: cpu_subtype_t = 100;
pub const CPU_SUBTYPE_ARM_ALL: cpu_subtype_t = 0;
pub const CPU_SUBTYPE_ARM_V4T: cpu_subtype_t = 5;
pub const CPU_SUBTYPE_ARM_V6: cpu_subtype_t = 6;
pub const CPU_SUBTYPE_ARM_V5TEJ: cpu_subtype_t = 7;
pub const CPU_SUBTYPE_ARM_XSCALE: cpu_subtype_t = 8;
pub const CPU_SUBTYPE_ARM_V7: cpu_subtype_t = 9;
pub const CPU_SUBTYPE_ARM_V7F: cpu_subtype_t = 10;
pub const CPU_SUBTYPE_ARM_V7S: cpu_subtype_t = 11;
pub const CPU_SUBTYPE_ARM_V7K: cpu_subtype_t = 12;
pub const CPU_SUBTYPE_ARM_V6M: cpu_subtype_t = 14;
pub const CPU_SUBTYPE_ARM_V7M: cpu_subtype_t = 15;
pub const CPU_SUBTYPE_ARM_V7EM: cpu_subtype_t = 16;
pub const CPU_SUBTYPE_ARM_V8: cpu_subtype_t = 13;
pub const CPU_SUBTYPE_ARM64_ALL: cpu_subtype_t = 0;
pub const CPU_SUBTYPE_ARM64_V8: cpu_subtype_t = 1;
pub const CPU_SUBTYPE_ARM64_E: cpu_subtype_t = 2;
fn get_arch_flags() -> &'static HashMap<&'static str, (cpu_type_t, cpu_subtype_t)> {
lazy_static! {
static ref ARCH_FLAGS : HashMap<&'static str, (cpu_type_t, cpu_subtype_t)> = {
let mut m = HashMap::new();
m.insert("any", (CPU_TYPE_ANY, CPU_SUBTYPE_MULTIPLE ));
m.insert("little", (CPU_TYPE_ANY, CPU_SUBTYPE_LITTLE_ENDIAN ));
m.insert("big", (CPU_TYPE_ANY, CPU_SUBTYPE_BIG_ENDIAN ));
m.insert("ppc64", (CPU_TYPE_POWERPC64, CPU_SUBTYPE_POWERPC_ALL ));
m.insert("x86_64", (CPU_TYPE_X86_64, CPU_SUBTYPE_X86_64_ALL ));
m.insert("x86_64h", (CPU_TYPE_X86_64, CPU_SUBTYPE_X86_64_H ));
m.insert("arm64", (CPU_TYPE_ARM64, CPU_SUBTYPE_ARM64_ALL ));
m.insert("ppc970-64", (CPU_TYPE_POWERPC64, CPU_SUBTYPE_POWERPC_970 ));
m.insert("ppc", (CPU_TYPE_POWERPC, CPU_SUBTYPE_POWERPC_ALL ));
m.insert("i386", (CPU_TYPE_I386, CPU_SUBTYPE_I386_ALL ));
m.insert("m68k", (CPU_TYPE_MC680X0, CPU_SUBTYPE_MC680X0_ALL ));
m.insert("hppa", (CPU_TYPE_HPPA, CPU_SUBTYPE_HPPA_ALL ));
m.insert("sparc", (CPU_TYPE_SPARC, CPU_SUBTYPE_SPARC_ALL ));
m.insert("m88k", (CPU_TYPE_MC88000, CPU_SUBTYPE_MC88000_ALL ));
m.insert("i860", (CPU_TYPE_I860, CPU_SUBTYPE_I860_ALL ));
m.insert("arm", (CPU_TYPE_ARM, CPU_SUBTYPE_ARM_ALL ));
m.insert("ppc601", (CPU_TYPE_POWERPC, CPU_SUBTYPE_POWERPC_601 ));
m.insert("ppc603",(CPU_TYPE_POWERPC, CPU_SUBTYPE_POWERPC_603 ));
m.insert("ppc603e",(CPU_TYPE_POWERPC, CPU_SUBTYPE_POWERPC_603E ));
m.insert("ppc603ev",(CPU_TYPE_POWERPC,CPU_SUBTYPE_POWERPC_603EV ));
m.insert("ppc604", (CPU_TYPE_POWERPC, CPU_SUBTYPE_POWERPC_604 ));
m.insert("ppc604e",(CPU_TYPE_POWERPC, CPU_SUBTYPE_POWERPC_604E ));
m.insert("ppc750", (CPU_TYPE_POWERPC, CPU_SUBTYPE_POWERPC_750 ));
m.insert("ppc7400",(CPU_TYPE_POWERPC, CPU_SUBTYPE_POWERPC_7400 ));
m.insert("ppc7450",(CPU_TYPE_POWERPC, CPU_SUBTYPE_POWERPC_7450 ));
m.insert("ppc970", (CPU_TYPE_POWERPC, CPU_SUBTYPE_POWERPC_970 ));
m.insert("i486", (CPU_TYPE_I386, CPU_SUBTYPE_486 ));
m.insert("i486SX", (CPU_TYPE_I386, CPU_SUBTYPE_486SX ));
m.insert("pentium",(CPU_TYPE_I386, CPU_SUBTYPE_PENT ));
m.insert("i586", (CPU_TYPE_I386, CPU_SUBTYPE_586 ));
m.insert("pentpro",( CPU_TYPE_I386, CPU_SUBTYPE_PENTPRO ));
m.insert("i686", (CPU_TYPE_I386, CPU_SUBTYPE_PENTPRO ));
m.insert("pentIIm3",(CPU_TYPE_I386, CPU_SUBTYPE_PENTII_M3 ));
m.insert("pentIIm5",(CPU_TYPE_I386, CPU_SUBTYPE_PENTII_M5 ));
m.insert("pentium4",(CPU_TYPE_I386, CPU_SUBTYPE_PENTIUM_4 ));
m.insert("m68030", (CPU_TYPE_MC680X0, CPU_SUBTYPE_MC68030_ONLY ));
m.insert("m68040", (CPU_TYPE_MC680X0, CPU_SUBTYPE_MC68040 ));
m.insert("hppa7100LC",( CPU_TYPE_HPPA, CPU_SUBTYPE_HPPA_7100LC ));
m.insert("armv4t", (CPU_TYPE_ARM, CPU_SUBTYPE_ARM_V4T));
m.insert("armv5", (CPU_TYPE_ARM, CPU_SUBTYPE_ARM_V5TEJ));
m.insert("xscale", (CPU_TYPE_ARM, CPU_SUBTYPE_ARM_XSCALE));
m.insert("armv6", (CPU_TYPE_ARM, CPU_SUBTYPE_ARM_V6 ));
m.insert("armv6m", (CPU_TYPE_ARM, CPU_SUBTYPE_ARM_V6M ));
m.insert("armv7", (CPU_TYPE_ARM, CPU_SUBTYPE_ARM_V7 ));
m.insert("armv7f", (CPU_TYPE_ARM, CPU_SUBTYPE_ARM_V7F ));
m.insert("armv7s", (CPU_TYPE_ARM, CPU_SUBTYPE_ARM_V7S ));
m.insert("armv7k", (CPU_TYPE_ARM, CPU_SUBTYPE_ARM_V7K ));
m.insert("armv7m", (CPU_TYPE_ARM, CPU_SUBTYPE_ARM_V7M ));
m.insert("armv7em",( CPU_TYPE_ARM, CPU_SUBTYPE_ARM_V7EM ));
m.insert("arm64v8",(CPU_TYPE_ARM64, CPU_SUBTYPE_ARM64_V8 ));
m.insert("arm64e", (CPU_TYPE_ARM64, CPU_SUBTYPE_ARM64_E ));
m
};
}
&ARCH_FLAGS
}
pub fn get_arch_from_flag(name: &str) -> Option<&(cpu_type_t, cpu_subtype_t)> {
get_arch_flags().get(&name)
}
pub fn get_arch_name_from_types(cputype: cpu_type_t, subtype: cpu_subtype_t) -> Option<&'static str> {
for (name, &(cpu_type, cpu_subtype)) in get_arch_flags() {
if cpu_type == cputype && get_cpu_subtype_type(cpu_subtype) == get_cpu_subtype_type(subtype) {
return Some(name);
}
}
None
}
pub const MH_MAGIC: u32 = 0xfeed_face;
pub const MH_CIGAM: u32 = 0xcefa_edfe;
pub const MH_MAGIC_64: u32 = 0xfeed_facf;
pub const MH_CIGAM_64: u32 = 0xcffa_edfe;
pub const FAT_MAGIC: u32 = 0xcafe_babe;
pub const FAT_MAGIC64: u32 = 0xcafe_babf;
pub const FAT_CIGAM: u32 = 0xbeba_feca;
pub const FAT_CIGAM64: u32 = 0xbfba_feca;
pub const ARMAG: &[u8] = b"!<arch>\n";
pub const AR_EFMT1: &str = "#1/";
pub const SYMDEF: &str = "__.SYMDEF";
pub const SYMDEF_SORTED: &str = "__.SYMDEF SORTED";
pub const MH_OBJECT: u32 = 0x1;
pub const MH_EXECUTE: u32 = 0x2;
pub const MH_FVMLIB: u32 = 0x3;
pub const MH_CORE: u32 = 0x4;
pub const MH_PRELOAD: u32 = 0x5;
pub const MH_DYLIB: u32 = 0x6;
pub const MH_DYLINKER: u32 = 0x7;
pub const MH_BUNDLE: u32 = 0x8;
pub const MH_DYLIB_STUB: u32 = 0x9;
pub const MH_DSYM: u32 = 0xa;
pub const MH_KEXT_BUNDLE: u32 = 0xb;
pub const MH_NOUNDEFS: u32 = 0x1;
pub const MH_INCRLINK: u32 = 0x2;
pub const MH_DYLDLINK: u32 = 0x4;
pub const MH_BINDATLOAD: u32 = 0x8;
pub const MH_PREBOUND: u32 = 0x10;
pub const MH_SPLIT_SEGS: u32 = 0x20;
pub const MH_LAZY_INIT: u32 = 0x40;
pub const MH_TWOLEVEL: u32 = 0x80;
pub const MH_FORCE_FLAT: u32 = 0x100;
pub const MH_NOMULTIDEFS: u32 = 0x200;
pub const MH_NOFIXPREBINDING: u32 = 0x400;
pub const MH_PREBINDABLE: u32 = 0x800;
pub const MH_ALLMODSBOUND: u32 = 0x1000;
pub const MH_SUBSECTIONS_VIA_SYMBOLS: u32 = 0x2000;
pub const MH_CANONICAL: u32 = 0x4000;
pub const MH_WEAK_DEFINES: u32 = 0x8000;
pub const MH_BINDS_TO_WEAK: u32 = 0x0001_0000;
pub const MH_ALLOW_STACK_EXECUTION: u32 = 0x0002_0000;
pub const MH_ROOT_SAFE: u32 = 0x0004_0000;
pub const MH_SETUID_SAFE: u32 = 0x0008_0000;
pub const MH_NO_REEXPORTED_DYLIBS: u32 = 0x0010_0000;
pub const MH_PIE: u32 = 0x0020_0000;
pub const MH_DEAD_STRIPPABLE_DYLIB: u32 = 0x0040_0000;
pub const MH_HAS_TLV_DESCRIPTORS: u32 = 0x0080_0000;
pub const MH_NO_HEAP_EXECUTION: u32 = 0x0100_0000;
pub const MH_APP_EXTENSION_SAFE: u32 = 0x0200_0000;
pub const LC_REQ_DYLD: u32 = 0x8000_0000;
pub const LC_SEGMENT: u32 = 0x1;
pub const LC_SYMTAB: u32 = 0x2;
pub const LC_SYMSEG: u32 = 0x3;
pub const LC_THREAD: u32 = 0x4;
pub const LC_UNIXTHREAD: u32 = 0x5;
pub const LC_LOADFVMLIB: u32 = 0x6;
pub const LC_IDFVMLIB: u32 = 0x7;
pub const LC_IDENT: u32 = 0x8;
pub const LC_FVMFILE: u32 = 0x9;
pub const LC_PREPAGE: u32 = 0xa;
pub const LC_DYSYMTAB: u32 = 0xb;
pub const LC_LOAD_DYLIB: u32 = 0xc;
pub const LC_ID_DYLIB: u32 = 0xd;
pub const LC_LOAD_DYLINKER: u32 = 0xe;
pub const LC_ID_DYLINKER: u32 = 0xf;
pub const LC_PREBOUND_DYLIB: u32 = 0x10;
pub const LC_ROUTINES: u32 = 0x11;
pub const LC_SUB_FRAMEWORK: u32 = 0x12;
pub const LC_SUB_UMBRELLA: u32 = 0x13;
pub const LC_SUB_CLIENT: u32 = 0x14;
pub const LC_SUB_LIBRARY: u32 = 0x15;
pub const LC_TWOLEVEL_HINTS: u32 = 0x16;
pub const LC_PREBIND_CKSUM: u32 = 0x17;
pub const LC_LOAD_WEAK_DYLIB: u32 = 0x18 | LC_REQ_DYLD;
pub const LC_SEGMENT_64: u32 = 0x19;
pub const LC_ROUTINES_64: u32 = 0x1a;
pub const LC_UUID: u32 = 0x1b;
pub const LC_RPATH: u32 = 0x1c | LC_REQ_DYLD;
pub const LC_CODE_SIGNATURE: u32 = 0x1d;
pub const LC_SEGMENT_SPLIT_INFO: u32 = 0x1e;
pub const LC_REEXPORT_DYLIB: u32 = 0x1f | LC_REQ_DYLD;
pub const LC_LAZY_LOAD_DYLIB: u32 = 0x20;
pub const LC_ENCRYPTION_INFO: u32 = 0x21;
pub const LC_DYLD_INFO: u32 = 0x22;
pub const LC_DYLD_INFO_ONLY: u32 = 0x22 | LC_REQ_DYLD;
pub const LC_LOAD_UPWARD_DYLIB: u32 = 0x23 | LC_REQ_DYLD;
pub const LC_VERSION_MIN_MACOSX: u32 = 0x24;
pub const LC_VERSION_MIN_IPHONEOS: u32 = 0x25;
pub const LC_FUNCTION_STARTS: u32 = 0x26;
pub const LC_DYLD_ENVIRONMENT: u32 = 0x27;
pub const LC_MAIN: u32 = 0x28 | LC_REQ_DYLD;
pub const LC_DATA_IN_CODE: u32 = 0x29;
pub const LC_SOURCE_VERSION: u32 = 0x2A;
pub const LC_DYLIB_CODE_SIGN_DRS: u32 = 0x2B;
pub const LC_ENCRYPTION_INFO_64: u32 = 0x2C;
pub const LC_LINKER_OPTION: u32 = 0x2D;
pub const LC_LINKER_OPTIMIZATION_HINT: u32 = 0x2E;
pub const LC_VERSION_MIN_TVOS: u32 = 0x2F;
pub const LC_VERSION_MIN_WATCHOS: u32 = 0x30;
pub const LC_NOTE: u32 = 0x31;
pub const LC_BUILD_VERSION: u32 = 0x32;
pub const LC_DYLD_EXPORTS_TRIE: u32 = 0x33 | LC_REQ_DYLD;
pub const LC_DYLD_CHAINED_FIXUPS: u32 = 0x34 | LC_REQ_DYLD;
bitflags! {
pub struct SegmentFlags: u32 {
const SG_HIGHVM = 0x1;
const SG_FVMLIB = 0x2;
const SG_NORELOC = 0x4;
const SG_PROTECTED_VERSION_1 = 0x8;
}
}
pub const SECTION_TYPE: u32 = 0x0000_00ff;
pub const SECTION_ATTRIBUTES: u32 = 0xffff_ff00;
pub const S_REGULAR: u32 = 0x0;
pub const S_ZEROFILL: u32 = 0x1;
pub const S_CSTRING_LITERALS: u32 = 0x2;
pub const S_4BYTE_LITERALS: u32 = 0x3;
pub const S_8BYTE_LITERALS: u32 = 0x4;
pub const S_LITERAL_POINTERS: u32 = 0x5;
pub const S_NON_LAZY_SYMBOL_POINTERS: u32 = 0x6;
pub const S_LAZY_SYMBOL_POINTERS: u32 = 0x7;
pub const S_SYMBOL_STUBS: u32 = 0x8;
pub const S_MOD_INIT_FUNC_POINTERS: u32 = 0x9;
pub const S_MOD_TERM_FUNC_POINTERS: u32 = 0xa;
pub const S_COALESCED: u32 = 0xb;
pub const S_GB_ZEROFILL: u32 = 0xc;
pub const S_INTERPOSING: u32 = 0xd;
pub const S_16BYTE_LITERALS: u32 = 0xe;
pub const S_DTRACE_DOF: u32 = 0xf;
pub const S_LAZY_DYLIB_SYMBOL_POINTERS: u32 = 0x10;
pub const S_THREAD_LOCAL_REGULAR: u32 = 0x11;
pub const S_THREAD_LOCAL_ZEROFILL: u32 = 0x12;
pub const S_THREAD_LOCAL_VARIABLES: u32 = 0x13;
pub const S_THREAD_LOCAL_VARIABLE_POINTERS: u32 = 0x14;
pub const S_THREAD_LOCAL_INIT_FUNCTION_POINTERS: u32 = 0x15;
bitflags! {
pub struct SectionAttributes: u32 {
const SECTION_ATTRIBUTES_USR = 0xff00_0000;
const S_ATTR_PURE_INSTRUCTIONS = 0x8000_0000;
const S_ATTR_NO_TOC = 0x4000_0000;
const S_ATTR_STRIP_STATIC_SYMS = 0x2000_0000;
const S_ATTR_NO_DEAD_STRIP = 0x1000_0000;
const S_ATTR_LIVE_SUPPORT = 0x0800_0000;
const S_ATTR_SELF_MODIFYING_CODE = 0x0400_0000;
const S_ATTR_DEBUG = 0x0200_0000;
const SECTION_ATTRIBUTES_SYS = 0x00ff_ff00;
const S_ATTR_SOME_INSTRUCTIONS = 0x0000_0400;
const S_ATTR_EXT_RELOC = 0x0000_0200;
const S_ATTR_LOC_RELOC = 0x0000_0100;
}
}
pub static SEG_PAGEZERO: &str = "__PAGEZERO";
pub static SEG_TEXT: &str = "__TEXT";
pub static SECT_TEXT: &str = "__text";
pub static SECT_FVMLIB_INIT0: &str = "__fvmlib_init0";
pub static SECT_FVMLIB_INIT1: &str = "__fvmlib_init1";
pub static SEG_DATA: &str = "__DATA";
pub static SECT_DATA: &str = "__data";
pub static SECT_BSS: &str = "__bss";
pub static SECT_COMMON: &str = "__common";
pub static SEG_OBJC: &str = "__OBJC";
pub static SECT_OBJC_SYMBOLS: &str = "__symbol_table";
pub static SECT_OBJC_MODULES: &str = "__module_info";
pub static SECT_OBJC_STRINGS: &str = "__selector_strs";
pub static SECT_OBJC_REFS: &str = "__selector_refs";
pub static SEG_ICON: &str = "__ICON";
pub static SECT_ICON_HEADER: &str = "__header";
pub static SECT_ICON_TIFF: &str = "__tiff";
pub static SEG_LINKEDIT: &str = "__LINKEDIT";
pub static SEG_UNIXSTACK: &str = "__UNIXSTACK";
pub static SEG_IMPORT: &str = "__IMPORT";
pub const INDIRECT_SYMBOL_LOCAL: u32 = 0x8000_0000;
pub const INDIRECT_SYMBOL_ABS: u32 = 0x4000_0000;
pub const REBASE_TYPE_POINTER: u8 = 1;
pub const REBASE_TYPE_TEXT_ABSOLUTE32: u8 = 2;
pub const REBASE_TYPE_TEXT_PCREL32: u8 = 3;
pub const REBASE_OPCODE_MASK: u8 = 0xF0;
pub const REBASE_IMMEDIATE_MASK: u8 = 0x0F;
pub const REBASE_OPCODE_DONE: u8 = 0x00;
pub const REBASE_OPCODE_SET_TYPE_IMM: u8 = 0x10;
pub const REBASE_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB: u8 = 0x20;
pub const REBASE_OPCODE_ADD_ADDR_ULEB: u8 = 0x30;
pub const REBASE_OPCODE_ADD_ADDR_IMM_SCALED: u8 = 0x40;
pub const REBASE_OPCODE_DO_REBASE_IMM_TIMES: u8 = 0x50;
pub const REBASE_OPCODE_DO_REBASE_ULEB_TIMES: u8 = 0x60;
pub const REBASE_OPCODE_DO_REBASE_ADD_ADDR_ULEB: u8 = 0x70;
pub const REBASE_OPCODE_DO_REBASE_ULEB_TIMES_SKIPPING_ULEB: u8 = 0x80;
pub const BIND_TYPE_POINTER: u8 = 1;
pub const BIND_TYPE_TEXT_ABSOLUTE32: u8 = 2;
pub const BIND_TYPE_TEXT_PCREL32: u8 = 3;
pub const BIND_SPECIAL_DYLIB_SELF: isize = 0;
pub const BIND_SPECIAL_DYLIB_MAIN_EXECUTABLE: isize = -1;
pub const BIND_SPECIAL_DYLIB_FLAT_LOOKUP: isize = -2;
pub const BIND_SYMBOL_FLAGS_WEAK_IMPORT: u8 = 0x1;
pub const BIND_SYMBOL_FLAGS_NON_WEAK_DEFINITION: u8 = 0x8;
pub const BIND_OPCODE_MASK: u8 = 0xF0;
pub const BIND_IMMEDIATE_MASK: u8 = 0x0F;
pub const BIND_OPCODE_DONE: u8 = 0x00;
pub const BIND_OPCODE_SET_DYLIB_ORDINAL_IMM: u8 = 0x10;
pub const BIND_OPCODE_SET_DYLIB_ORDINAL_ULEB: u8 = 0x20;
pub const BIND_OPCODE_SET_DYLIB_SPECIAL_IMM: u8 = 0x30;
pub const BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM: u8 = 0x40;
pub const BIND_OPCODE_SET_TYPE_IMM: u8 = 0x50;
pub const BIND_OPCODE_SET_ADDEND_SLEB: u8 = 0x60;
pub const BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB: u8 = 0x70;
pub const BIND_OPCODE_ADD_ADDR_ULEB: u8 = 0x80;
pub const BIND_OPCODE_DO_BIND: u8 = 0x90;
pub const BIND_OPCODE_DO_BIND_ADD_ADDR_ULEB: u8 = 0xA0;
pub const BIND_OPCODE_DO_BIND_ADD_ADDR_IMM_SCALED: u8 = 0xB0;
pub const BIND_OPCODE_DO_BIND_ULEB_TIMES_SKIPPING_ULEB: u8 = 0xC0;
pub const EXPORT_SYMBOL_FLAGS_KIND_MASK: u8 = 0x03;
pub const EXPORT_SYMBOL_FLAGS_KIND_REGULAR: u8 = 0x00;
pub const EXPORT_SYMBOL_FLAGS_KIND_THREAD_LOCAL: u8 = 0x01;
pub const EXPORT_SYMBOL_FLAGS_KIND_ABSOLUTE: u8 = 0x02;
bitflags! {
pub struct ExportSymbolFlags: u32 {
const EXPORT_SYMBOL_FLAGS_WEAK_DEFINITION = 0x04;
const EXPORT_SYMBOL_FLAGS_REEXPORT = 0x08;
const EXPORT_SYMBOL_FLAGS_STUB_AND_RESOLVER = 0x10;
}
}
pub const DICE_KIND_DATA: u16 = 0x0001;
pub const DICE_KIND_JUMP_TABLE8: u16 = 0x0002;
pub const DICE_KIND_JUMP_TABLE16: u16 = 0x0003;
pub const DICE_KIND_JUMP_TABLE32: u16 = 0x0004;
pub const DICE_KIND_ABS_JUMP_TABLE32: u16 = 0x0005;
pub const N_GSYM: u8 = 0x20;
pub const N_FNAME: u8 = 0x22;
pub const N_FUN: u8 = 0x24;
pub const N_STSYM: u8 = 0x26;
pub const N_LCSYM: u8 = 0x28;
pub const N_BNSYM: u8 = 0x2e;
pub const N_AST: u8 = 0x32;
pub const N_OPT: u8 = 0x3c;
pub const N_RSYM: u8 = 0x40;
pub const N_SLINE: u8 = 0x44;
pub const N_ENSYM: u8 = 0x4e;
pub const N_SSYM: u8 = 0x60;
pub const N_SO: u8 = 0x64;
pub const N_OSO: u8 = 0x66;
pub const N_LSYM: u8 = 0x80;
pub const N_BINCL: u8 = 0x82;
pub const N_SOL: u8 = 0x84;
pub const N_PARAMS: u8 = 0x86;
pub const N_VERSION: u8 = 0x88;
pub const N_OLEVEL: u8 = 0x8A;
pub const N_PSYM: u8 = 0xa0;
pub const N_EINCL: u8 = 0xa2;
pub const N_ENTRY: u8 = 0xa4;
pub const N_LBRAC: u8 = 0xc0;
pub const N_EXCL: u8 = 0xc2;
pub const N_RBRAC: u8 = 0xe0;
pub const N_BCOMM: u8 = 0xe2;
pub const N_ECOMM: u8 = 0xe4;
pub const N_ECOML: u8 = 0xe8;
pub const N_LENG: u8 = 0xfe;
pub const N_PC: u8 = 0x30;
pub const REFERENCE_TYPE: u8 = 0x7;
pub const REFERENCE_FLAG_UNDEFINED_NON_LAZY: u8 = 0;
pub const REFERENCE_FLAG_UNDEFINED_LAZY: u8 = 1;
pub const REFERENCE_FLAG_DEFINED: u8 = 2;
pub const REFERENCE_FLAG_PRIVATE_DEFINED: u8 = 3;
pub const REFERENCE_FLAG_PRIVATE_UNDEFINED_NON_LAZY: u8 = 4;
pub const REFERENCE_FLAG_PRIVATE_UNDEFINED_LAZY: u8 = 5;
pub const REFERENCED_DYNAMICALLY: u16 = 0x0010;
pub const SELF_LIBRARY_ORDINAL: u8 = 0x0;
pub const MAX_LIBRARY_ORDINAL: u8 = 0xfd;
pub const DYNAMIC_LOOKUP_ORDINAL: u8 = 0xfe;
pub const EXECUTABLE_ORDINAL: u8 = 0xff;
pub const N_NO_DEAD_STRIP: u16 = 0x0020;
pub const N_DESC_DISCARDED: u16 = 0x0020;
pub const N_WEAK_REF: u16 = 0x0040;
pub const N_WEAK_DEF: u16 = 0x0080;
pub const N_REF_TO_WEAK: u16 = 0x0080;
pub const N_ARM_THUMB_DEF: u16 = 0x0008;
pub const N_SYMBOL_RESOLVER: u16 = 0x0100;
pub const N_ALT_ENTRY: u16 = 0x0200;
pub const PLATFORM_MACOS: u32 = 1;
pub const PLATFORM_IOS: u32 = 2;
pub const PLATFORM_TVOS: u32 = 3;
pub const PLATFORM_WATCHOS: u32 = 4;
pub const PLATFORM_BRIDGEOS: u32 = 5;
pub const TOOL_CLANG: u32 = 1;
pub const TOOL_SWIFT: u32 = 2;
pub const TOOL_LD: u32 = 3;