pub struct ElfLoader;Expand description
ELF loader
Implementations§
Source§impl ElfLoader
impl ElfLoader
Sourcepub fn load(
data: &[u8],
vas: &mut VirtualAddressSpace,
) -> Result<u64, KernelError>
pub fn load( data: &[u8], vas: &mut VirtualAddressSpace, ) -> Result<u64, KernelError>
Load an ELF binary directly into a VAS
Sourcepub fn parse(&self, data: &[u8]) -> Result<ElfBinary, ElfError>
pub fn parse(&self, data: &[u8]) -> Result<ElfBinary, ElfError>
Parse an ELF binary from a byte slice
Sourcepub fn load_into_memory(
&self,
data: &[u8],
target_base: u64,
) -> Result<u64, ElfError>
pub fn load_into_memory( &self, data: &[u8], target_base: u64, ) -> Result<u64, ElfError>
Load an ELF binary into memory
Sourcepub fn parse_dynamic_section(
&self,
data: &[u8],
dynamic_offset: u64,
dynamic_size: u64,
) -> Result<DynamicInfo, ElfError>
pub fn parse_dynamic_section( &self, data: &[u8], dynamic_offset: u64, dynamic_size: u64, ) -> Result<DynamicInfo, ElfError>
Parse dynamic section
Sourcepub fn perform_relocations(
&self,
base_addr: u64,
relocations: &[ElfRelocation],
symbols: &[ElfSymbol],
) -> Result<(), ElfError>
pub fn perform_relocations( &self, base_addr: u64, relocations: &[ElfRelocation], symbols: &[ElfSymbol], ) -> Result<(), ElfError>
Perform relocations
Sourcepub fn resolve_symbols(
&self,
data: &[u8],
symtab_offset: u64,
symtab_size: usize,
strtab_offset: u64,
strtab_size: usize,
) -> Result<Vec<ElfSymbol>, ElfError>
pub fn resolve_symbols( &self, data: &[u8], symtab_offset: u64, symtab_size: usize, strtab_offset: u64, strtab_size: usize, ) -> Result<Vec<ElfSymbol>, ElfError>
Resolve symbols
Sourcepub fn process_relocations(
&self,
data: &[u8],
base_addr: u64,
) -> Result<(), ElfError>
pub fn process_relocations( &self, data: &[u8], base_addr: u64, ) -> Result<(), ElfError>
Process relocations for a loaded binary.
Scans the ELF data for a PT_DYNAMIC segment, parses the dynamic section to find relocation tables and the symbol table, then applies all relocations. Handles RELA and JMPREL (PLT) relocation tables.