class UnwindTable
Declaration
class UnwindTable { /* full declaration omitted */ };
Description
A class that contains all UnwindRow objects for an FDE or a single unwind row for a CIE. To unwind an address the rows, which are sorted by start address, can be searched to find the UnwindRow with the lowest starting address that is greater than or equal to the address that is being looked up.
Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFDebugFrame.h:319
Member Variables
- private llvm::dwarf::UnwindTable::RowContainer Rows
- private Optional<uint64_t> EndAddress
- The end address when data is extracted from a FDE. This value will be invalid when a UnwindTable is extracted from a CIE.
Method Overview
- public llvm::dwarf::UnwindTable::iterator begin()
- public llvm::dwarf::UnwindTable::const_iterator begin() const
- public static Expected<llvm::dwarf::UnwindTable> create(const llvm::dwarf::CIE * Cie)
- public static Expected<llvm::dwarf::UnwindTable> create(const llvm::dwarf::FDE * Fde)
- public void dump(llvm::raw_ostream & OS, const llvm::MCRegisterInfo * MRI, bool IsEH, unsigned int IndentLevel = 0) const
- public llvm::dwarf::UnwindTable::iterator end()
- public llvm::dwarf::UnwindTable::const_iterator end() const
- private llvm::Error parseRows(const llvm::dwarf::CFIProgram & CFIP, llvm::dwarf::UnwindRow & CurrRow, const llvm::dwarf::RegisterLocations * InitialLocs)
- public size_t size() const
Methods
¶llvm::dwarf::UnwindTable::iterator begin()
llvm::dwarf::UnwindTable::iterator begin()
Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFDebugFrame.h:326
¶llvm::dwarf::UnwindTable::const_iterator begin()
const
llvm::dwarf::UnwindTable::const_iterator begin()
const
Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFDebugFrame.h:327
¶static Expected<llvm::dwarf::UnwindTable> create(
const llvm::dwarf::CIE* Cie)
static Expected<llvm::dwarf::UnwindTable> create(
const llvm::dwarf::CIE* Cie)
Description
Create an UnwindTable from a Common Information Entry (CIE).
Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFDebugFrame.h:360
Parameters
- const llvm::dwarf::CIE* Cie
- The Common Information Entry to extract the table from. The CFIProgram is retrieved from the \a Cie object and used to create the UnwindTable.
Returns
An error if the DWARF Call Frame Information opcodes have state machine errors, or a valid UnwindTable otherwise.
¶static Expected<llvm::dwarf::UnwindTable> create(
const llvm::dwarf::FDE* Fde)
static Expected<llvm::dwarf::UnwindTable> create(
const llvm::dwarf::FDE* Fde)
Description
Create an UnwindTable from a Frame Descriptor Entry (FDE).
Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFDebugFrame.h:370
Parameters
- const llvm::dwarf::FDE* Fde
- The Frame Descriptor Entry to extract the table from. The CFIProgram is retrieved from the \a Fde object and used to create the UnwindTable.
Returns
An error if the DWARF Call Frame Information opcodes have state machine errors, or a valid UnwindTable otherwise.
¶void dump(llvm::raw_ostream& OS,
const llvm::MCRegisterInfo* MRI,
bool IsEH,
unsigned int IndentLevel = 0) const
void dump(llvm::raw_ostream& OS,
const llvm::MCRegisterInfo* MRI,
bool IsEH,
unsigned int IndentLevel = 0) const
Description
Dump the UnwindTable to the stream.
Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFDebugFrame.h:349
Parameters
- llvm::raw_ostream& OS
- the stream to use for output.
- const llvm::MCRegisterInfo* MRI
- register information that helps emit register names insteead of raw register numbers.
- bool IsEH
- true if the DWARF Call Frame Information is from .eh_frame instead of from .debug_frame. This is needed for register number conversion because some register numbers differ between the two sections for certain architectures like x86.
- unsigned int IndentLevel = 0
- specify the indent level as an integer. The UnwindRow will be output to the stream preceded by 2 * IndentLevel number of spaces.
¶llvm::dwarf::UnwindTable::iterator end()
llvm::dwarf::UnwindTable::iterator end()
Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFDebugFrame.h:328
¶llvm::dwarf::UnwindTable::const_iterator end()
const
llvm::dwarf::UnwindTable::const_iterator end()
const
Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFDebugFrame.h:329
¶llvm::Error parseRows(
const llvm::dwarf::CFIProgram& CFIP,
llvm::dwarf::UnwindRow& CurrRow,
const llvm::dwarf::RegisterLocations*
InitialLocs)
llvm::Error parseRows(
const llvm::dwarf::CFIProgram& CFIP,
llvm::dwarf::UnwindRow& CurrRow,
const llvm::dwarf::RegisterLocations*
InitialLocs)
Description
Parse the information in the CFIProgram and update the CurrRow object that the state machine describes. This is an internal implementation that emulates the state machine described in the DWARF Call Frame Information opcodes and will push CurrRow onto the Rows container when needed.
Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFDebugFrame.h:393
Parameters
- const llvm::dwarf::CFIProgram& CFIP
- the CFI program that contains the opcodes from a CIE or FDE.
- llvm::dwarf::UnwindRow& CurrRow
- the current row to modify while parsing the state machine.
- const llvm::dwarf::RegisterLocations* InitialLocs
- If non-NULL, we are parsing a FDE and this contains the initial register locations from the CIE. If NULL, then a CIE's opcodes are being parsed and this is not needed. This is used for the DW_CFA_restore and DW_CFA_restore_extended opcodes.
¶size_t size() const
size_t size() const
Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFDebugFrame.h:325