ExceptionData

Struct ExceptionData 

Source
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>

Source

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.

Source

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.

Source

pub fn len(&self) -> usize

The number of function entries described by this exception data.

Source

pub fn is_empty(&self) -> bool

Indicating whether there are functions in this entry.

Source

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.

Source

pub fn get_function(&self, index: usize) -> Result<RuntimeFunction, Error>

Returns the function at the given index.

Source

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.

Source

pub fn get_unwind_info( &self, function: RuntimeFunction, sections: &[SectionTable], ) -> Result<UnwindInfo<'a>, Error>

Resolves unwind information for the given function entry.

Source

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<'_>

Source§

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

Formats the value using the given formatter. Read more
Source§

impl<'a> IntoIterator for &ExceptionData<'a>

Source§

type Item = Result<RuntimeFunction, Error>

The type of the elements being iterated over.
Source§

type IntoIter = RuntimeFunctionIterator<'a>

Which kind of iterator are we turning this into?
Source§

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> 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<I, T> ExtractContext<I, ()> for T

Source§

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> 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> Joinable for T
where &'a T: for<'a> IntoIterator,

Source§

type Collection = T

Source§

fn join_with<S>(self, sep: S) -> Join<T, S>

Combine this object with a separator to create a new Join instance. Note that the separator does not have to share the same type as the iterator’s values. Read more
Source§

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 more
Source§

impl<I> RecreateContext<I> for I

Source§

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
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.