Struct gimli::write::LineProgram [−][src]
pub struct LineProgram {
pub file_has_timestamp: bool,
pub file_has_size: bool,
pub file_has_md5: bool,
// some fields omitted
}
Expand description
A line number program.
Fields
file_has_timestamp: bool
True if the file entries may have valid timestamps.
Entries may still have a timestamp of 0 even if this is set.
For version <= 4, this is ignored.
For version 5, this controls whether to emit DW_LNCT_timestamp
.
file_has_size: bool
True if the file entries may have valid sizes.
Entries may still have a size of 0 even if this is set.
For version <= 4, this is ignored.
For version 5, this controls whether to emit DW_LNCT_size
.
file_has_md5: bool
True if the file entries have valid MD5 checksums.
For version <= 4, this is ignored.
For version 5, this controls whether to emit DW_LNCT_MD5
.
Implementations
pub fn from<R: Reader<Offset = usize>>(
from_program: IncompleteLineProgram<R>,
dwarf: &Dwarf<R>,
line_strings: &mut LineStringTable,
strings: &mut StringTable,
convert_address: &dyn Fn(u64) -> Option<Address>
) -> ConvertResult<(LineProgram, Vec<FileId>)>
pub fn from<R: Reader<Offset = usize>>(
from_program: IncompleteLineProgram<R>,
dwarf: &Dwarf<R>,
line_strings: &mut LineStringTable,
strings: &mut StringTable,
convert_address: &dyn Fn(u64) -> Option<Address>
) -> ConvertResult<(LineProgram, Vec<FileId>)>
Create a line number program by reading the data from the given program.
Return the program and a mapping from file index to FileId
.
pub fn new(
encoding: Encoding,
line_encoding: LineEncoding,
comp_dir: LineString,
comp_file: LineString,
comp_file_info: Option<FileInfo>
) -> LineProgram
pub fn new(
encoding: Encoding,
line_encoding: LineEncoding,
comp_dir: LineString,
comp_file: LineString,
comp_file_info: Option<FileInfo>
) -> LineProgram
Create a new LineProgram
.
comp_dir
defines the working directory of the compilation unit,
and must be the same as the DW_AT_comp_dir
attribute
of the compilation unit DIE.
comp_file
and comp_file_info
define the primary source file
of the compilation unit and must be the same as the DW_AT_name
attribute of the compilation unit DIE.
Panics
Panics if line_encoding.line_base
> 0.
Panics if line_encoding.line_base
+ line_encoding.line_range
<= 0.
Panics if comp_dir
is empty or contains a null byte.
Panics if comp_file
is empty or contains a null byte.
Create a new LineProgram
with no fields set.
This can be used when the LineProgram
will not be used.
You should not attempt to add files or line instructions to
this line program, or write it to the .debug_line
section.
Return true if this line program was created with LineProgram::none()
.
Return the address size in bytes for this line program.
Return the id for the working directory of the compilation unit.
Add a directory entry and return its id.
If the directory already exists, then return the id of the existing entry.
If the path is relative, then the directory is located relative to the working directory of the compilation unit.
Panics
Panics if directory
is empty or contains a null byte.
pub fn add_file(
&mut self,
file: LineString,
directory: DirectoryId,
info: Option<FileInfo>
) -> FileId
pub fn add_file(
&mut self,
file: LineString,
directory: DirectoryId,
info: Option<FileInfo>
) -> FileId
Add a file entry and return its id.
If the file already exists, then return the id of the existing entry.
If the file path is relative, then the file is located relative to the directory. Otherwise the directory is meaningless, but it is still used as a key for file entries.
If info
is None
, then new entries are assigned
default information, and existing entries are unmodified.
If info
is not None
, then it is always assigned to the
entry, even if the entry already exists.
Panics
Panics if ‘file’ is empty or contains a null byte.
End the sequence, and reset the row to its default values.
Only the address_offset
and op_index` fields of the current row are used.
Panics
Panics if a sequence has not begun.
Return true if a sequence has begun.
Generates the line number information instructions for the current row.
After the instructions are generated, it sets discriminator
to 0, and sets
basic_block
, prologue_end
, and epilogue_begin
to false.
Panics
Panics if a sequence has not begun. Panics if the address_offset decreases.
Returns true if the line number program has no instructions.
Does not check the file or directory entries.
pub fn write<W: Writer>(
&self,
w: &mut DebugLine<W>,
encoding: Encoding,
debug_line_str_offsets: &DebugLineStrOffsets,
debug_str_offsets: &DebugStrOffsets
) -> Result<DebugLineOffset>
pub fn write<W: Writer>(
&self,
w: &mut DebugLine<W>,
encoding: Encoding,
debug_line_str_offsets: &DebugLineStrOffsets,
debug_str_offsets: &DebugStrOffsets
) -> Result<DebugLineOffset>
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for LineProgram
impl Send for LineProgram
impl Sync for LineProgram
impl Unpin for LineProgram
impl UnwindSafe for LineProgram
Blanket Implementations
Mutably borrows from an owned value. Read more