object::read::macho

Trait MachHeader

Source
pub trait MachHeader: Debug + Pod {
    type Word: Into<u64>;
    type Endian: Endian;
    type Segment: Segment<Endian = Self::Endian, Section = Self::Section>;
    type Section: Section<Endian = Self::Endian>;
    type Nlist: Nlist<Endian = Self::Endian>;

Show 15 methods // Required methods fn is_type_64(&self) -> bool; fn is_big_endian(&self) -> bool; fn is_little_endian(&self) -> bool; fn magic(&self) -> u32; fn cputype(&self, endian: Self::Endian) -> u32; fn cpusubtype(&self, endian: Self::Endian) -> u32; fn filetype(&self, endian: Self::Endian) -> u32; fn ncmds(&self, endian: Self::Endian) -> u32; fn sizeofcmds(&self, endian: Self::Endian) -> u32; fn flags(&self, endian: Self::Endian) -> u32; // Provided methods fn parse<'data, R: ReadRef<'data>>( data: R, offset: u64, ) -> Result<&'data Self> { ... } fn is_supported(&self) -> bool { ... } fn endian(&self) -> Result<Self::Endian> { ... } fn load_commands<'data, R: ReadRef<'data>>( &self, endian: Self::Endian, data: R, header_offset: u64, ) -> Result<LoadCommandIterator<'data, Self::Endian>> { ... } fn uuid<'data, R: ReadRef<'data>>( &self, endian: Self::Endian, data: R, header_offset: u64, ) -> Result<Option<[u8; 16]>> { ... }
}
Expand description

A trait for generic access to MachHeader32 and MachHeader64.

Required Associated Types§

Source

type Word: Into<u64>

Source

type Endian: Endian

Source

type Segment: Segment<Endian = Self::Endian, Section = Self::Section>

Source

type Section: Section<Endian = Self::Endian>

Source

type Nlist: Nlist<Endian = Self::Endian>

Required Methods§

Source

fn is_type_64(&self) -> bool

Return true if this type is a 64-bit header.

This is a property of the type, not a value in the header data.

Source

fn is_big_endian(&self) -> bool

Return true if the magic field signifies big-endian.

Source

fn is_little_endian(&self) -> bool

Return true if the magic field signifies little-endian.

Source

fn magic(&self) -> u32

Source

fn cputype(&self, endian: Self::Endian) -> u32

Source

fn cpusubtype(&self, endian: Self::Endian) -> u32

Source

fn filetype(&self, endian: Self::Endian) -> u32

Source

fn ncmds(&self, endian: Self::Endian) -> u32

Source

fn sizeofcmds(&self, endian: Self::Endian) -> u32

Source

fn flags(&self, endian: Self::Endian) -> u32

Provided Methods§

Source

fn parse<'data, R: ReadRef<'data>>(data: R, offset: u64) -> Result<&'data Self>

Read the file header.

Also checks that the magic field in the file header is a supported format.

Source

fn is_supported(&self) -> bool

Source

fn endian(&self) -> Result<Self::Endian>

Source

fn load_commands<'data, R: ReadRef<'data>>( &self, endian: Self::Endian, data: R, header_offset: u64, ) -> Result<LoadCommandIterator<'data, Self::Endian>>

Source

fn uuid<'data, R: ReadRef<'data>>( &self, endian: Self::Endian, data: R, header_offset: u64, ) -> Result<Option<[u8; 16]>>

Return the UUID from the LC_UUID load command, if one is present.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<Endian: Endian> MachHeader for MachHeader32<Endian>

Source§

type Word = u32

Source§

type Endian = Endian

Source§

type Segment = SegmentCommand32<Endian>

Source§

type Section = Section32<Endian>

Source§

type Nlist = Nlist32<Endian>

Source§

impl<Endian: Endian> MachHeader for MachHeader64<Endian>

Source§

type Word = u64

Source§

type Endian = Endian

Source§

type Segment = SegmentCommand64<Endian>

Source§

type Section = Section64<Endian>

Source§

type Nlist = Nlist64<Endian>