Skip to main content

MachHeader

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 macho::MachHeader32 and macho::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".

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>