Struct gimli::read::DebugLine

source ·
pub struct DebugLine<R> { /* private fields */ }
Expand description

The DebugLine struct contains the source location to instruction mapping found in the .debug_line section.

Implementations§

Construct a new DebugLine instance from the data in the .debug_line section.

It is the caller’s responsibility to read the .debug_line section and present it as a &[u8] slice. That means using some ELF loader on Linux, a Mach-O loader on macOS, etc.

use gimli::{DebugLine, LittleEndian};

let debug_line = DebugLine::new(read_debug_line_section_somehow(), LittleEndian);

Parse the line number program whose header is at the given offset in the .debug_line section.

The address_size must match the compilation unit that the lines apply to. The comp_dir should be from the DW_AT_comp_dir attribute of the compilation unit. The comp_name should be from the DW_AT_name attribute of the compilation unit.

use gimli::{DebugLine, DebugLineOffset, IncompleteLineProgram, EndianSlice, LittleEndian};

let debug_line = DebugLine::new(read_debug_line_section_somehow(), LittleEndian);

// In a real example, we'd grab the offset via a compilation unit
// entry's `DW_AT_stmt_list` attribute, and the address size from that
// unit directly.
let offset = DebugLineOffset(0);
let address_size = 8;

let program = debug_line.program(offset, address_size, None, None)
    .expect("should have found a header at that offset, and parsed it OK");

Create a DebugLine section that references the data in self.

This is useful when R implements Reader but T does not.

Example Usage
// Read the DWARF section into a `Vec` with whatever object loader you're using.
let owned_section: gimli::DebugLine<Vec<u8>> = load_section();
// Create a reference to the DWARF section.
let section = owned_section.borrow(|section| {
    gimli::EndianSlice::new(&section, gimli::LittleEndian)
});

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Returns the “default value” for a type. Read more
Converts to this type from the input type.
Returns the section id for this type.
Returns the Reader for this section.
Returns the ELF section name for this type.
Returns the ELF section name (if any) for this type when used in a dwo file. Read more
Try to load the section using the given loader function.

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more
Converts to this type from the input type.

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.