Struct gimli::read::cfi::CommonInformationEntry

source ·
pub struct CommonInformationEntry<R, Offset = <R as Reader>::Offset>
where R: Reader<Offset = Offset>, Offset: ReaderOffset,
{ offset: Offset, length: Offset, format: Format, version: u8, augmentation: Option<Augmentation>, address_size: u8, code_alignment_factor: u64, data_alignment_factor: i64, return_address_register: Register, initial_instructions: R, }
Expand description

A Common Information Entry holds information that is shared among many Frame Description Entries. There is at least one CIE in every non-empty .debug_frame section.

Fields§

§offset: Offset

The offset of this entry from the start of its containing section.

§length: Offset

A constant that gives the number of bytes of the CIE structure, not including the length field itself (see Section 7.2.2). The size of the length field plus the value of length must be an integral multiple of the address size.

§format: Format§version: u8

A version number (see Section 7.23). This number is specific to the call frame information and is independent of the DWARF version number.

§augmentation: Option<Augmentation>

The parsed augmentation, if any.

§address_size: u8

The size of a target address in this CIE and any FDEs that use it, in bytes. If a compilation unit exists for this frame, its address size must match the address size here.

§code_alignment_factor: u64

“A constant that is factored out of all advance location instructions (see Section 6.4.2.1).”

§data_alignment_factor: i64

A constant that is factored out of certain offset instructions (see below). The resulting value is (operand * data_alignment_factor).

§return_address_register: Register

An unsigned LEB128 constant that indicates which column in the rule table represents the return address of the function. Note that this column might not correspond to an actual machine register.

§initial_instructions: R

A sequence of rules that are interpreted to create the initial setting of each column in the table.

The default rule for all columns before interpretation of the initial instructions is the undefined rule. However, an ABI authoring body or a compilation system authoring body may specify an alternate default value for any or all columns.

This is followed by DW_CFA_nop padding until the end of length bytes in the input.

Implementations§

source§

impl<R: Reader> CommonInformationEntry<R>

source

fn parse<Section: UnwindSection<R>>( bases: &BaseAddresses, section: &Section, input: &mut R, ) -> Result<CommonInformationEntry<R>>

source

fn parse_rest<Section: UnwindSection<R>>( offset: R::Offset, length: R::Offset, format: Format, bases: &BaseAddresses, section: &Section, rest: R, ) -> Result<CommonInformationEntry<R>>

source§

impl<R: Reader> CommonInformationEntry<R>

§Signal Safe Methods

These methods are guaranteed not to allocate, acquire locks, or perform any other signal-unsafe operations.

source

pub fn offset(&self) -> R::Offset

Get the offset of this entry from the start of its containing section.

source

pub fn encoding(&self) -> Encoding

Return the encoding parameters for this CIE.

source

pub fn address_size(&self) -> u8

The size of addresses (in bytes) in this CIE.

source

pub fn instructions<'a, Section>( &self, section: &'a Section, bases: &'a BaseAddresses, ) -> CallFrameInstructionIter<'a, R>
where Section: UnwindSection<R>,

Iterate over this CIE’s initial instructions.

Can be used with FallibleIterator.

source

pub fn entry_len(&self) -> R::Offset

A constant that gives the number of bytes of the CIE structure, not including the length field itself (see Section 7.2.2). The size of the length field plus the value of length must be an integral multiple of the address size.

source

pub fn version(&self) -> u8

A version number (see Section 7.23). This number is specific to the call frame information and is independent of the DWARF version number.

source

pub fn augmentation(&self) -> Option<&Augmentation>

Get the augmentation data, if any exists.

The only augmentation understood by gimli is that which is defined by .eh_frame.

source

pub fn has_lsda(&self) -> bool

True if this CIE’s FDEs have a LSDA.

source

pub fn lsda_encoding(&self) -> Option<DwEhPe>

Return the encoding of the LSDA address for this CIE’s FDEs.

source

pub fn personality_with_encoding(&self) -> Option<(DwEhPe, Pointer)>

Return the encoding and address of the personality routine handler for this CIE’s FDEs.

source

pub fn personality(&self) -> Option<Pointer>

Return the address of the personality routine handler for this CIE’s FDEs.

source

pub fn fde_address_encoding(&self) -> Option<DwEhPe>

Return the encoding of the addresses for this CIE’s FDEs.

source

pub fn is_signal_trampoline(&self) -> bool

True if this CIE’s FDEs are trampolines for signal handlers.

source

pub fn code_alignment_factor(&self) -> u64

A constant that is factored out of all advance location instructions (see Section 6.4.2.1).

source

pub fn data_alignment_factor(&self) -> i64

A constant that is factored out of certain offset instructions (see below). The resulting value is (operand * data_alignment_factor).

source

pub fn return_address_register(&self) -> Register

An unsigned … constant that indicates which column in the rule table represents the return address of the function. Note that this column might not correspond to an actual machine register.

Trait Implementations§

source§

impl<R, Offset> Clone for CommonInformationEntry<R, Offset>
where R: Reader<Offset = Offset> + Clone, Offset: ReaderOffset + Clone,

source§

fn clone(&self) -> CommonInformationEntry<R, Offset>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<R, Offset> Debug for CommonInformationEntry<R, Offset>
where R: Reader<Offset = Offset> + Debug, Offset: ReaderOffset + Debug,

source§

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

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

impl<R, Offset> PartialEq for CommonInformationEntry<R, Offset>
where R: Reader<Offset = Offset> + PartialEq, Offset: ReaderOffset + PartialEq,

source§

fn eq(&self, other: &CommonInformationEntry<R, Offset>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<R, Offset> Eq for CommonInformationEntry<R, Offset>
where R: Reader<Offset = Offset> + Eq, Offset: ReaderOffset + Eq,

source§

impl<R, Offset> StructuralPartialEq for CommonInformationEntry<R, Offset>
where R: Reader<Offset = Offset>, Offset: ReaderOffset,

Auto Trait Implementations§

§

impl<R, Offset> Freeze for CommonInformationEntry<R, Offset>
where Offset: Freeze, R: Freeze,

§

impl<R, Offset> RefUnwindSafe for CommonInformationEntry<R, Offset>
where Offset: RefUnwindSafe, R: RefUnwindSafe,

§

impl<R, Offset> Send for CommonInformationEntry<R, Offset>
where Offset: Send, R: Send,

§

impl<R, Offset> Sync for CommonInformationEntry<R, Offset>
where Offset: Sync, R: Sync,

§

impl<R, Offset> Unpin for CommonInformationEntry<R, Offset>
where Offset: Unpin, R: Unpin,

§

impl<R, Offset> UnwindSafe for CommonInformationEntry<R, Offset>
where Offset: UnwindSafe, R: UnwindSafe,

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<T> CloneToUninit for T
where T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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> ToOwned for T
where T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. 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.