Name Description Size
dyld_cache.rs 14338
fat.rs 4001
file.rs 26490
load_command.rs 15631
mod.rs Support for reading Mach-O files. Traits are used to abstract over the difference between 32-bit and 64-bit Mach-O files. The primary trait for this is [`MachHeader`]. ## High level API [`MachOFile`] implements the [`Object`](crate::read::Object) trait for Mach-O files. [`MachOFile`] is parameterised by [`MachHeader`] to allow reading both 32-bit and 64-bit Mach-O files. There are type aliases for these parameters ([`MachOFile32`] and [`MachOFile64`]). ## Low level API The [`MachHeader`] trait can be directly used to parse both [`macho::MachHeader32`] and [`macho::MachHeader64`]. Additionally, [`FatHeader`] and the [`FatArch`] trait can be used to iterate images in multi-architecture binaries, and [`DyldCache`] can be used to locate images in a dyld shared cache. ### Example for low level API ```no_run use object::macho; use object::read::macho::{MachHeader, Nlist}; use std::error::Error; use std::fs; /// Reads a file and displays the name of each symbol. fn main() -> Result<(), Box<dyn Error>> { # #[cfg(feature = "std")] { let data = fs::read("path/to/binary")?; let header = macho::MachHeader64::<object::Endianness>::parse(&*data, 0)?; let endian = header.endian()?; let mut commands = header.load_commands(endian, &*data, 0)?; while let Some(command) = commands.next()? { if let Some(symtab_command) = command.symtab()? { let symbols = symtab_command.symbols::<macho::MachHeader64<_>, _>(endian, &*data)?; for symbol in symbols.iter() { let name = symbol.name(endian, symbols.strings())?; println!("{}", String::from_utf8_lossy(name)); } } } # } Ok(()) } ``` 2188
relocation.rs 6300
section.rs 13266
segment.rs 9768
symbol.rs 16491