elf_loader

Struct ElfDylib

Source
pub struct ElfDylib { /* private fields */ }
Expand description

An unrelocated dynamic library

Implementations§

Source§

impl ElfDylib

Source

pub fn relocate<'scope, S, F, D>( self, scope: S, find: &'scope F, deal_unknown: D, lazy_scope: Option<Box<dyn for<'a> Fn(&'a str) -> Option<*const ()> + 'static>>, ) -> Result<RelocatedDylib<'scope>>
where S: Iterator<Item = &'scope CoreComponent> + Clone, F: Fn(&str) -> Option<*const ()>, D: Fn(&ElfRela, &ElfDylib, S) -> bool,

Relocate the dynamic library with the given dynamic libraries and function closure.

§Note
  • During relocation, it is preferred to look for symbols in function closures find.
  • The deal_unknown function is used to handle relocation types not implemented by efl_loader or failed relocations
  • Typically, the scope should also contain the current dynamic library itself, relocation will be done in the exact order in which the dynamic libraries appear in scope.
  • When lazy binding, the symbol is first looked for in the global scope and then in the lazy scope
Source§

impl ElfDylib

Source

pub fn entry(&self) -> usize

Gets the entry point of the elf object.

Source

pub fn phdrs(&self) -> &[Phdr]

Gets phdrs of the elf object.

Source

pub fn cname(&self) -> &CStr

Gets the C-style name of the elf object.

Source

pub fn name(&self) -> &str

Gets the name of the elf object.

Source

pub fn dynamic(&self) -> *const Dyn

Gets the address of the dynamic section.

Source

pub fn base(&self) -> usize

Gets the base address of the elf object.

Source

pub fn map_len(&self) -> usize

Gets the memory length of the elf object map.

Source

pub fn symtab(&self) -> &SymbolTable

Gets the symbol table.

Source

pub fn dyn_relocation(&self) -> Option<&[ElfRela]>

Gets rela.dyn section content

Source

pub fn plt_relocation(&self) -> Option<&[ElfRela]>

Gets rela.plt section content

Source

pub unsafe fn core_component_ref(&self) -> &CoreComponent

Gets the core component reference of the elf object

§Safety

The current elf object has not yet been relocated, so it is dangerous to use this function to get CoreComponent in the elf object.

Source

pub unsafe fn core_component(&self) -> CoreComponent

Gets the core component of the elf object

§Safety

The current elf object has not yet been relocated, so it is dangerous to use this function to get CoreComponent in the elf object.

Source

pub fn needed_libs(&self) -> &[&'static str]

Gets the name of the elf object

Source

pub fn user_data(&self) -> &UserData

Gets user data from the elf object.

Source

pub fn is_lazy(&self) -> bool

Whether lazy binding is enabled for the current dynamic library.

Source

pub fn rpath(&self) -> Option<&str>

Gets the DT_RPATH value.

Source

pub fn runpath(&self) -> Option<&str>

Gets the DT_RUNPATH value.

Trait Implementations§

Source§

impl Debug for ElfDylib

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

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.