pub struct ExceptionData<'a> { /* private fields */ }
Expand description
Exception handling and stack unwind information for functions in the image.
Implementations§
Source§impl<'a> ExceptionData<'a>
impl<'a> ExceptionData<'a>
Sourcepub fn parse(
bytes: &'a [u8],
directory: DataDirectory,
sections: &[SectionTable],
file_alignment: u32,
) -> Result<ExceptionData<'a>, Error>
pub fn parse( bytes: &'a [u8], directory: DataDirectory, sections: &[SectionTable], file_alignment: u32, ) -> Result<ExceptionData<'a>, Error>
Parses exception data from the image at the given offset.
Sourcepub fn parse_with_opts(
bytes: &'a [u8],
directory: DataDirectory,
sections: &[SectionTable],
file_alignment: u32,
opts: &ParseOptions,
) -> Result<ExceptionData<'a>, Error>
pub fn parse_with_opts( bytes: &'a [u8], directory: DataDirectory, sections: &[SectionTable], file_alignment: u32, opts: &ParseOptions, ) -> Result<ExceptionData<'a>, Error>
Parses exception data from the image at the given offset.
Sourcepub fn functions(&self) -> RuntimeFunctionIterator<'a> ⓘ
pub fn functions(&self) -> RuntimeFunctionIterator<'a> ⓘ
Iterates all function entries in order of their code offset.
To search for a function by relative instruction address, use find_function
. To resolve
unwind information, use get_unwind_info
.
Sourcepub fn get_function(&self, index: usize) -> Result<RuntimeFunction, Error>
pub fn get_function(&self, index: usize) -> Result<RuntimeFunction, Error>
Returns the function at the given index.
Sourcepub fn find_function(&self, rva: u32) -> Result<Option<RuntimeFunction>, Error>
pub fn find_function(&self, rva: u32) -> Result<Option<RuntimeFunction>, Error>
Performs a binary search to find a function entry covering the given RVA relative to the image.
Sourcepub fn get_unwind_info(
&self,
function: RuntimeFunction,
sections: &[SectionTable],
) -> Result<UnwindInfo<'a>, Error>
pub fn get_unwind_info( &self, function: RuntimeFunction, sections: &[SectionTable], ) -> Result<UnwindInfo<'a>, Error>
Resolves unwind information for the given function entry.
Sourcepub fn get_unwind_info_with_opts(
&self,
function: RuntimeFunction,
sections: &[SectionTable],
opts: &ParseOptions,
) -> Result<UnwindInfo<'a>, Error>
pub fn get_unwind_info_with_opts( &self, function: RuntimeFunction, sections: &[SectionTable], opts: &ParseOptions, ) -> Result<UnwindInfo<'a>, Error>
Resolves unwind information for the given function entry.
Trait Implementations§
Source§impl Debug for ExceptionData<'_>
impl Debug for ExceptionData<'_>
Source§impl<'a> IntoIterator for &ExceptionData<'a>
impl<'a> IntoIterator for &ExceptionData<'a>
Source§type IntoIter = RuntimeFunctionIterator<'a>
type IntoIter = RuntimeFunctionIterator<'a>
Which kind of iterator are we turning this into?
Source§fn into_iter(self) -> <&ExceptionData<'a> as IntoIterator>::IntoIter
fn into_iter(self) -> <&ExceptionData<'a> as IntoIterator>::IntoIter
Creates an iterator from a value. Read more
Auto Trait Implementations§
impl<'a> Freeze for ExceptionData<'a>
impl<'a> RefUnwindSafe for ExceptionData<'a>
impl<'a> Send for ExceptionData<'a>
impl<'a> Sync for ExceptionData<'a>
impl<'a> Unpin for ExceptionData<'a>
impl<'a> UnwindSafe for ExceptionData<'a>
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<I, T> ExtractContext<I, ()> for T
impl<I, T> ExtractContext<I, ()> for T
Source§fn extract_context(self, _original_input: I)
fn extract_context(self, _original_input: I)
Given the context attached to a nom error, and given the original
input to the nom parser, extract more the useful context information. Read more
Source§impl<T> Joinable for Twhere
&'a T: for<'a> IntoIterator,
impl<T> Joinable for Twhere
&'a T: for<'a> IntoIterator,
type Collection = T
Source§fn join_concat(self) -> Join<Self::Collection, NoSeparator>
fn join_concat(self) -> Join<Self::Collection, NoSeparator>
Join this object with an empty separator. When rendered
with
Display
, the underlying elements will be directly concatenated.
Note that the separator, while empty, is still present, and will show
up if you iterate this instance. Read moreSource§impl<I> RecreateContext<I> for I
impl<I> RecreateContext<I> for I
Source§fn recreate_context(_original_input: I, tail: I) -> I
fn recreate_context(_original_input: I, tail: I) -> I
Given the original input, as well as the context reported by nom,
recreate a context in the original string where the error occurred. Read more