LLVM
8.0.1
|
#include "llvm/DebugInfo/DWARF/DWARFDebugLine.h"
Public Types | |
using | RowVector = std::vector< Row > |
using | RowIter = RowVector::const_iterator |
using | SequenceVector = std::vector< Sequence > |
using | SequenceIter = SequenceVector::const_iterator |
Public Member Functions | |
LineTable () | |
void | appendRow (const DWARFDebugLine::Row &R) |
void | appendSequence (const DWARFDebugLine::Sequence &S) |
uint32_t | lookupAddress (uint64_t Address) const |
Returns the index of the row with file/line info for a given address, or UnknownRowIndex if there is no such row. More... | |
bool | lookupAddressRange (uint64_t Address, uint64_t Size, std::vector< uint32_t > &Result) const |
bool | hasFileAtIndex (uint64_t FileIndex) const |
bool | getFileNameByIndex (uint64_t FileIndex, const char *CompDir, DILineInfoSpecifier::FileLineInfoKind Kind, std::string &Result) const |
Extracts filename by its index in filename table in prologue. More... | |
bool | getFileLineInfoForAddress (uint64_t Address, const char *CompDir, DILineInfoSpecifier::FileLineInfoKind Kind, DILineInfo &Result) const |
Fills the Result argument with the file and line information corresponding to Address. More... | |
void | dump (raw_ostream &OS, DIDumpOptions DumpOptions) const |
void | clear () |
Error | parse (DWARFDataExtractor &DebugLineData, uint32_t *OffsetPtr, const DWARFContext &Ctx, const DWARFUnit *U, std::function< void(Error)> RecoverableErrorCallback, raw_ostream *OS=nullptr) |
Parse prologue and all rows. More... | |
Public Attributes | |
const uint32_t | UnknownRowIndex = UINT32_MAX |
Represents an invalid row. More... | |
struct Prologue | Prologue |
RowVector | Rows |
SequenceVector | Sequences |
Definition at line 213 of file DWARFDebugLine.h.
using llvm::DWARFDebugLine::LineTable::RowIter = RowVector::const_iterator |
Definition at line 257 of file DWARFDebugLine.h.
using llvm::DWARFDebugLine::LineTable::RowVector = std::vector<Row> |
Definition at line 256 of file DWARFDebugLine.h.
using llvm::DWARFDebugLine::LineTable::SequenceIter = SequenceVector::const_iterator |
Definition at line 259 of file DWARFDebugLine.h.
using llvm::DWARFDebugLine::LineTable::SequenceVector = std::vector<Sequence> |
Definition at line 258 of file DWARFDebugLine.h.
DWARFDebugLine::LineTable::LineTable | ( | ) |
Definition at line 395 of file DWARFDebugLine.cpp.
References clear().
|
inline |
Definition at line 219 of file DWARFDebugLine.h.
Referenced by clear().
|
inline |
Definition at line 221 of file DWARFDebugLine.h.
References llvm::Address, clear(), llvm::dump(), function, Kind, llvm::json::parse(), and Size.
Referenced by clear().
void DWARFDebugLine::LineTable::clear | ( | ) |
Definition at line 410 of file DWARFDebugLine.cpp.
References llvm::DWARFDebugLine::Row::Address, appendRow(), appendSequence(), llvm::DWARFDebugLine::Prologue::clear(), llvm::DWARFDebugLine::Prologue::DefaultIsStmt, llvm::DWARFDebugLine::Sequence::Empty, llvm::DWARFDebugLine::Row::EndSequence, llvm::DWARFDebugLine::Sequence::FirstRowIndex, llvm::DWARFDebugLine::Sequence::HighPC, llvm::DWARFDebugLine::Sequence::isValid(), llvm::DWARFDebugLine::Sequence::LastRowIndex, llvm::DWARFDebugLine::Sequence::LowPC, llvm::AArch64CC::LT, llvm::DWARFDebugLine::Row::postAppend(), Prologue, llvm::DWARFDebugLine::Row::reset(), and llvm::DWARFDebugLine::Sequence::reset().
void DWARFDebugLine::LineTable::dump | ( | raw_ostream & | OS, |
DIDumpOptions | DumpOptions | ||
) | const |
Definition at line 397 of file DWARFDebugLine.cpp.
References llvm::DWARFDebugLine::Prologue::dump().
Referenced by llvm::DWARFContext::dump().
bool DWARFDebugLine::LineTable::getFileLineInfoForAddress | ( | uint64_t | Address, |
const char * | CompDir, | ||
DILineInfoSpecifier::FileLineInfoKind | Kind, | ||
DILineInfo & | Result | ||
) | const |
Fills the Result argument with the file and line information corresponding to Address.
Returns true on success.
Definition at line 1014 of file DWARFDebugLine.cpp.
References llvm::DILineInfo::Column, llvm::DWARFDebugLine::Row::Column, llvm::DILineInfo::Discriminator, llvm::DWARFDebugLine::Row::Discriminator, llvm::DWARFDebugLine::Row::File, llvm::DILineInfo::FileName, llvm::DILineInfo::Line, llvm::DWARFDebugLine::Row::Line, and llvm::DILineInfo::Source.
Referenced by llvm::DWARFContext::getInliningInfoForAddress().
bool DWARFDebugLine::LineTable::getFileNameByIndex | ( | uint64_t | FileIndex, |
const char * | CompDir, | ||
DILineInfoSpecifier::FileLineInfoKind | Kind, | ||
std::string & | Result | ||
) | const |
Extracts filename by its index in filename table in prologue.
Returns true on success.
Definition at line 977 of file DWARFDebugLine.cpp.
References llvm::sys::path::append(), llvm::DWARFDebugLine::FileNameEntry::DirIdx, llvm::DWARFDebugLine::Prologue::FileNames, llvm::DWARFFormValue::getAsCString(), llvm::DWARFDebugLine::Prologue::IncludeDirectories, isPathAbsoluteOnWindowsOrPosix(), llvm::DWARFDebugLine::FileNameEntry::Name, llvm::None, and llvm::SmallString< InternalLen >::str().
Referenced by llvm::DWARFContext::getInliningInfoForAddress(), and llvm::DWARFContext::getLineInfoForAddressRange().
bool DWARFDebugLine::LineTable::hasFileAtIndex | ( | uint64_t | FileIndex | ) | const |
Definition at line 955 of file DWARFDebugLine.cpp.
References llvm::DWARFDebugLine::Prologue::FileNames, llvm::DWARFFormValue::getAsCString(), Kind, llvm::None, and llvm::DWARFDebugLine::FileNameEntry::Source.
uint32_t DWARFDebugLine::LineTable::lookupAddress | ( | uint64_t | Address | ) | const |
Returns the index of the row with file/line info for a given address, or UnknownRowIndex if there is no such row.
Definition at line 881 of file DWARFDebugLine.cpp.
References llvm::lower_bound(), llvm::DWARFDebugLine::Sequence::LowPC, and llvm::DWARFDebugLine::Sequence::orderByLowPC().
bool DWARFDebugLine::LineTable::lookupAddressRange | ( | uint64_t | Address, |
uint64_t | Size, | ||
std::vector< uint32_t > & | Result | ||
) | const |
Definition at line 904 of file DWARFDebugLine.cpp.
References assert(), llvm::DWARFDebugLine::Sequence::FirstRowIndex, I, llvm::DWARFDebugLine::Sequence::LastRowIndex, llvm::lower_bound(), llvm::DWARFDebugLine::Sequence::LowPC, llvm::DWARFDebugLine::Sequence::orderByLowPC(), and Size.
Referenced by llvm::DWARFContext::getLineInfoForAddressRange().
Error DWARFDebugLine::LineTable::parse | ( | DWARFDataExtractor & | DebugLineData, |
uint32_t * | OffsetPtr, | ||
const DWARFContext & | Ctx, | ||
const DWARFUnit * | U, | ||
std::function< void(Error)> | RecoverableErrorCallback, | ||
raw_ostream * | OS = nullptr |
||
) |
Parse prologue and all rows.
Definition at line 474 of file DWARFDebugLine.cpp.
References llvm::Address, llvm::DWARFDebugLine::Row::Address, assert(), clear(), llvm::DWARFDebugLine::Sequence::containsPC(), llvm::createStringError(), llvm::DWARFDebugLine::FileNameEntry::DirIdx, llvm::DWARFDebugLine::Prologue::dump(), llvm::DWARFDebugLine::Prologue::FileNames, llvm::DWARFDebugLine::Sequence::FirstRowIndex, llvm::format(), llvm::DataExtractor::getAddressSize(), llvm::DWARFDebugLine::Prologue::getAddressSize(), llvm::DataExtractor::getCStr(), llvm::DWARFDataExtractor::getRelocatedAddress(), llvm::DataExtractor::getSLEB128(), llvm::DataExtractor::getU16(), llvm::DataExtractor::getU8(), llvm::DataExtractor::getULEB128(), I, if(), llvm::illegal_byte_sequence, llvm::raw_ostream::indent(), llvm::invalid_argument, llvm::DWARFDebugLine::Sequence::LastRowIndex, llvm::DWARFDebugLine::FileNameEntry::Length, llvm::DWARFDebugLine::Prologue::LineBase, llvm::DWARFDebugLine::Prologue::LineRange, llvm::dwarf::LNExtendedString(), llvm::dwarf::LNStandardString(), llvm::lower_bound(), llvm::DWARFDebugLine::Prologue::MinInstLength, llvm::DWARFDebugLine::FileNameEntry::ModTime, llvm::DWARFDebugLine::FileNameEntry::Name, Name, llvm::DWARFDebugLine::Prologue::OpcodeBase, llvm::DWARFDebugLine::Row::orderByAddress(), llvm::DWARFDebugLine::Prologue::parse(), llvm::DataExtractor::setAddressSize(), llvm::DWARFFormValue::setForm(), llvm::DWARFFormValue::setPValue(), llvm::DWARFDebugLine::Prologue::sizeofTotalLength(), llvm::sort(), llvm::DWARFDebugLine::Prologue::StandardOpcodeLengths, llvm::Error::success(), llvm::DWARFDebugLine::Prologue::TotalLength, and llvm::DIDumpOptions::Verbose.
struct Prologue llvm::DWARFDebugLine::LineTable::Prologue |
Definition at line 261 of file DWARFDebugLine.h.
Referenced by clear().
RowVector llvm::DWARFDebugLine::LineTable::Rows |
Definition at line 262 of file DWARFDebugLine.h.
Referenced by llvm::DWARFContext::getLineInfoForAddressRange().
SequenceVector llvm::DWARFDebugLine::LineTable::Sequences |
Definition at line 263 of file DWARFDebugLine.h.
Represents an invalid row.
Definition at line 217 of file DWARFDebugLine.h.