[][src]Struct gimli::read::CfiEntriesIter

pub struct CfiEntriesIter<'bases, Section, R> where
    R: Reader,
    Section: UnwindSection<R>, 
{ /* fields omitted */ }

An iterator over CIE and FDE entries in a .debug_frame or .eh_frame section.

Some pointers may be encoded relative to various base addresses. Use the BaseAddresses parameter to provide them. By default, none are provided. If a relative pointer is encountered for a base address that is unknown, an Err will be returned and iteration will abort.

Can be used with FallibleIterator.

use gimli::{BaseAddresses, EhFrame, EndianSlice, NativeEndian, UnwindSection};

let eh_frame = EhFrame::new(read_eh_frame_somehow(), NativeEndian);

// Provide base addresses for relative pointers.
let bases = BaseAddresses::default()
    .set_eh_frame_hdr(address_of_eh_frame_hdr_section_in_memory)
    .set_eh_frame(address_of_eh_frame_section_in_memory)
    .set_text(address_of_text_section_in_memory)
    .set_got(address_of_got_section_in_memory);

let mut entries = eh_frame.entries(&bases);

while let Some(entry) = entries.next()? {
    do_stuff_with(entry)
}

Methods

impl<'bases, Section, R> CfiEntriesIter<'bases, Section, R> where
    R: Reader,
    Section: UnwindSection<R>, 
[src]

pub fn next(&mut self) -> Result<Option<CieOrFde<'bases, Section, R>>>[src]

Advance the iterator to the next entry.

Trait Implementations

impl<'bases, Section: Debug, R: Debug> Debug for CfiEntriesIter<'bases, Section, R> where
    R: Reader,
    Section: UnwindSection<R>, 
[src]

impl<'bases, Section: Clone, R: Clone> Clone for CfiEntriesIter<'bases, Section, R> where
    R: Reader,
    Section: UnwindSection<R>, 
[src]

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

impl<'bases, Section, R> FallibleIterator for CfiEntriesIter<'bases, Section, R> where
    R: Reader,
    Section: UnwindSection<R>, 
[src]

type Item = CieOrFde<'bases, Section, R>

The type being iterated over.

type Error = Error

The error type.

fn size_hint(&self) -> (usize, Option<usize>)[src]

Returns bounds on the remaining length of the iterator. Read more

fn count(self) -> Result<usize, Self::Error>[src]

Consumes the iterator, returning the number of remaining items.

fn last(self) -> Result<Option<Self::Item>, Self::Error>[src]

Returns the last element of the iterator.

fn nth(&mut self, n: usize) -> Result<Option<Self::Item>, Self::Error>[src]

Returns the nth element of the iterator.

fn step_by(self, step: usize) -> StepBy<Self>[src]

Returns an iterator starting at the same point, but stepping by the given amount at each iteration. Read more

fn chain<I>(self, it: I) -> Chain<Self, I> where
    I: IntoFallibleIterator<Item = Self::Item, Error = Self::Error>, 
[src]

Returns an iterator which yields the elements of this iterator followed by another. Read more

fn zip<I>(
    self,
    o: I
) -> Zip<Self, <I as IntoFallibleIterator>::IntoFallibleIter> where
    I: IntoFallibleIterator<Error = Self::Error>, 
[src]

Returns an iterator that yields pairs of this iterator's and another iterator's values. Read more

fn map<F, B>(self, f: F) -> Map<Self, F> where
    F: FnMut(Self::Item) -> Result<B, Self::Error>, 
[src]

Returns an iterator which applies a fallible transform to the elements of the underlying iterator. Read more

fn for_each<F>(self, f: F) -> Result<(), Self::Error> where
    F: FnMut(Self::Item) -> Result<(), Self::Error>, 
[src]

Calls a fallible closure on each element of an iterator.

fn filter<F>(self, f: F) -> Filter<Self, F> where
    F: FnMut(&Self::Item) -> Result<bool, Self::Error>, 
[src]

Returns an iterator which uses a predicate to determine which values should be yielded. The predicate may fail; such failures are passed to the caller. Read more

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F> where
    F: FnMut(Self::Item) -> Result<Option<B>, Self::Error>, 
[src]

Returns an iterator which both filters and maps. The closure may fail; such failures are passed along to the consumer. Read more

fn enumerate(self) -> Enumerate<Self>[src]

Returns an iterator which yields the current iteration count as well as the value. Read more

fn peekable(self) -> Peekable<Self>[src]

Returns an iterator that can peek at the next element without consuming it. Read more

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P> where
    P: FnMut(&Self::Item) -> Result<bool, Self::Error>, 
[src]

Returns an iterator that skips elements based on a predicate.

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P> where
    P: FnMut(&Self::Item) -> Result<bool, Self::Error>, 
[src]

Returns an iterator that yields elements based on a predicate.

