Trait object::read::ObjectSection

source ·
pub trait ObjectSection<'data>: Sealed {
    type RelocationIterator: Iterator<Item = (u64, Relocation)>;

Show 18 methods // Required methods fn index(&self) -> SectionIndex; fn address(&self) -> u64; fn size(&self) -> u64; fn align(&self) -> u64; fn file_range(&self) -> Option<(u64, u64)>; fn data(&self) -> Result<&'data [u8]>; fn data_range(&self, address: u64, size: u64) -> Result<Option<&'data [u8]>>; fn compressed_file_range(&self) -> Result<CompressedFileRange>; fn compressed_data(&self) -> Result<CompressedData<'data>>; fn name_bytes(&self) -> Result<&'data [u8]>; fn name(&self) -> Result<&'data str>; fn segment_name_bytes(&self) -> Result<Option<&[u8]>>; fn segment_name(&self) -> Result<Option<&str>>; fn kind(&self) -> SectionKind; fn relocations(&self) -> Self::RelocationIterator; fn relocation_map(&self) -> Result<RelocationMap>; fn flags(&self) -> SectionFlags; // Provided method fn uncompressed_data(&self) -> Result<Cow<'data, [u8]>> { ... }
}
Expand description

A section in an Object.

This trait is part of the unified read API.

Required Associated Types§

source

type RelocationIterator: Iterator<Item = (u64, Relocation)>

An iterator for the relocations for a section.

The first field in the item tuple is the section offset that the relocation applies to.

Required Methods§

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.

The length of this data may be different from the size of the section in memory.

This does not do any decompression.

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.

This does not do any decompression.

Returns Ok(None) if the section does not contain the given range.

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.

Returns an error if the name is not UTF-8.

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.

Returns an error if the name is not UTF-8.

source

fn kind(&self) -> SectionKind

Return the kind of this section.

source

fn relocations(&self) -> Self::RelocationIterator

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.

Provided Methods§

source

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

Returns the uncompressed contents of the section.

The length of this data may be different from the size of the section in memory.

If no compression is detected, then returns the data unchanged. Returns Err if decompression fails.

Implementors§

source§

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

source§

impl<'data, 'file, Mach, R> ObjectSection<'data> for MachOSection<'data, 'file, Mach, R>
where Mach: MachHeader, R: ReadRef<'data>,

§

type RelocationIterator = MachORelocationIterator<'data, 'file, Mach, R>

source§

impl<'data, 'file, Pe, R> ObjectSection<'data> for PeSection<'data, 'file, Pe, R>
where Pe: ImageNtHeaders, R: ReadRef<'data>,

source§

impl<'data, 'file, R: ReadRef<'data>> ObjectSection<'data> for Section<'data, 'file, R>

source§

impl<'data, 'file, R: ReadRef<'data>, Coff: CoffHeader> ObjectSection<'data> for CoffSection<'data, 'file, R, Coff>

§

type RelocationIterator = CoffRelocationIterator<'data, 'file, R, Coff>

source§

impl<'data, 'file, Xcoff, R> ObjectSection<'data> for XcoffSection<'data, 'file, Xcoff, R>
where Xcoff: FileHeader, R: ReadRef<'data>,

§

type RelocationIterator = XcoffRelocationIterator<'data, 'file, Xcoff, R>