Struct object::read::elf::ElfSection

source ·
pub struct ElfSection<'data, 'file, Elf, R = &'data [u8]>
where Elf: FileHeader, R: ReadRef<'data>,
{ pub(super) file: &'file ElfFile<'data, Elf, R>, pub(super) index: SectionIndex, pub(super) section: &'data Elf::SectionHeader, }
Expand description

A section in an ElfFile.

Most functionality is provided by the ObjectSection trait implementation.

Fields§

§file: &'file ElfFile<'data, Elf, R>§index: SectionIndex§section: &'data Elf::SectionHeader

Implementations§

source§

impl<'data, 'file, Elf: FileHeader, R: ReadRef<'data>> ElfSection<'data, 'file, Elf, R>

source

pub fn elf_file(&self) -> &'file ElfFile<'data, Elf, R>

Get the ELF file containing this section.

source

pub fn elf_section_header(&self) -> &'data Elf::SectionHeader

Get the raw ELF section header.

source

pub fn elf_relocation_section_index(&self) -> Result<Option<SectionIndex>>

Get the index of the relocation section that references this section.

Returns None if there are no relocations. Returns an error if there are multiple relocation sections that reference this section.

source

pub fn elf_relocation_section( &self, ) -> Result<Option<&'data Elf::SectionHeader>>

Get the relocation section that references this section.

Returns None if there are no relocations. Returns an error if there are multiple relocation sections that reference this section.

source

pub fn elf_linked_rel(&self) -> Result<&'data [Elf::Rel]>

Get the Elf::Rel entries that apply to this section.

Returns an empty slice if there are no relocations. Returns an error if there are multiple relocation sections that reference this section.

source

pub fn elf_linked_rela(&self) -> Result<&'data [Elf::Rela]>

Get the Elf::Rela entries that apply to this section.

Returns an empty slice if there are no relocations. Returns an error if there are multiple relocation sections that reference this section.

source

fn bytes(&self) -> Result<&'data [u8]>

source

fn maybe_compressed(&self) -> Result<Option<CompressedFileRange>>

source

fn maybe_compressed_gnu(&self) -> Result<Option<CompressedFileRange>>

Trait Implementations§

source§

impl<'data, 'file, Elf, R> Debug for ElfSection<'data, 'file, Elf, R>
where Elf: FileHeader + Debug, R: ReadRef<'data> + Debug, Elf::SectionHeader: Debug,

source§

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

Formats the value using the given formatter. Read more
source§

impl<'data, 'file, Elf, R> ObjectSection<'data> for ElfSection<'data, 'file, Elf, R>
where Elf: FileHeader, R: ReadRef<'data>,

source§

type RelocationIterator = ElfSectionRelocationIterator<'data, 'file, Elf, R>

An iterator for the relocations for a section. Read more
source§

fn index(&self) -> SectionIndex

Returns the section index.
source§

fn address(&self) -> u64

Returns the address of the section.
source§

fn size(&self) -> u64

Returns the size of the section in memory.
source§

fn align(&self) -> u64

Returns the alignment of the section in memory.
source§

fn file_range(&self) -> Option<(u64, u64)>

Returns offset and size of on-disk segment (if any).
source§

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

Returns the raw contents of the section. Read more
source§

fn data_range(&self, address: u64, size: u64) -> Result<Option<&'data [u8]>>

Return the raw contents of the section data in the given range. Read more
source§

fn compressed_file_range(&self) -> Result<CompressedFileRange>

Returns the potentially compressed file range of the section, along with information about the compression.
source§

fn compressed_data(&self) -> Result<CompressedData<'data>>

Returns the potentially compressed contents of the section, along with information about the compression.
source§

fn name_bytes(&self) -> Result<&'data [u8]>

Returns the name of the section.
source§

fn name(&self) -> Result<&'data str>

Returns the name of the section. Read more
source§

fn segment_name_bytes(&self) -> Result<Option<&[u8]>>

Returns the name of the segment for this section.
source§

fn segment_name(&self) -> Result<Option<&str>>

Returns the name of the segment for this section. Read more
source§

fn kind(&self) -> SectionKind

Return the kind of this section.
source§

fn relocations(&self) -> ElfSectionRelocationIterator<'data, 'file, Elf, R>

Get the relocations for this section.
source§

fn relocation_map(&self) -> Result<RelocationMap>

Construct a relocation map for this section.
source§

fn flags(&self) -> SectionFlags

Section flags that are specific to each file format.
source§

fn uncompressed_data(&self) -> Result<Cow<'data, [u8]>>

Returns the uncompressed contents of the section. Read more
source§

impl<'data, 'file, Elf, R> Sealed for ElfSection<'data, 'file, Elf, R>
where Elf: FileHeader, R: ReadRef<'data>,

Auto Trait Implementations§

§

impl<'data, 'file, Elf, R> Freeze for ElfSection<'data, 'file, Elf, R>

§

impl<'data, 'file, Elf, R> RefUnwindSafe for ElfSection<'data, 'file, Elf, R>

§

impl<'data, 'file, Elf, R> Send for ElfSection<'data, 'file, Elf, R>
where <Elf as FileHeader>::SectionHeader: Sync, <Elf as FileHeader>::Endian: Sync, R: Sync, Elf: Sync, <Elf as FileHeader>::ProgramHeader: Sync, <Elf as FileHeader>::Sym: Sync,

§

impl<'data, 'file, Elf, R> Sync for ElfSection<'data, 'file, Elf, R>
where <Elf as FileHeader>::SectionHeader: Sync, <Elf as FileHeader>::Endian: Sync, R: Sync, Elf: Sync, <Elf as FileHeader>::ProgramHeader: Sync, <Elf as FileHeader>::Sym: Sync,

§

impl<'data, 'file, Elf, R> Unpin for ElfSection<'data, 'file, Elf, R>

§

impl<'data, 'file, Elf, R> UnwindSafe for ElfSection<'data, 'file, Elf, R>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

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

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

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

The type returned in the event of a conversion error.
source§

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

Performs the conversion.