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>>
Retrieves the list of dependent libraries.
This method returns an optional reference to a vector of RelocatedLibrary instances,
which represent the libraries that the current dynamic library depends on.
§Examples
if let Some(dependencies) = library.dep_libs() {
for lib in dependencies {
println!("Dependency: {:?}", lib);
}
} else {
println!("No dependencies found.");
}sourcepub fn name(&self) -> &str
pub fn name(&self) -> &str
Retrieves the name of the dynamic library.
This method returns a string slice that represents the name of the dynamic library.
§Examples
let library_name = library.name();
println!("The dynamic library name is: {}", library_name);pub fn cname(&self) -> &CStr
pub fn base(&self) -> usize
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
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
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
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)
clone_to_uninit)