fn skip(self, n: usize) -> Skip<Self>[src]

Returns an iterator which skips the first n values of this iterator.

fn take(self, n: usize) -> Take<Self>[src]

Returns an iterator that yields only the first n values of this iterator. Read more

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F> where
    F: FnMut(&mut St, Self::Item) -> Result<Option<B>, Self::Error>, 
[src]

Returns an iterator which applies a stateful map to values of this iterator. Read more

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F> where
    F: FnMut(Self::Item) -> Result<U, Self::Error>,
    U: IntoFallibleIterator<Error = Self::Error>, 
[src]

Returns an iterator which maps this iterator's elements to iterators, yielding those iterators' values.

fn flatten(self) -> Flatten<Self> where
    Self::Item: IntoFallibleIterator,
    <Self::Item as IntoFallibleIterator>::Error == Self::Error
[src]

Returns an iterator which flattens an iterator of iterators, yielding those iterators' values.

fn fuse(self) -> Fuse<Self>[src]

Returns an iterator which yields this iterator's elements and ends after the first Ok(None). Read more

fn inspect<F>(self, f: F) -> Inspect<Self, F> where
    F: FnMut(&Self::Item) -> Result<(), Self::Error>, 
[src]

Returns an iterator which passes each element to a closure before returning it.

fn by_ref(&mut self) -> &mut Self[src]

Borrow an iterator rather than consuming it. Read more

fn collect<T>(self) -> Result<T, Self::Error> where
    T: FromFallibleIterator<Self::Item>, 
[src]

Transforms the iterator into a collection. Read more

fn partition<B, F>(self, f: F) -> Result<(B, B), Self::Error> where
    B: Default + Extend<Self::Item>,
    F: FnMut(&Self::Item) -> Result<bool, Self::Error>, 
[src]

Transforms the iterator into two collections, partitioning elements by a closure.

fn fold<B, F>(self, init: B, f: F) -> Result<B, Self::Error> where
    F: FnMut(B, Self::Item) -> Result<B, Self::Error>, 
[src]

Applies a function over the elements of the iterator, producing a single final value. Read more

fn try_fold<B, E, F>(&mut self, init: B, f: F) -> Result<B, E> where
    E: From<Self::Error>,
    F: FnMut(B, Self::Item) -> Result<B, E>, 
[src]

Applies a function over the elements of the iterator, producing a single final value. Read more

fn all<F>(&mut self, f: F) -> Result<bool, Self::Error> where
    F: FnMut(Self::Item) -> Result<bool, Self::Error>, 
[src]

Determines if all elements of this iterator match a predicate.

fn any<F>(&mut self, f: F) -> Result<bool, Self::Error> where
    F: FnMut(Self::Item) -> Result<bool, Self::Error>, 
[src]

Determines if any element of this iterator matches a predicate.

fn find<F>(&mut self, f: F) -> Result<Option<Self::Item>, Self::Error> where
    F: FnMut(&Self::Item) -> Result<bool, Self::Error>, 
[src]

Returns the first element of the iterator that matches a predicate.

fn find_map<B, F>(&mut self, f: F) -> Result<Option<B>, Self::Error> where
    F: FnMut(Self::Item) -> Result<Option<B>, Self::Error>, 
[src]

Applies a function to the elements of the iterator, returning the first non-None result.

fn position<F>(&mut self, f: F) -> Result<Option<usize>, Self::Error> where
    F: FnMut(Self::Item) -> Result<bool, Self::Error>, 
[src]

Returns the position of the first element of this iterator that matches a predicate. The predicate may fail; such failures are returned to the caller. Read more

fn max(self) -> Result<Option<Self::Item>, Self::Error> where
    Self::Item: Ord
[src]

Returns the maximal element of the iterator.

fn max_by_key<B, F>(self, f: F) -> Result<Option<Self::Item>, Self::Error> where
    B: Ord,
    F: FnMut(&Self::Item) -> Result<B, Self::Error>, 
[src]

Returns the element of the iterator which gives the maximum value from the function. Read more

fn max_by<F>(self, f: F) -> Result<Option<Self::Item>, Self::Error> where
    F: FnMut(&Self::Item, &Self::Item) -> Result<Ordering, Self::Error>, 
[src]

Returns the element that gives the maximum value with respect to the function.

fn min(self) -> Result<Option<Self::Item>, Self::Error> where
    Self::Item: Ord
[src]

Returns the minimal element of the iterator.

fn min_by_key<B, F>(self, f: F) -> Result<Option<Self::Item>, Self::Error> where
    B: Ord,
    F: FnMut(&Self::Item) -> Result<B, Self::Error>, 
[src]

Returns the element of the iterator which gives the minimum value from the function. Read more

fn min_by<F>(self, f: F) -> Result<Option<Self::Item>, Self::Error> where
    F: FnMut(&Self::Item, &Self::Item) -> Result<Ordering, Self::Error>, 
[src]

Returns the element that gives the minimum value with respect to the function.

fn rev(self) -> Rev<Self> where
    Self: DoubleEndedFallibleIterator
[src]

Returns an iterator that yields this iterator's items in the opposite order. Read more

fn unzip<A, B, FromA, FromB>(self) -> Result<(FromA, FromB), Self::Error> where
    FromA: Default + Extend<A>,
    FromB: Default + Extend<B>,
    Self: FallibleIterator<Item = (A, B)>, 
[src]

Converts an iterator of pairs into a pair of containers.

fn cloned<'a, T>(self) -> Cloned<Self> where
    Self: FallibleIterator<Item = &'a T>,
    T: 'a + Clone
[src]

Returns an iterator which clones all of its elements.

fn cycle(self) -> Cycle<Self> where
    Self: Clone
[src]

Returns an iterator which repeas this iterator endlessly.

fn cmp<I>(self, other: I) -> Result<Ordering, Self::Error> where
    I: IntoFallibleIterator<Item = Self::Item, Error = Self::Error>,
    Self::Item: Ord
[src]

Lexicographically compares the elements of this iterator to that of another. Read more

fn partial_cmp<I>(self, other: I) -> Result<Option<Ordering>, Self::Error> where
    I: IntoFallibleIterator<Error = Self::Error>,
    Self::Item: PartialOrd<<I as IntoFallibleIterator>::Item>, 
[src]

Lexicographically compares the elements of this iterator to that of another. Read more

fn eq<I>(self, other: I) -> Result<bool, Self::Error> where
    I: IntoFallibleIterator<Error = Self::Error>,
    Self::Item: PartialEq<<I as IntoFallibleIterator>::Item>, 
[src]

Determines if the elements of this iterator are equal to those of another. Read more

fn ne<I>(self, other: I) -> Result<bool, Self::Error> where
    I: IntoFallibleIterator<Error = Self::Error>,
    Self::Item: PartialEq<<I as IntoFallibleIterator>::Item>, 
[src]

Determines if the elements of this iterator are not equal to those of another. Read more

fn lt<I>(self, other: I) -> Result<bool, Self::Error> where
    I: IntoFallibleIterator<Error = Self::Error>,
    Self::Item: PartialOrd<<I as IntoFallibleIterator>::Item>, 
[src]

Determines if the elements of this iterator are lexicographically less than those of another. Read more

fn le<I>(self, other: I) -> Result<bool, Self::Error> where
    I: IntoFallibleIterator<Error = Self::Error>,
    Self::Item: PartialOrd<<I as IntoFallibleIterator>::Item>, 
[src]

Determines if the elements of this iterator are lexicographically less than or equal to those of another. Read more

fn gt<I>(self, other: I) -> Result<bool, Self::Error> where
    I: IntoFallibleIterator<Error = Self::Error>,
    Self::Item: PartialOrd<<I as IntoFallibleIterator>::Item>, 
[src]

Determines if the elements of this iterator are lexicographically greater than those of another. Read more

fn ge<I>(self, other: I) -> Result<bool, Self::Error> where
    I: IntoFallibleIterator<Error = Self::Error>,
    Self::Item: PartialOrd<<I as IntoFallibleIterator>::Item>, 
[src]

Determines if the elements of this iterator are lexicographically greater than or equal to those of another. Read more

fn iterator(self) -> Iterator<Self>[src]

Returns a normal (non-fallible) iterator over Result<Item, Error>.

fn map_err<B, F>(self, f: F) -> MapErr<Self, F> where
    F: FnMut(Self::Error) -> B, 
[src]

Returns an iterator which applies a transform to the errors of the underlying iterator. Read more

Auto Trait Implementations

impl<'bases, Section, R> Send for CfiEntriesIter<'bases, Section, R> where
    R: Send,
    Section: Send

impl<'bases, Section, R> Sync for CfiEntriesIter<'bases, Section, R> where
    R: Sync,
    Section: Sync

impl<'bases, Section, R> Unpin for CfiEntriesIter<'bases, Section, R> where
    R: Unpin,
    Section: Unpin

impl<'bases, Section, R> UnwindSafe for CfiEntriesIter<'bases, Section, R> where
    R: UnwindSafe,
    Section: UnwindSafe

impl<'bases, Section, R> RefUnwindSafe for CfiEntriesIter<'bases, Section, R> where
    R: RefUnwindSafe,
    Section: RefUnwindSafe

Blanket Implementations

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> From<T> for T[src]

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<I> IntoFallibleIterator for I where
    I: FallibleIterator
[src]

type Item = <I as FallibleIterator>::Item

The elements of the iterator.

type Error = <I as FallibleIterator>::Error

The error value of the iterator.

type IntoFallibleIter = I

The iterator.