pub struct RelocatedLibrary { /* private fields */ }Implementations§
source§impl RelocatedLibrary
impl RelocatedLibrary
sourcepub fn dep_libs(&self) -> Option<&Vec<RelocatedLibrary>>
pub fn dep_libs(&self) -> Option<&Vec<RelocatedLibrary>>
get dependence libraries
sourcepub unsafe fn get<'lib, T>(&'lib self, name: &str) -> Result<Symbol<'lib, T>>
pub unsafe fn get<'lib, T>(&'lib self, name: &str) -> Result<Symbol<'lib, T>>
Get a pointer to a function or static variable by symbol name.
The symbol is interpreted as-is; no mangling is done. This means that symbols like x::y are
most likely invalid.
§Safety
Users of this API must specify the correct type of the function or variable loaded.
§Examples
Given a loaded library:
let lib = ELFLibrary::from_file("/path/to/awesome.module")
.unwrap()
.relocate(&[])
.unwrap();Loading and using a function looks like this:
unsafe {
let awesome_function: Symbol<unsafe extern fn(f64) -> f64> =
lib.get("awesome_function").unwrap();
awesome_function(0.42);
}A static variable may also be loaded and inspected:
unsafe {
let awesome_variable: Symbol<*mut f64> = lib.get("awesome_variable").unwrap();
**awesome_variable = 42.0;
};source§impl RelocatedLibrary
impl RelocatedLibrary
sourcepub fn register(&self) -> Option<RelocatedLibrary>
pub fn register(&self) -> Option<RelocatedLibrary>
Registers the loaded dynamic library to ensure the correct execution
of the dl_iterate_phdr function, allowing the use of the backtrace
function within the loaded dynamic library.
Trait Implementations§
source§impl Clone for RelocatedLibrary
impl Clone for RelocatedLibrary
source§fn clone(&self) -> RelocatedLibrary
fn clone(&self) -> RelocatedLibrary
Returns a copy of the value. Read more
1.6.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moresource§impl Debug for RelocatedLibrary
impl Debug for RelocatedLibrary
source§impl Drop for RelocatedLibrary
impl Drop for RelocatedLibrary
impl Send for RelocatedLibrary
impl Sync for RelocatedLibrary
Auto Trait Implementations§
impl Freeze for RelocatedLibrary
impl !RefUnwindSafe for RelocatedLibrary
impl Unpin for RelocatedLibrary
impl !UnwindSafe for RelocatedLibrary
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit)