Struct gimli::read::DebugLine [−][src]
pub struct DebugLine<R> { /* fields omitted */ }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 OSX, etc.
use gimli::{DebugLine, LittleEndian};
let debug_line = DebugLine::new(read_debug_line_section_somehow(), LittleEndian);pub fn program(
&self,
offset: DebugLineOffset<R::Offset>,
address_size: u8,
comp_dir: Option<R>,
comp_name: Option<R>
) -> Result<IncompleteLineProgram<R>>
pub fn program(
&self,
offset: DebugLineOffset<R::Offset>,
address_size: u8,
comp_dir: Option<R>,
comp_name: Option<R>
) -> Result<IncompleteLineProgram<R>>
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(§ion, gimli::LittleEndian)
});Trait Implementations
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.
fn lookup_offset_id(&self, id: ReaderOffsetId) -> Option<(SectionId, R::Offset)> where
R: Reader,
fn lookup_offset_id(&self, id: ReaderOffsetId) -> Option<(SectionId, R::Offset)> where
R: Reader,
Returns the Reader for this section.
Auto Trait Implementations
impl<R> RefUnwindSafe for DebugLine<R> where
R: RefUnwindSafe,
impl<R> UnwindSafe for DebugLine<R> where
R: UnwindSafe,
Blanket Implementations
Mutably borrows from an owned value. Read more