Struct gimli::read::dwarf::Unit

source ·
pub struct Unit<R, Offset = <R as Reader>::Offset>
where R: Reader<Offset = Offset>, Offset: ReaderOffset,
{ pub header: UnitHeader<R, Offset>, pub abbreviations: Arc<Abbreviations>, pub name: Option<R>, pub comp_dir: Option<R>, pub low_pc: u64, pub str_offsets_base: DebugStrOffsetsBase<Offset>, pub addr_base: DebugAddrBase<Offset>, pub loclists_base: DebugLocListsBase<Offset>, pub rnglists_base: DebugRngListsBase<Offset>, pub line_program: Option<IncompleteLineProgram<R, Offset>>, pub dwo_id: Option<DwoId>, }
Expand description

All of the commonly used information for a unit in the .debug_info or .debug_types sections.

Fields§

§header: UnitHeader<R, Offset>

The header of the unit.

§abbreviations: Arc<Abbreviations>

The parsed abbreviations for the unit.

§name: Option<R>

The DW_AT_name attribute of the unit.

§comp_dir: Option<R>

The DW_AT_comp_dir attribute of the unit.

§low_pc: u64

The DW_AT_low_pc attribute of the unit. Defaults to 0.

§str_offsets_base: DebugStrOffsetsBase<Offset>

The DW_AT_str_offsets_base attribute of the unit. Defaults to 0.

§addr_base: DebugAddrBase<Offset>

The DW_AT_addr_base attribute of the unit. Defaults to 0.

§loclists_base: DebugLocListsBase<Offset>

The DW_AT_loclists_base attribute of the unit. Defaults to 0.

§rnglists_base: DebugRngListsBase<Offset>

The DW_AT_rnglists_base attribute of the unit. Defaults to 0.

§line_program: Option<IncompleteLineProgram<R, Offset>>

The line number program of the unit.

§dwo_id: Option<DwoId>

The DWO ID of a skeleton unit or split compilation unit.

Implementations§

source§

impl<R: Reader> Unit<R>

source

pub fn new(dwarf: &Dwarf<R>, header: UnitHeader<R>) -> Result<Self>

Construct a new Unit from the given unit header.

source

pub fn new_with_abbreviations( dwarf: &Dwarf<R>, header: UnitHeader<R>, abbreviations: Arc<Abbreviations>, ) -> Result<Self>

Construct a new Unit from the given unit header and abbreviations.

The abbreviations for this call can be obtained using dwarf.abbreviations(&header). The caller may implement caching to reuse the Abbreviations across units with the same header.debug_abbrev_offset() value.

source

pub fn unit_ref<'a>(&'a self, dwarf: &'a Dwarf<R>) -> UnitRef<'a, R>

Return a reference to this unit and its associated Dwarf.

source

pub fn encoding(&self) -> Encoding

Return the encoding parameters for this unit.

source

pub fn entry( &self, offset: UnitOffset<R::Offset>, ) -> Result<DebuggingInformationEntry<'_, '_, R>>

Read the DebuggingInformationEntry at the given offset.

source

pub fn entries(&self) -> EntriesCursor<'_, '_, R>

Navigate this unit’s DebuggingInformationEntrys.

source

pub fn entries_at_offset( &self, offset: UnitOffset<R::Offset>, ) -> Result<EntriesCursor<'_, '_, R>>

Navigate this unit’s DebuggingInformationEntrys starting at the given offset.

source

pub fn entries_tree( &self, offset: Option<UnitOffset<R::Offset>>, ) -> Result<EntriesTree<'_, '_, R>>

Navigate this unit’s DebuggingInformationEntrys as a tree starting at the given offset.

source

pub fn entries_raw( &self, offset: Option<UnitOffset<R::Offset>>, ) -> Result<EntriesRaw<'_, '_, R>>

Read the raw data that defines the Debugging Information Entries.

source

pub fn copy_relocated_attributes(&mut self, other: &Unit<R>)

Copy attributes that are subject to relocation from another unit. This is intended to be used to copy attributes from a skeleton compilation unit to the corresponding split compilation unit.

source

pub fn dwo_name(&self) -> Result<Option<AttributeValue<R>>>

Find the dwo name (if any) for this unit, automatically handling the differences between the standardized DWARF 5 split DWARF format and the pre-DWARF 5 GNU extension.

The returned value is relative to this unit’s comp_dir.

Trait Implementations§

source§

impl<R, Offset> Debug for Unit<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

Auto Trait Implementations§

§

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

§

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

§

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

§

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

§

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

§

impl<R, Offset> UnwindSafe for Unit<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> 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, U> TryFrom<U> for T
where U: Into<T>,

§

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

§

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.