LLVM
8.0.1
|
This class represents an Operation in the Expression. More...
#include "llvm/DebugInfo/DWARF/DWARFExpression.h"
Classes | |
struct | Description |
Description of the encoding of one expression Op. More... | |
Public Types | |
enum | Encoding : uint8_t { Size1 = 0, Size2 = 1, Size4 = 2, Size8 = 3, SizeLEB = 4, SizeAddr = 5, SizeRefAddr = 6, SizeBlock = 7, SignBit = 0x8, SignedSize1 = SignBit | Size1, SignedSize2 = SignBit | Size2, SignedSize4 = SignBit | Size4, SignedSize8 = SignBit | Size8, SignedSizeLEB = SignBit | SizeLEB, SizeNA = 0xFF } |
Size and signedness of expression operations' operands. More... | |
enum | DwarfVersion : uint8_t { DwarfNA, Dwarf2 = 2, Dwarf3, Dwarf4 } |
Public Member Functions | |
Description & | getDescription () |
uint8_t | getCode () |
uint64_t | getRawOperand (unsigned Idx) |
uint32_t | getEndOffset () |
bool | extract (DataExtractor Data, uint16_t Version, uint8_t AddressSize, uint32_t Offset) |
bool | isError () |
bool | print (raw_ostream &OS, const DWARFExpression *U, const MCRegisterInfo *RegInfo, bool isEH) |
Friends | |
class | DWARFExpression::iterator |
This class represents an Operation in the Expression.
Each operation can have up to 2 oprerands.
An Operation can be in Error state (check with isError()). This means that it couldn't be decoded successfully and if it is the case, all others fields contain undefined values.
Definition at line 33 of file DWARFExpression.h.
enum llvm::DWARFExpression::Operation::DwarfVersion : uint8_t |
Enumerator | |
---|---|
DwarfNA | Serves as a marker for unused entries. |
Dwarf2 | |
Dwarf3 | |
Dwarf4 |
Definition at line 54 of file DWARFExpression.h.
enum llvm::DWARFExpression::Operation::Encoding : uint8_t |
Size and signedness of expression operations' operands.
Definition at line 36 of file DWARFExpression.h.
bool llvm::DWARFExpression::Operation::extract | ( | DataExtractor | Data, |
uint16_t | Version, | ||
uint8_t | AddressSize, | ||
uint32_t | Offset | ||
) |
Definition at line 116 of file DWARFExpression.cpp.
References assert(), llvm::getOpDesc(), llvm::getRefAddrSize(), llvm::DataExtractor::getSLEB128(), llvm::DataExtractor::getU16(), llvm::DataExtractor::getU32(), llvm::DataExtractor::getU64(), llvm::DataExtractor::getU8(), llvm::DataExtractor::getULEB128(), llvm_unreachable, Signed, and Size.
Referenced by getEndOffset(), and llvm::DWARFExpression::iterator::operator++().
|
inline |
Definition at line 84 of file DWARFExpression.h.
Referenced by isVariableIndexable().
|
inline |
Definition at line 83 of file DWARFExpression.h.
|
inline |
Definition at line 86 of file DWARFExpression.h.
References llvm::Data, extract(), and llvm::DWARFExpression::Operation::Description::Version.
|
inline |
Definition at line 85 of file DWARFExpression.h.
|
inline |
Definition at line 89 of file DWARFExpression.h.
References llvm::lltok::Error, and print().
Referenced by llvm::DWARFVerifier::handleDebugInfo(), isVariableIndexable(), and llvm::DWARFExpression::iterator::operator++().
bool llvm::DWARFExpression::Operation::print | ( | raw_ostream & | OS, |
const DWARFExpression * | U, | ||
const MCRegisterInfo * | RegInfo, | ||
bool | isEH | ||
) |
Definition at line 222 of file DWARFExpression.cpp.
References assert(), llvm::StringRef::empty(), llvm::format(), llvm::DataExtractor::getU8(), Name, llvm::dwarf::OperationEncodingString(), llvm::prettyPrintRegisterOp(), Signed, and Size.
Referenced by llvm::DWARFExpression::end(), and isError().
|
friend |
Definition at line 75 of file DWARFExpression.h.