LLVM 22.0.0git
llvm::dwarf::UnwindRow Class Reference

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/LowLevel/DWARFUnwindTable.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.
UnwindLocationgetCFAValue ()
const UnwindLocationgetCFAValue () const
RegisterLocationsgetRegisterLocations ()
const RegisterLocationsgetRegisterLocations () const

Detailed Description

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

See also
UnwindTable.

Definition at line 231 of file DWARFUnwindTable.h.

Constructor & Destructor Documentation

◆ UnwindRow()

llvm::dwarf::UnwindRow::UnwindRow ( )
inline

Definition at line 239 of file DWARFUnwindTable.h.

Member Function Documentation

◆ getAddress()

uint64_t llvm::dwarf::UnwindRow::getAddress ( ) const
inline

Get the address for this row.

Clients should only call this function after verifying it has a valid address with a call to

See also
hasAddress().

Definition at line 248 of file DWARFUnwindTable.h.

◆ getCFAValue() [1/2]

UnwindLocation & llvm::dwarf::UnwindRow::getCFAValue ( )
inline

Definition at line 263 of file DWARFUnwindTable.h.

Referenced by getCFARegOffsetInfo().

◆ getCFAValue() [2/2]

const UnwindLocation & llvm::dwarf::UnwindRow::getCFAValue ( ) const
inline

Definition at line 264 of file DWARFUnwindTable.h.

◆ getRegisterLocations() [1/2]

RegisterLocations & llvm::dwarf::UnwindRow::getRegisterLocations ( )
inline

Definition at line 265 of file DWARFUnwindTable.h.

Referenced by getUnwindRuleRegSet().

◆ getRegisterLocations() [2/2]

const RegisterLocations & llvm::dwarf::UnwindRow::getRegisterLocations ( ) const
inline

Definition at line 266 of file DWARFUnwindTable.h.

◆ hasAddress()

bool llvm::dwarf::UnwindRow::hasAddress ( ) const
inline

Returns true if the address is valid in this object.

Definition at line 242 of file DWARFUnwindTable.h.

◆ setAddress()

void llvm::dwarf::UnwindRow::setAddress ( uint64_t Addr)
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 254 of file DWARFUnwindTable.h.

Referenced by llvm::dwarf::createUnwindTable().

◆ slideAddress()

void llvm::dwarf::UnwindRow::slideAddress ( uint64_t Offset)
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 (

See also
hasAddress()) prior to calling this function.

Definition at line 262 of file DWARFUnwindTable.h.

References llvm::Offset.


The documentation for this class was generated from the following file: