LLVM 20.0.0git
|
A class that represents a single row in the unwind table that is decoded by parsing the DWARF Call Frame Information opcodes. More...
#include "llvm/DebugInfo/DWARF/DWARFDebugFrame.h"
Public Member Functions | |
UnwindRow () | |
bool | hasAddress () const |
Returns true if the address is valid in this object. | |
uint64_t | getAddress () const |
Get the address for this row. | |
void | setAddress (uint64_t Addr) |
Set the address for this UnwindRow. | |
void | slideAddress (uint64_t Offset) |
Offset the address for this UnwindRow. | |
UnwindLocation & | getCFAValue () |
const UnwindLocation & | getCFAValue () const |
RegisterLocations & | getRegisterLocations () |
const RegisterLocations & | getRegisterLocations () const |
void | dump (raw_ostream &OS, DIDumpOptions DumpOpts, unsigned IndentLevel=0) const |
Dump the UnwindRow to the stream. | |
A class that represents a single row in the unwind table that is decoded by parsing the DWARF Call Frame Information opcodes.
The row consists of an optional address, the rule to unwind the CFA and all rules to unwind any registers. If the address doesn't have a value, this row represents the initial instructions for a CIE. If the address has a value the UnwindRow represents a row in the UnwindTable for a FDE. The address is the first address for which the CFA location and register rules are valid within a function.
UnwindRow objects are created by parsing opcodes in the DWARF Call Frame Information and UnwindRow objects are lazily populated and pushed onto a stack in the UnwindTable when evaluating this state machine. Accessors are needed for the address, CFA value, and register locations as the opcodes encode a state machine that produces a sorted array of UnwindRow objects
Definition at line 255 of file DWARFDebugFrame.h.
|
inline |
Definition at line 263 of file DWARFDebugFrame.h.
void UnwindRow::dump | ( | raw_ostream & | OS, |
DIDumpOptions | DumpOpts, | ||
unsigned | IndentLevel = 0 |
||
) | const |
Dump the UnwindRow to the stream.
OS | the stream to use for output. |
MRI | register information that helps emit register names insteead of raw register numbers. |
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. |
IndentLevel | specify the indent level as an integer. The UnwindRow will be output to the stream preceded by 2 * IndentLevel number of spaces. |
Definition at line 171 of file DWARFDebugFrame.cpp.
References llvm::dwarf::UnwindLocation::dump(), llvm::dwarf::RegisterLocations::dump(), llvm::format(), hasAddress(), llvm::dwarf::RegisterLocations::hasLocations(), llvm::raw_ostream::indent(), and OS.
|
inline |
Get the address for this row.
Clients should only call this function after verifying it has a valid address with a call to
Definition at line 272 of file DWARFDebugFrame.h.
References Address.
|
inline |
Definition at line 287 of file DWARFDebugFrame.h.
|
inline |
Definition at line 288 of file DWARFDebugFrame.h.
|
inline |
Definition at line 289 of file DWARFDebugFrame.h.
|
inline |
Definition at line 290 of file DWARFDebugFrame.h.
|
inline |
Returns true if the address is valid in this object.
Definition at line 266 of file DWARFDebugFrame.h.
References Address.
Referenced by dump().
|
inline |
Set the address for this UnwindRow.
The address represents the first address for which the CFAValue and RegLocs are valid within a function.
Definition at line 278 of file DWARFDebugFrame.h.
|
inline |
Offset the address for this UnwindRow.
The address represents the first address for which the CFAValue and RegLocs are valid within a function. Clients must ensure that this object already has an address (
Definition at line 286 of file DWARFDebugFrame.h.
References Address, and llvm::Offset.