Trait object::read::ObjectSegment

source ·
pub trait ObjectSegment<'data>: Sealed {
    // Required methods
    fn address(&self) -> u64;
    fn size(&self) -> u64;
    fn align(&self) -> u64;
    fn file_range(&self) -> (u64, u64);
    fn data(&self) -> Result<&'data [u8]>;
    fn data_range(&self, address: u64, size: u64) -> Result<Option<&'data [u8]>>;
    fn name_bytes(&self) -> Result<Option<&[u8]>>;
    fn name(&self) -> Result<Option<&str>>;
    fn flags(&self) -> SegmentFlags;
}
Expand description

A loadable segment defined in an object file.

For ELF, this is a program header with type PT_LOAD. For Mach-O, this is a load command with type LC_SEGMENT or LC_SEGMENT_64.

Required Methods§

source

fn address(&self) -> u64

Returns the virtual address of the segment.

source

fn size(&self) -> u64

Returns the size of the segment in memory.

source

fn align(&self) -> u64

Returns the alignment of the segment in memory.

source

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

Returns the offset and size of the segment in the file.

source

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

Returns a reference to the file contents of the segment.

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

source

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

Return the segment data in the given range.

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

source

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

Returns the name of the segment.

source

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

Returns the name of the segment.

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

source

fn flags(&self) -> SegmentFlags

Return the flags of segment.

Implementors§

source§

impl<'data, 'file, Elf, R> ObjectSegment<'data> for ElfSegment<'data, 'file, Elf, R>
where Elf: FileHeader, R: ReadRef<'data>,

source§

impl<'data, 'file, Mach, R> ObjectSegment<'data> for MachOSegment<'data, 'file, Mach, R>
where Mach: MachHeader, R: ReadRef<'data>,

source§

impl<'data, 'file, Pe, R> ObjectSegment<'data> for PeSegment<'data, 'file, Pe, R>
where Pe: ImageNtHeaders, R: ReadRef<'data>,

source§

impl<'data, 'file, R: ReadRef<'data>> ObjectSegment<'data> for Segment<'data, 'file, R>

source§

impl<'data, 'file, R: ReadRef<'data>, Coff: CoffHeader> ObjectSegment<'data> for CoffSegment<'data, 'file, R, Coff>