object::read::elf

Type Alias ElfFile32

Source
pub type ElfFile32<'data, Endian = Endianness, R = &'data [u8]> = ElfFile<'data, FileHeader32<Endian>, R>;
Expand description

A 32-bit ELF object file.

This is a file that starts with elf::FileHeader32, and corresponds to crate::FileKind::Elf32.

Aliased Type§

struct ElfFile32<'data, Endian = Endianness, R = &'data [u8]> {
    pub(super) endian: <FileHeader32<Endian> as FileHeader>::Endian,
    pub(super) data: R,
    pub(super) header: &'data FileHeader32<Endian>,
    pub(super) segments: &'data [<FileHeader32<Endian> as FileHeader>::ProgramHeader],
    pub(super) sections: SectionTable<'data, FileHeader32<Endian>, R>,
    pub(super) relocations: RelocationSections,
    pub(super) symbols: SymbolTable<'data, FileHeader32<Endian>, R>,
    pub(super) dynamic_symbols: SymbolTable<'data, FileHeader32<Endian>, R>,
}

Fields§

§endian: <FileHeader32<Endian> as FileHeader>::Endian§data: R§header: &'data FileHeader32<Endian>§segments: &'data [<FileHeader32<Endian> as FileHeader>::ProgramHeader]§sections: SectionTable<'data, FileHeader32<Endian>, R>§relocations: RelocationSections§symbols: SymbolTable<'data, FileHeader32<Endian>, R>§dynamic_symbols: SymbolTable<'data, FileHeader32<Endian>, R>

Implementations

Source§

impl<'data, Elf, R> ElfFile<'data, Elf, R>
where Elf: FileHeader, R: ReadRef<'data>,

Source

pub fn parse(data: R) -> Result<Self>

Parse the raw ELF file data.

Source

pub fn endian(&self) -> Elf::Endian

Returns the endianness.

Source

pub fn data(&self) -> R

Returns the raw data.

Source

pub fn raw_header(&self) -> &'data Elf

👎Deprecated: Use elf_header instead

Returns the raw ELF file header.

Source

pub fn raw_segments(&self) -> &'data [Elf::ProgramHeader]

👎Deprecated: Use elf_program_headers instead

Returns the raw ELF segments.

Source

pub fn elf_header(&self) -> &'data Elf

Get the raw ELF file header.

Source

pub fn elf_program_headers(&self) -> &'data [Elf::ProgramHeader]

Get the raw ELF program headers.

Returns an empty slice if the file has no program headers.

Source

pub fn elf_section_table(&self) -> &SectionTable<'data, Elf, R>

Get the ELF section table.

Returns an empty section table if the file has no section headers.

Source

pub fn elf_symbol_table(&self) -> &SymbolTable<'data, Elf, R>

Get the ELF symbol table.

Returns an empty symbol table if the file has no symbol table.

Source

pub fn elf_dynamic_symbol_table(&self) -> &SymbolTable<'data, Elf, R>

Get the ELF dynamic symbol table.

Returns an empty symbol table if the file has no dynamic symbol table.

Source

pub fn elf_relocation_sections(&self) -> &RelocationSections

Get a mapping for linked relocation sections.

Source

fn raw_section_by_name<'file>( &'file self, section_name: &[u8], ) -> Option<ElfSection<'data, 'file, Elf, R>>

Source

fn zdebug_section_by_name<'file>( &'file self, _section_name: &[u8], ) -> Option<ElfSection<'data, 'file, Elf, R>>

Trait Implementations

Source§

impl<'data, Elf, R> Debug for ElfFile<'data, Elf, R>
where Elf: FileHeader + Debug, R: ReadRef<'data> + Debug, Elf::Endian: Debug, Elf::ProgramHeader: Debug,

Source§

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

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

impl<'data, Elf, R> Object<'data> for ElfFile<'data, Elf, R>
where Elf: FileHeader, R: ReadRef<'data>,

Source§

type Segment<'file> = ElfSegment<'data, 'file, Elf, R> where Self: 'file, 'data: 'file

A loadable segment in the object file.
Source§

type SegmentIterator<'file> = ElfSegmentIterator<'data, 'file, Elf, R> where Self: 'file, 'data: 'file

An iterator for the loadable segments in the object file.
Source§

type Section<'file> = ElfSection<'data, 'file, Elf, R> where Self: 'file, 'data: 'file

A section in the object file.
Source§

type SectionIterator<'file> = ElfSectionIterator<'data, 'file, Elf, R> where Self: 'file, 'data: 'file

An iterator for the sections in the object file.
Source§

type Comdat<'file> = ElfComdat<'data, 'file, Elf, R> where Self: 'file, 'data: 'file

A COMDAT section group in the object file.
Source§

type ComdatIterator<'file> = ElfComdatIterator<'data, 'file, Elf, R> where Self: 'file, 'data: 'file

An iterator for the COMDAT section groups in the object file.
Source§

