Go to the documentation of this file.
9 #ifndef LLDB_SYMBOL_LINETABLE_H
10 #define LLDB_SYMBOL_LINETABLE_H
30 virtual void Clear() = 0;
52 std::vector<std::unique_ptr<LineSequence>> &&sequences);
71 uint16_t file_idx,
bool is_start_of_statement,
72 bool is_start_of_basic_block,
bool is_prologue_end,
73 bool is_epilogue_begin,
bool is_terminal_entry);
82 uint16_t file_idx,
bool is_start_of_statement,
83 bool is_start_of_basic_block,
84 bool is_prologue_end,
bool is_epilogue_begin,
85 bool is_terminal_entry);
163 uint32_t start_idx,
const std::vector<uint32_t> &file_indexes,
220 uint16_t _file_idx,
bool _is_start_of_statement,
221 bool _is_start_of_basic_block,
bool _is_prologue_end,
222 bool _is_epilogue_begin,
bool _is_terminal_entry)
247 #define SCALAR_COMPARE(a, b) \
263 #undef SCALAR_COMPARE
271 bool operator()(
const std::unique_ptr<LineSequence> &,
272 const std::unique_ptr<LineSequence> &)
const;
316 typedef std::vector<lldb_private::Section *>
318 typedef std::vector<Entry>
333 void Clear()
override;
348 #endif // LLDB_SYMBOL_LINETABLE_H
bool FindLineEntryByAddress(const Address &so_addr, LineEntry &line_entry, uint32_t *index_ptr=nullptr)
Find a line entry that contains the section offset address so_addr.
static int Compare(const Entry &lhs, const Entry &rhs)
entry_collection m_entries
The collection of line entries in this line table.
lldb::addr_t file_addr
The file address for this line entry.
uint16_t file_idx
The file index into CompileUnit's file table, or zero if there is no file information.
uint32_t FindLineEntryIndexByFileIndex(uint32_t start_idx, uint32_t file_idx, uint32_t line, bool exact, LineEntry *line_entry_ptr)
Find a line entry index that has a matching file index and source line number.
bool GetLineEntryAtIndex(uint32_t idx, LineEntry &line_entry)
Get the line entry from the line table at index idx.
uint32_t is_prologue_end
Indicates this entry is one (of possibly many) where execution should be suspended for an entry break...
LineSequenceImpl()=default
Entry(lldb::addr_t _file_addr, uint32_t _line, uint16_t _column, uint16_t _file_idx, bool _is_start_of_statement, bool _is_start_of_basic_block, bool _is_prologue_end, bool _is_epilogue_begin, bool _is_terminal_entry)
void GetDescription(Stream *s, Target *target, lldb::DescriptionLevel level)
size_t FineLineEntriesForFileIndex(uint32_t file_idx, bool append, SymbolContextList &sc_list)
uint32_t is_terminal_entry
Indicates this entry is that of the first byte after the end of a sequence of target machine instruct...
virtual ~LineSequence()=default
#define SCALAR_COMPARE(a, b)
LessThanBinaryPredicate(LineTable *line_table)
LineTable(CompileUnit *comp_unit)
Construct with compile unit.
uint32_t is_epilogue_begin
Indicates this entry is one (of possibly many) where execution should be suspended for an exit breakp...
~LineSequenceImpl() override=default
size_t GetContiguousFileAddressRanges(FileAddressRanges &file_ranges, bool append)
Gets all contiguous file address ranges for the entire line table.
LineTable * LinkLineTable(const FileRangeMap &file_range_map)
uint32_t GetSize() const
Gets the size of the line table in number of line table entries.
void InsertSequence(LineSequence *sequence)
lldb_private::Section * a_section
entry_collection m_entries
The collection of line entries in this sequence.
uint32_t is_start_of_statement
Indicates this entry is the beginning of a statement.
static void AppendLineEntryToSequence(LineSequence *sequence, lldb::addr_t file_addr, uint32_t line, uint16_t column, uint16_t file_idx, bool is_start_of_statement, bool is_start_of_basic_block, bool is_prologue_end, bool is_epilogue_begin, bool is_terminal_entry)
std::vector< lldb_private::Section * > section_collection
The collection type for the sections.
void Dump(Stream *s, Target *target, Address::DumpStyle style, Address::DumpStyle fallback_style, bool show_line_ranges)
Dump all line entries in this line table to the stream s.
static std::unique_ptr< LineSequence > CreateLineSequenceContainer()
const LineTable & operator=(const LineTable &)=delete
uint32_t line
The source line number, or zero if there is no line number information.
std::vector< Entry > entry_collection
The collection type for the line entries.
static bool EntryAddressLessThan(const Entry &lhs, const Entry &rhs)
RangeDataVector< lldb::addr_t, lldb::addr_t, lldb::addr_t > FileRangeMap
#define LLDB_INVALID_ADDRESS
Invalid value definitions.
CompileUnit * m_comp_unit
The compile unit that this line table belongs to.
A class that represents a running process on the host machine.
lldb_private::RangeVector< lldb::addr_t, lldb::addr_t, 32 > FileAddressRanges
uint16_t column
The column number of the source line, or zero if there is no column information.
int bsearch_compare(const void *key, const void *arrmem)
DumpStyle
Dump styles allow the Address::Dump(Stream *,DumpStyle) const function to display Address contents in...
uint32_t is_start_of_basic_block
Indicates this entry is the beginning of a basic block.
bool operator()(const LineTable::Entry &, const LineTable::Entry &) const
const LineSequence & operator=(const LineSequence &)=delete
void InsertLineEntry(lldb::addr_t file_addr, uint32_t line, uint16_t column, uint16_t file_idx, bool is_start_of_statement, bool is_start_of_basic_block, bool is_prologue_end, bool is_epilogue_begin, bool is_terminal_entry)
Adds a new line entry to this line table.
bool ConvertEntryAtIndexToLineEntry(uint32_t idx, LineEntry &line_entry)
DescriptionLevel
Description levels for "void GetDescription(Stream *, DescriptionLevel)" calls.