Struct object::read::macho::MachOFile[][src]

pub struct MachOFile<'data, Mach, R = &'data [u8]> where
    Mach: MachHeader,
    R: ReadRef<'data>, 
{ /* fields omitted */ }
Expand description

A partially parsed Mach-O file.

Most of the functionality of this type is provided by the Object trait implementation.

Implementations

impl<'data, Mach, R> MachOFile<'data, Mach, R> where
    Mach: MachHeader,
    R: ReadRef<'data>, 
[src]

pub fn parse(data: R) -> Result<Self>[src]

Parse the raw Mach-O file data.

pub fn parse_at(data: R, header_offset: u64) -> Result<Self>[src]

Parse the raw Mach-O file data at an arbitrary offset inside the input data. This can be used for parsing Mach-O images inside the dyld shared cache, where multiple images, located at different offsets, share the same address space.

Trait Implementations

impl<'data, Mach: Debug, R: Debug> Debug for MachOFile<'data, Mach, R> where
    Mach: MachHeader,
    R: ReadRef<'data>,
    Mach::Endian: Debug
[src]

fn fmt(&self, f: &mut Formatter<'_>) -> Result[src]

Formats the value using the given formatter. Read more

impl<'data, 'file, Mach, R> Object<'data, 'file> for MachOFile<'data, Mach, R> where
    'data: 'file,
    Mach: MachHeader,
    R: 'file + ReadRef<'data>, 
[src]

type Segment = MachOSegment<'data, 'file, Mach, R>

A segment in the object file.

type SegmentIterator = MachOSegmentIterator<'data, 'file, Mach, R>

An iterator over the segments in the object file.

type Section = MachOSection<'data, 'file, Mach, R>

A section in the object file.

type SectionIterator = MachOSectionIterator<'data, 'file, Mach, R>

An iterator over the sections in the object file.

type Comdat = MachOComdat<'data, 'file, Mach, R>

A COMDAT section group in the object file.

type ComdatIterator = MachOComdatIterator<'data, 'file, Mach, R>

An iterator over the COMDAT section groups in the object file.

type Symbol = MachOSymbol<'data, 'file, Mach, R>

A symbol in the object file.

type SymbolIterator = MachOSymbolIterator<'data, 'file, Mach, R>

An iterator over symbols in the object file.

type SymbolTable = MachOSymbolTable<'data, 'file, Mach, R>

A symbol table in the object file.

type DynamicRelocationIterator = NoDynamicRelocationIterator

An iterator over dynamic relocations in the file. Read more

fn architecture(&self) -> Architecture[src]

Get the architecture type of the file.

fn is_little_endian(&self) -> bool[src]

Return true if the file is little endian, false if it is big endian.

fn is_64(&self) -> bool[src]

Return true if the file can contain 64-bit addresses.

fn segments(&'file self) -> MachOSegmentIterator<'data, 'file, Mach, R>

Notable traits for MachOSegmentIterator<'data, 'file, Mach, R>

impl<'data, 'file, Mach, R> Iterator for MachOSegmentIterator<'data, 'file, Mach, R> where
    Mach: MachHeader,
    R: ReadRef<'data>, 
type Item = MachOSegment<'data, 'file, Mach, R>;
[src]

Get an iterator over the segments in the file.

fn section_by_name(
    &'file self,
    section_name: &str
) -> Option<MachOSection<'data, 'file, Mach, R>>
[src]

Get the section named section_name, if such a section exists. Read more

fn section_by_index(
    &'file self,
    index: SectionIndex
) -> Result<MachOSection<'data, 'file, Mach, R>>
[src]

Get the section at the given index. Read more

fn sections(&'file self) -> MachOSectionIterator<'data, 'file, Mach, R>

Notable traits for MachOSectionIterator<'data, 'file, Mach, R>

impl<'data, 'file, Mach, R> Iterator for MachOSectionIterator<'data, 'file, Mach, R> where
    Mach: MachHeader,
    R: ReadRef<'data>, 
type Item = MachOSection<'data, 'file, Mach, R>;
[src]

Get an iterator over the sections in the file.

fn comdats(&'file self) -> MachOComdatIterator<'data, 'file, Mach, R>

Notable traits for MachOComdatIterator<'data, 'file, Mach, R>

impl<'data, 'file, Mach, R> Iterator for MachOComdatIterator<'data, 'file, Mach, R> where
    Mach: MachHeader,
    R: ReadRef<'data>, 
type Item = MachOComdat<'data, 'file, Mach, R>;
[src]

Get an iterator over the COMDAT section groups in the file.

fn symbol_by_index(
    &'file self,
    index: SymbolIndex
) -> Result<MachOSymbol<'data, 'file, Mach, R>>
[src]

Get the debugging symbol at the given index. Read more

fn symbols(&'file self) -> MachOSymbolIterator<'data, 'file, Mach, R>

Notable traits for MachOSymbolIterator<'data, 'file, Mach, R>

impl<'data, 'file, Mach, R> Iterator for MachOSymbolIterator<'data, 'file, Mach, R> where
    Mach: MachHeader,
    R: ReadRef<'data>, 
type Item = MachOSymbol<'data, 'file, Mach, R>;
[src]

Get an iterator over the debugging symbols in the file. Read more

fn symbol_table(&'file self) -> Option<MachOSymbolTable<'data, 'file, Mach, R>>[src]

Get the symbol table, if any.

fn dynamic_symbols(&'file self) -> MachOSymbolIterator<'data, 'file, Mach, R>

Notable traits for MachOSymbolIterator<'data, 'file, Mach, R>

impl<'data, 'file, Mach, R> Iterator for MachOSymbolIterator<'data, 'file, Mach, R> where
    Mach: MachHeader,
    R: ReadRef<'data>, 
type Item = MachOSymbol<'data, 'file, Mach, R>;
[src]

Get an iterator over the dynamic linking symbols in the file. Read more

fn dynamic_symbol_table(
    &'file self
) -> Option<MachOSymbolTable<'data, 'file, Mach, R>>
[src]

Get the dynamic linking symbol table, if any. Read more

fn object_map(&'file self) -> ObjectMap<'data>[src]

Construct a map from addresses to symbol names and object file names. Read more

fn imports(&self) -> Result<Vec<Import<'data>>>[src]

Get the imported symbols.

fn exports(&self) -> Result<Vec<Export<'data>>>[src]

Get the exported symbols.

fn dynamic_relocations(&'file self) -> Option<NoDynamicRelocationIterator>[src]

Get the dynamic relocations for this file. Read more

fn has_debug_symbols(&self) -> bool[src]

Return true if the file contains debug information sections, false if not.

fn mach_uuid(&self) -> Result<Option<[u8; 16]>>[src]

The UUID from a Mach-O LC_UUID load command.

fn relative_address_base(&self) -> u64[src]

Get the base address used for relative virtual addresses. Read more

fn entry(&self) -> u64[src]

Get the virtual address of the entry point of the binary

fn flags(&self) -> FileFlags[src]

File flags that are specific to each file format.

fn endianness(&self) -> Endianness[src]

Get the endianness of the file.

fn symbol_map(&'file self) -> SymbolMap<SymbolMapName<'data>>[src]

Construct a map from addresses to symbol names. Read more

fn build_id(&self) -> Result<Option<&'data [u8]>>[src]

The build ID from an ELF NT_GNU_BUILD_ID note.

The filename and CRC from a .gnu_debuglink section.

The filename and build ID from a .gnu_debugaltlink section.

fn pdb_info(&self) -> Result<Option<CodeView<'_>>>[src]

The filename and GUID from the PE CodeView section

Auto Trait Implementations

impl<'data, Mach, R> RefUnwindSafe for MachOFile<'data, Mach, R> where
    Mach: RefUnwindSafe,
    R: RefUnwindSafe,
    <Mach as MachHeader>::Endian: RefUnwindSafe,
    <Mach as MachHeader>::Nlist: RefUnwindSafe,
    <Mach as MachHeader>::Section: RefUnwindSafe

impl<'data, Mach, R> Send for MachOFile<'data, Mach, R> where
    Mach: Sync,
    R: Send,
    <Mach as MachHeader>::Endian: Send,
    <Mach as MachHeader>::Nlist: Sync,
    <Mach as MachHeader>::Section: Sync

impl<'data, Mach, R> Sync for MachOFile<'data, Mach, R> where
    Mach: Sync,
    R: Sync,
    <Mach as MachHeader>::Endian: Sync,
    <Mach as MachHeader>::Nlist: Sync,
    <Mach as MachHeader>::Section: Sync

impl<'data, Mach, R> Unpin for MachOFile<'data, Mach, R> where
    R: Unpin,
    <Mach as MachHeader>::Endian: Unpin

impl<'data, Mach, R> UnwindSafe for MachOFile<'data, Mach, R> where
    Mach: RefUnwindSafe,
    R: UnwindSafe,
    <Mach as MachHeader>::Endian: UnwindSafe,
    <Mach as MachHeader>::Nlist: RefUnwindSafe,
    <Mach as MachHeader>::Section: RefUnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.