Skip to main content

Unit

Struct Unit 

Source
pub struct Unit {
    pub name: String,
    pub dir: String,
    pub producer: String,
    pub files: Vec<String>,
    pub types: Vec<Shape>,
    pub funcs: Vec<Function>,
    pub globals: Vec<Global>,
    pub pointer: u8,
    pub frames: bool,
}
Expand description

One compilation unit’s worth of debug information.

Fields§

§name: String

The file being compiled, as the command line spelled it, already prefix mapped.

§dir: String

The directory the compiler was run in, already prefix mapped.

This is DW_AT_comp_dir, and what it is for is that every relative name in the tables below is relative to it. A build that cannot say where it ran writes a single dot, which is what the tables are already relative to and is therefore the one answer that changes nothing.

§producer: String

What produced this, which is this compiler and its version.

§files: Vec<String>

Every file any row names, in the order the rows refer to them by.

§types: Vec<Shape>

Every type anything in the unit names, in the order they refer to them by.

A table of indices rather than a tree, so that a type naming itself is an ordinary entry. See Shape for what is in one and what is deliberately left out of one.

§funcs: Vec<Function>

The functions, in the order the text section holds them.

§globals: Vec<Global>

The file-scope variables this unit defines, in the order the object file holds them.

Only the ones it defines. A name this unit declares and another one defines is a name the linker resolves, so an entry for it here would be an entry whose address is somebody else’s, and a reader wanting the type of one reads the unit that has it.

§pointer: u8

How many bytes an address is on this target.

§frames: bool

Whether this build writes a call frame table, which is what a frame base is resolved through.

A function’s DW_AT_frame_base is DW_OP_call_frame_cfa, and what answers that operation is the unwind table the build already writes for every function. A build that turns the table off, which is a kernel or a freestanding image, leaves a reader with nothing to evaluate the operation against, so the attribute is left off there rather than written as something no debugger can follow. The locations that would be measured from it are left off with it.

Trait Implementations§

Source§

impl Clone for Unit

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Unit

Source§

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

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

impl Default for Unit

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Eq for Unit

Source§

impl PartialEq for Unit

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Unit

Auto Trait Implementations§

§

impl Freeze for Unit

§

impl RefUnwindSafe for Unit

§

impl Send for Unit

§

impl Sync for Unit

§

impl Unpin for Unit

§

impl UnsafeUnpin for Unit

§

impl UnwindSafe for Unit

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, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
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 = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

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.