LLVM
8.0.1
|
Represent a sequence of Call Frame Information instructions that, when read in order, construct a table mapping PC to frame state. More...
#include "llvm/DebugInfo/DWARF/DWARFDebugFrame.h"
Classes | |
struct | Instruction |
An instruction consists of a DWARF CFI opcode and an optional sequence of operands. More... | |
Public Types | |
typedef SmallVector< uint64_t, 2 > | Operands |
using | InstrList = std::vector< Instruction > |
using | iterator = InstrList::iterator |
using | const_iterator = InstrList::const_iterator |
Public Member Functions | |
iterator | begin () |
const_iterator | begin () const |
iterator | end () |
const_iterator | end () const |
unsigned | size () const |
bool | empty () const |
CFIProgram (uint64_t CodeAlignmentFactor, int64_t DataAlignmentFactor, Triple::ArchType Arch) | |
Error | parse (DataExtractor Data, uint32_t *Offset, uint32_t EndOffset) |
Parse and store a sequence of CFI instructions from Data, starting at *Offset and ending at EndOffset. More... | |
void | dump (raw_ostream &OS, const MCRegisterInfo *MRI, bool IsEH, unsigned IndentLevel=1) const |
Represent a sequence of Call Frame Information instructions that, when read in order, construct a table mapping PC to frame state.
This can also be referred to as "CFI rules" in DWARF literature to avoid confusion with computer programs in the broader sense, and in this context each instruction would be a rule to establish the mapping. Refer to pg. 172 in the DWARF5 manual, "6.4.1 Structure of Call Frame Information".
Definition at line 35 of file DWARFDebugFrame.h.
using llvm::dwarf::CFIProgram::const_iterator = InstrList::const_iterator |
Definition at line 53 of file DWARFDebugFrame.h.
using llvm::dwarf::CFIProgram::InstrList = std::vector<Instruction> |
Definition at line 51 of file DWARFDebugFrame.h.
using llvm::dwarf::CFIProgram::iterator = InstrList::iterator |
Definition at line 52 of file DWARFDebugFrame.h.
typedef SmallVector<uint64_t, 2> llvm::dwarf::CFIProgram::Operands |
Definition at line 37 of file DWARFDebugFrame.h.
|
inline |
Definition at line 63 of file DWARFDebugFrame.h.
References llvm::Data, dump(), llvm::dwarf::CFIProgram::Instruction::Instruction(), MRI, llvm::dwarf::CFIProgram::Instruction::Opcode, and parse().
|
inline |
Definition at line 55 of file DWARFDebugFrame.h.
|
inline |
Definition at line 56 of file DWARFDebugFrame.h.
void CFIProgram::dump | ( | raw_ostream & | OS, |
const MCRegisterInfo * | MRI, | ||
bool | IsEH, | ||
unsigned | IndentLevel = 1 |
||
) | const |
Definition at line 275 of file DWARFDebugFrame.cpp.
References llvm::dwarf::CallFrameString(), DWARF_CFI_PRIMARY_OPCODE_MASK, llvm::raw_ostream::indent(), llvm::dwarf::CFIProgram::Instruction::Opcode, llvm::dwarf::CFIProgram::Instruction::Ops, and llvm::SmallVectorBase::size().
Referenced by CFIProgram(), llvm::dwarf::FrameEntry::cfis(), llvm::dwarf::FDE::getLSDAAddress(), and llvm::dwarf::CIE::getLSDAPointerEncoding().
|
inline |
Definition at line 61 of file DWARFDebugFrame.h.
|
inline |
Definition at line 57 of file DWARFDebugFrame.h.
|
inline |
Definition at line 58 of file DWARFDebugFrame.h.
Error CFIProgram::parse | ( | DataExtractor | Data, |
uint32_t * | Offset, | ||
uint32_t | EndOffset | ||
) |
Parse and store a sequence of CFI instructions from Data, starting at *Offset and ending at EndOffset.
*Offset is updated to EndOffset upon successful parsing, or indicates the offset where a problem occurred in case an error is returned.
Definition at line 38 of file DWARFDebugFrame.cpp.
References assert(), llvm::dwarf::CallFrameString(), llvm::createStringError(), DECLARE_OP0, DECLARE_OP1, DECLARE_OP2, DWARF_CFI_PRIMARY_OPCODE_MASK, DWARF_CFI_PRIMARY_OPERAND_MASK, llvm::dwarf::DWARF_VERSION, llvm::dwarf::CFIProgram::Instruction::Expression, llvm::format(), llvm::DataExtractor::getAddress(), llvm::DataExtractor::getAddressSize(), llvm::DataExtractor::getData(), llvm::DataExtractor::getSLEB128(), llvm::DataExtractor::getU16(), llvm::DataExtractor::getU32(), llvm::DataExtractor::getU8(), llvm::DataExtractor::getULEB128(), llvm::illegal_byte_sequence, llvm::DataExtractor::isLittleEndian(), MRI, llvm::dwarf::CFIProgram::Instruction::Opcode, llvm::StringRef::slice(), and llvm::Error::success().
Referenced by CFIProgram().
|
inline |
Definition at line 60 of file DWARFDebugFrame.h.