Skip to main content

Section

Trait Section 

Source
pub trait Section: Debug + Pod {
    type Word: Into<u64>;
    type Endian: Endian;

Show 19 methods // Required methods fn sectname(&self) -> &[u8; 16]; fn segname(&self) -> &[u8; 16]; fn addr(&self, endian: Self::Endian) -> Self::Word; fn size(&self, endian: Self::Endian) -> Self::Word; fn offset(&self, endian: Self::Endian) -> u32; fn align(&self, endian: Self::Endian) -> u32; fn reloff(&self, endian: Self::Endian) -> u32; fn nreloc(&self, endian: Self::Endian) -> u32; fn flags(&self, endian: Self::Endian) -> u32; fn reserved1(&self, endian: Self::Endian) -> u32; fn reserved2(&self, endian: Self::Endian) -> u32; // Provided methods fn name(&self) -> &[u8] { ... } fn segment_name(&self) -> &[u8] { ... } fn section_type(&self, endian: Self::Endian) -> u32 { ... } fn file_range(&self, endian: Self::Endian) -> Option<(u64, u64)> { ... } fn data<'data, R: ReadRef<'data>>( &self, endian: Self::Endian, data: R, ) -> Result<&'data [u8], ()> { ... } fn relocations<'data, R: ReadRef<'data>>( &self, endian: Self::Endian, data: R, ) -> Result<&'data [Relocation<Self::Endian>]> { ... } fn symbol_stub_size(&self, endian: Self::Endian) -> u32 { ... } fn indirect_symbols<'data>( &self, endian: Self::Endian, indirect_symbols: &'data [U32<Self::Endian>], ) -> Result<&'data [U32<Self::Endian>]> { ... }
}
Expand description

A trait for generic access to macho::Section32 and macho::Section64.

Required Associated Types§

Required Methods§

Source

fn sectname(&self) -> &[u8; 16]

Source

fn segname(&self) -> &[u8; 16]

Source

fn addr(&self, endian: Self::Endian) -> Self::Word

Source

fn size(&self, endian: Self::Endian) -> Self::Word

Source

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

Source

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

Source

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

Source

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

Source

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

Source

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

Source

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

Provided Methods§

Source

fn name(&self) -> &[u8]

Return the sectname bytes up until the null terminator.

Source

fn segment_name(&self) -> &[u8]

Return the segname bytes up until the null terminator.

Source

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

Return the section type from the flags field.

Source

fn file_range(&self, endian: Self::Endian) -> Option<(u64, u64)>

Return the offset and size of the section in the file.

Returns None for sections that have no data in the file.

Source

fn data<'data, R: ReadRef<'data>>( &self, endian: Self::Endian, data: R, ) -> Result<&'data [u8], ()>

Return the section data.

Returns Ok(&[]) if the section has no data. Returns Err for invalid values.

Source

fn relocations<'data, R: ReadRef<'data>>( &self, endian: Self::Endian, data: R, ) -> Result<&'data [Relocation<Self::Endian>]>

Return the relocation array.

Returns Err for invalid values.

Source

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

Return the size of symbol stubs in this section.

Returns 0 if this section does not contain symbol stubs.

Source

fn indirect_symbols<'data>( &self, endian: Self::Endian, indirect_symbols: &'data [U32<Self::Endian>], ) -> Result<&'data [U32<Self::Endian>]>

Return the indirect symbols referenced by this section.

Returns an empty slice if this section does not reference indirect symbols.

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> Section for Section32<Endian>

Source§

type Word = u32

Source§

type Endian = Endian

Source§

impl<Endian: Endian> Section for Section64<Endian>

Source§

type Word = u64

Source§

type Endian = Endian