LLVM 17.0.0git
Classes | Public Types | Public Member Functions | Static Public Member Functions | Friends | List of all members
llvm::DWARFExpression::Operation Class Reference

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 ,
  BaseTypeRef = 8 , WasmLocationArg = 30 , SignBit = 0x80 , 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 ,
  Dwarf5
}
 

Public Member Functions

const DescriptiongetDescription () const
 
uint8_t getCode () const
 
uint64_t getRawOperand (unsigned Idx) const
 
uint64_t getOperandEndOffset (unsigned Idx) const
 
uint64_t getEndOffset () const
 
bool isError () const
 
bool print (raw_ostream &OS, DIDumpOptions DumpOpts, const DWARFExpression *Expr, DWARFUnit *U) const
 

Static Public Member Functions

static bool verify (const Operation &Op, DWARFUnit *U)
 Verify Op. Does not affect the return of isError().
 

Friends

class DWARFExpression::iterator
 

Detailed Description

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.

Member Enumeration Documentation

◆ DwarfVersion

Enumerator
DwarfNA 

Serves as a marker for unused entries.

Dwarf2 
Dwarf3 
Dwarf4 
Dwarf5 

Definition at line 56 of file DWARFExpression.h.

◆ Encoding

Size and signedness of expression operations' operands.

Enumerator
Size1 
Size2 
Size4 
Size8 
SizeLEB 
SizeAddr 
SizeRefAddr 
SizeBlock 

Preceding operand contains block size.

BaseTypeRef 
WasmLocationArg 
SignBit 
SignedSize1 
SignedSize2 
SignedSize4 
SignedSize8 
SignedSizeLEB 
SizeNA 

Unused operands get this encoding.

Definition at line 36 of file DWARFExpression.h.

Member Function Documentation

◆ getCode()

uint8_t llvm::DWARFExpression::Operation::getCode ( ) const
inline

Definition at line 88 of file DWARFExpression.h.

◆ getDescription()

const Description & llvm::DWARFExpression::Operation::getDescription ( ) const
inline

Definition at line 87 of file DWARFExpression.h.

◆ getEndOffset()

uint64_t llvm::DWARFExpression::Operation::getEndOffset ( ) const
inline

Definition at line 93 of file DWARFExpression.h.

◆ getOperandEndOffset()

uint64_t llvm::DWARFExpression::Operation::getOperandEndOffset ( unsigned  Idx) const
inline

Definition at line 90 of file DWARFExpression.h.

References Idx.

◆ getRawOperand()

uint64_t llvm::DWARFExpression::Operation::getRawOperand ( unsigned  Idx) const
inline

Definition at line 89 of file DWARFExpression.h.

References Idx, and Operands.

◆ isError()

bool llvm::DWARFExpression::Operation::isError ( ) const
inline

Definition at line 94 of file DWARFExpression.h.

◆ print()

bool llvm::DWARFExpression::Operation::print ( raw_ostream OS,
DIDumpOptions  DumpOpts,
const DWARFExpression Expr,
DWARFUnit U 
) const

◆ verify()

bool llvm::DWARFExpression::Operation::verify ( const Operation Op,
DWARFUnit U 
)
static

Verify Op. Does not affect the return of isError().

Definition at line 357 of file DWARFExpression.cpp.

References BaseTypeRef, llvm::DWARFUnit::getDIEForOffset(), llvm::DWARFUnit::getOffset(), Size, and SizeNA.

Referenced by llvm::DWARFExpression::verify().

Friends And Related Function Documentation

◆ DWARFExpression::iterator

friend class DWARFExpression::iterator
friend

Definition at line 78 of file DWARFExpression.h.


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