findshlibs

Trait SharedLibrary

Source
pub trait SharedLibrary: Sized + Debug {
    type Segment: Segment<SharedLibrary = Self>;
    type SegmentIter: Debug + Iterator<Item = Self::Segment>;

    // Required methods
    fn name(&self) -> &OsStr;
    fn id(&self) -> Option<SharedLibraryId>;
    fn segments(&self) -> Self::SegmentIter;
    fn virtual_memory_bias(&self) -> Bias;
    fn each<F, C>(f: F)
       where F: FnMut(&Self) -> C,
             C: Into<IterationControl>;

    // Provided methods
    fn debug_name(&self) -> Option<&OsStr> { ... }
    fn debug_id(&self) -> Option<SharedLibraryId> { ... }
    fn actual_load_addr(&self) -> Avma { ... }
    fn stated_load_addr(&self) -> Svma { ... }
    fn len(&self) -> usize { ... }
    fn avma_to_svma(&self, address: Avma) -> Svma { ... }
}
Expand description

A trait representing a shared library that is loaded in this process.

Required Associated Types§

Source

type Segment: Segment<SharedLibrary = Self>

The associated segment type for this shared library.

Source

type SegmentIter: Debug + Iterator<Item = Self::Segment>

An iterator over a shared library’s segments.

Required Methods§

Source

fn name(&self) -> &OsStr

Get the name of this shared library.

Source

fn id(&self) -> Option<SharedLibraryId>

Get the code-id of this shared library if available.

Source

fn segments(&self) -> Self::SegmentIter

Iterate over this shared library’s segments.

Source

fn virtual_memory_bias(&self) -> Bias

Get the bias of this shared library.

See the module documentation for details.

Source

fn each<F, C>(f: F)
where F: FnMut(&Self) -> C, C: Into<IterationControl>,

Find all shared libraries in this process and invoke f with each one.

Provided Methods§

Source

fn debug_name(&self) -> Option<&OsStr>

Get the name of the debug file with this shared library if there is one.

Source

fn debug_id(&self) -> Option<SharedLibraryId>

Get the debug-id of this shared library if available.

Source

fn actual_load_addr(&self) -> Avma

Returns the address of where the library is loaded into virtual memory.

This address maps to the Avma of the first segment loaded into memory. Depending on the platform, this segment may not contain code.

Source

fn stated_load_addr(&self) -> Svma

Returns the address of where the library prefers to be loaded into virtual memory.

This address maps to the Svma of the first segment loaded into memory. Depending on the platform, this segment may not contain code.

Source

fn len(&self) -> usize

Returns the size of the image.

This typically is the size of the executable code segment. This is normally used by server side symbolication systems to determine when an IP no longer falls into an image.

Source

fn avma_to_svma(&self, address: Avma) -> Svma

Given an AVMA within this shared library, convert it back to an SVMA by removing this shared library’s bias.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<'a> SharedLibrary for findshlibs::linux::SharedLibrary<'a>

Source§

impl<'a> SharedLibrary for findshlibs::unsupported::SharedLibrary<'a>