type Symbol<'file> = ElfSymbol<'data, 'file, Elf, R> where Self: 'file, 'data: 'file

A symbol in the object file.
Source§

type SymbolIterator<'file> = ElfSymbolIterator<'data, 'file, Elf, R> where Self: 'file, 'data: 'file

An iterator for symbols in the object file.
Source§

type SymbolTable<'file> = ElfSymbolTable<'data, 'file, Elf, R> where Self: 'file, 'data: 'file

A symbol table in the object file.
Source§

type DynamicRelocationIterator<'file> = ElfDynamicRelocationIterator<'data, 'file, Elf, R> where Self: 'file, 'data: 'file

An iterator for the dynamic relocations in the file. Read more
Source§

fn architecture(&self) -> Architecture

Get the architecture type of the file.
Source§

fn is_little_endian(&self) -> bool

Return true if the file is little endian, false if it is big endian.
Source§

fn is_64(&self) -> bool

Return true if the file can contain 64-bit addresses.
Source§

fn kind(&self) -> ObjectKind

Return the kind of this object.
Source§

fn segments(&self) -> ElfSegmentIterator<'data, '_, Elf, R>

Get an iterator for the loadable segments in the file. Read more
Source§

fn section_by_name_bytes<'file>( &'file self, section_name: &[u8], ) -> Option<ElfSection<'data, 'file, Elf, R>>

Like Self::section_by_name, but allows names that are not UTF-8.
Source§

fn section_by_index( &self, index: SectionIndex, ) -> Result<ElfSection<'data, '_, Elf, R>>

Get the section at the given index. Read more
Source§

fn sections(&self) -> ElfSectionIterator<'data, '_, Elf, R>

Get an iterator for the sections in the file.
Source§

fn comdats(&self) -> ElfComdatIterator<'data, '_, Elf, R>

Get an iterator for the COMDAT section groups in the file.
Source§

fn symbol_by_index( &self, index: SymbolIndex, ) -> Result<ElfSymbol<'data, '_, Elf, R>>

Get the debugging symbol at the given index. Read more
Source§

fn symbols(&self) -> ElfSymbolIterator<'data, '_, Elf, R>

Get an iterator for the debugging symbols in the file. Read more
Source§

fn symbol_table(&self) -> Option<ElfSymbolTable<'data, '_, Elf, R>>

Get the debugging symbol table, if any.
Source§

fn dynamic_symbols(&self) -> ElfSymbolIterator<'data, '_, Elf, R>

Get an iterator for the dynamic linking symbols in the file. Read more
Source§

fn dynamic_symbol_table(&self) -> Option<ElfSymbolTable<'data, '_, Elf, R>>

Get the dynamic linking symbol table, if any. Read more
Source§

fn dynamic_relocations<'file>( &'file self, ) -> Option<ElfDynamicRelocationIterator<'data, 'file, Elf, R>>

Get the dynamic relocations for this file. Read more
Source§

fn imports(&self) -> Result<Vec<Import<'data>>>

Get the imported symbols.
Source§

fn exports(&self) -> Result<Vec<Export<'data>>>

Get the exported symbols that expose both a name and an address. Read more
Source§

fn has_debug_symbols(&self) -> bool

Return true if the file contains DWARF debug information sections, false if not.
Source§

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

The build ID from an ELF NT_GNU_BUILD_ID note.
The filename and CRC from a .gnu_debuglink section.
The filename and build ID from a .gnu_debugaltlink section.
Source§

fn relative_address_base(&self) -> u64

Get the base address used for relative virtual addresses. Read more
Source§

fn entry(&self) -> u64

Get the virtual address of the entry point of the binary.
Source§

fn flags(&self) -> FileFlags

File flags that are specific to each file format.
Source§

fn sub_architecture(&self) -> Option<SubArchitecture>

Get the sub-architecture type of the file if known. Read more
Source§

fn endianness(&self) -> Endianness

Get the endianness of the file.
Source§

fn section_by_name(&self, section_name: &str) -> Option<Self::Section<'_>>

Get the section named section_name, if such a section exists. Read more
Source§

fn symbol_by_name<'file>( &'file self, symbol_name: &str, ) -> Option<Self::Symbol<'file>>

Get the symbol named symbol_name, if the symbol exists.
Source§

fn symbol_by_name_bytes<'file>( &'file self, symbol_name: &[u8], ) -> Option<Self::Symbol<'file>>

Like Self::symbol_by_name, but allows names that are not UTF-8.
Source§

fn symbol_map(&self) -> SymbolMap<SymbolMapName<'data>>

Construct a map from addresses to symbol names. Read more
Source§

fn object_map(&self) -> ObjectMap<'data>

Construct a map from addresses to symbol names and object file names. Read more
Source§

fn mach_uuid(&self) -> Result<Option<[u8; 16]>>

The UUID from a Mach-O LC_UUID load command.
Source§

fn pdb_info(&self) -> Result<Option<CodeView<'_>>>

The filename and GUID from the PE CodeView section.
Source§

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