#include "lldb/Symbol/LineTable.h"
#include "lldb/Core/Address.h"
#include "lldb/Core/Module.h"
#include "lldb/Core/Section.h"
#include "lldb/Symbol/CompileUnit.h"
#include "lldb/Utility/Stream.h"
#include <algorithm>
usingnamespacelldb;
usingnamespacelldb_private;
LineTable::LineTable(CompileUnit *comp_unit)
: … { … }
LineTable::LineTable(CompileUnit *comp_unit,
std::vector<std::unique_ptr<LineSequence>> &&sequences)
: … { … }
LineTable::~LineTable() = default;
void LineTable::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) { … }
LineSequence::LineSequence() = default;
void LineTable::LineSequenceImpl::Clear() { … }
std::unique_ptr<LineSequence> LineTable::CreateLineSequenceContainer() { … }
void LineTable::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) { … }
void LineTable::InsertSequence(LineSequence *sequence) { … }
LineTable::Entry::LessThanBinaryPredicate::LessThanBinaryPredicate(
LineTable *line_table)
: … { … }
bool LineTable::Entry::LessThanBinaryPredicate::
operator()(const LineTable::Entry &a, const LineTable::Entry &b) const { … }
bool LineTable::Entry::LessThanBinaryPredicate::
operator()(const std::unique_ptr<LineSequence> &sequence_a,
const std::unique_ptr<LineSequence> &sequence_b) const { … }
uint32_t LineTable::GetSize() const { … }
bool LineTable::GetLineEntryAtIndex(uint32_t idx, LineEntry &line_entry) { … }
bool LineTable::FindLineEntryByAddress(const Address &so_addr,
LineEntry &line_entry,
uint32_t *index_ptr) { … }
bool LineTable::ConvertEntryAtIndexToLineEntry(uint32_t idx,
LineEntry &line_entry) { … }
uint32_t LineTable::FindLineEntryIndexByFileIndex(
uint32_t start_idx, uint32_t file_idx,
const SourceLocationSpec &src_location_spec, LineEntry *line_entry_ptr) { … }
uint32_t LineTable::FindLineEntryIndexByFileIndex(
uint32_t start_idx, const std::vector<uint32_t> &file_idx,
const SourceLocationSpec &src_location_spec, LineEntry *line_entry_ptr) { … }
size_t LineTable::FindLineEntriesForFileIndex(uint32_t file_idx, bool append,
SymbolContextList &sc_list) { … }
void LineTable::Dump(Stream *s, Target *target, Address::DumpStyle style,
Address::DumpStyle fallback_style, bool show_line_ranges) { … }
void LineTable::GetDescription(Stream *s, Target *target,
DescriptionLevel level) { … }
size_t LineTable::GetContiguousFileAddressRanges(FileAddressRanges &file_ranges,
bool append) { … }
LineTable *LineTable::LinkLineTable(const FileRangeMap &file_range_map) { … }