LLVM
15.0.0git
|
An abstract base class for various kinds of location tables (.debug_loc, .debug_loclists, and their dwo variants). More...
#include "llvm/DebugInfo/DWARF/DWARFDebugLoc.h"
Public Member Functions | |
DWARFLocationTable (DWARFDataExtractor Data) | |
virtual | ~DWARFLocationTable ()=default |
virtual Error | visitLocationList (uint64_t *Offset, function_ref< bool(const DWARFLocationEntry &)> Callback) const =0 |
Call the user-provided callback for each entry (including the end-of-list entry) in the location list starting at Offset . More... | |
bool | dumpLocationList (uint64_t *Offset, raw_ostream &OS, Optional< object::SectionedAddress > BaseAddr, const MCRegisterInfo *MRI, const DWARFObject &Obj, DWARFUnit *U, DIDumpOptions DumpOpts, unsigned Indent) const |
Dump the location list at the given Offset . More... | |
Error | visitAbsoluteLocationList (uint64_t Offset, Optional< object::SectionedAddress > BaseAddr, std::function< Optional< object::SectionedAddress >(uint32_t)> LookupAddr, function_ref< bool(Expected< DWARFLocationExpression >)> Callback) const |
const DWARFDataExtractor & | getData () |
Protected Member Functions | |
virtual void | dumpRawEntry (const DWARFLocationEntry &Entry, raw_ostream &OS, unsigned Indent, DIDumpOptions DumpOpts, const DWARFObject &Obj) const =0 |
Protected Attributes | |
DWARFDataExtractor | Data |
An abstract base class for various kinds of location tables (.debug_loc, .debug_loclists, and their dwo variants).
Definition at line 50 of file DWARFDebugLoc.h.
|
inline |
Definition at line 52 of file DWARFDebugLoc.h.
|
virtualdefault |
bool DWARFLocationTable::dumpLocationList | ( | uint64_t * | Offset, |
raw_ostream & | OS, | ||
Optional< object::SectionedAddress > | BaseAddr, | ||
const MCRegisterInfo * | MRI, | ||
const DWARFObject & | Obj, | ||
DWARFUnit * | U, | ||
DIDumpOptions | DumpOpts, | ||
unsigned | Indent | ||
) | const |
Dump the location list at the given Offset
.
The function returns true iff it has successfully reched the end of the list. This means that one can attempt to parse another list after the current one (Offset
will be updated to point past the end of the current list).
Definition at line 123 of file DWARFDebugLoc.cpp.
References llvm::consumeError(), Data, llvm::DIDumpOptions::DisplayRawContents, dumpRawEntry(), E, llvm::format(), llvm::Expected< T >::get(), llvm::DataExtractor::getAddressSize(), llvm::DWARFUnit::getAddrOffsetSectionItem(), if(), llvm::raw_ostream::indent(), move, llvm::None, llvm::DIDumpOptions::RecoverableErrorHandler, llvm::Expected< T >::takeError(), and visitLocationList().
Referenced by llvm::DWARFDebugLoc::dump(), llvm::DWARFContext::dump(), dumpLocationList(), dumpLoclistsSection(), and llvm::DWARFDebugLoclists::dumpRange().
|
protectedpure virtual |
Implemented in llvm::DWARFDebugLoclists, and llvm::DWARFDebugLoc.
Referenced by dumpLocationList().
|
inline |
Definition at line 79 of file DWARFDebugLoc.h.
References Data.
Error DWARFLocationTable::visitAbsoluteLocationList | ( | uint64_t | Offset, |
Optional< object::SectionedAddress > | BaseAddr, | ||
std::function< Optional< object::SectionedAddress >(uint32_t)> | LookupAddr, | ||
function_ref< bool(Expected< DWARFLocationExpression >)> | Callback | ||
) | const |
Definition at line 172 of file DWARFDebugLoc.cpp.
References E, if(), move, llvm::Expected< T >::takeError(), and visitLocationList().
Referenced by llvm::DWARFUnit::findLoclistFromOffset().
|
pure virtual |
Call the user-provided callback for each entry (including the end-of-list entry) in the location list starting at Offset
.
The callback can return false to terminate the iteration early. Returns an error if it was unable to parse the entire location list correctly. Upon successful termination Offset
will be updated point past the end of the list.
Implemented in llvm::DWARFDebugLoclists, and llvm::DWARFDebugLoc.
Referenced by dumpLocationList(), and visitAbsoluteLocationList().
|
protected |
Definition at line 82 of file DWARFDebugLoc.h.
Referenced by llvm::DWARFDebugLoc::dump(), dumpLocationList(), llvm::DWARFDebugLoclists::dumpRange(), getData(), llvm::DWARFDebugLoc::visitLocationList(), and llvm::DWARFDebugLoclists::visitLocationList().