LLDB  mainline
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
lldb_private::DWARFExpression Class Reference

"lldb/Expression/DWARFExpression.h" Encapsulates a DWARF location expression and interprets it. More...

#include <DWARFExpression.h>

Collaboration diagram for lldb_private::DWARFExpression:
Collaboration graph
[legend]

Public Types

enum  LocationListFormat : uint8_t { NonLocationList, RegularLocationList, SplitDwarfLocationList, LocLists }
 

Public Member Functions

 DWARFExpression (DWARFUnit *dwarf_cu)
 Constructor. More...
 
 DWARFExpression (lldb::ModuleSP module, const DataExtractor &data, DWARFUnit *dwarf_cu, lldb::offset_t data_offset, lldb::offset_t data_length)
 Constructor. More...
 
 DWARFExpression (const DWARFExpression &rhs)
 Copy constructor. More...
 
virtual ~DWARFExpression ()
 Destructor. More...
 
void GetDescription (Stream *s, lldb::DescriptionLevel level, lldb::addr_t location_list_base_addr, ABI *abi) const
 Print the description of the expression to a stream. More...
 
bool IsValid () const
 Return true if the location expression contains data. More...
 
bool IsLocationList () const
 Return true if a location list was provided. More...
 
bool LocationListContainsAddress (lldb::addr_t loclist_base_addr, lldb::addr_t addr) const
 Search for a load address in the location list. More...
 
lldb::addr_t GetLocation_DW_OP_addr (uint32_t op_addr_idx, bool &error) const
 If a location is not a location list, return true if the location contains a DW_OP_addr () opcode in the stream that matches file_addr. More...
 
bool Update_DW_OP_addr (lldb::addr_t file_addr)
 
void SetModule (const lldb::ModuleSP &module)
 
bool ContainsThreadLocalStorage () const
 
bool LinkThreadLocalStorage (lldb::ModuleSP new_module_sp, std::function< lldb::addr_t(lldb::addr_t file_addr)> const &link_address_callback)
 
void SetOpcodeData (const DataExtractor &data)
 Make the expression parser read its location information from a given data source. More...
 
void SetOpcodeData (lldb::ModuleSP module_sp, const DataExtractor &data, lldb::offset_t data_offset, lldb::offset_t data_length)
 Make the expression parser read its location information from a given data source. More...
 
void CopyOpcodeData (lldb::ModuleSP module_sp, const DataExtractor &data, lldb::offset_t data_offset, lldb::offset_t data_length)
 Copy the DWARF location expression into a local buffer. More...
 
void CopyOpcodeData (const void *data, lldb::offset_t data_length, lldb::ByteOrder byte_order, uint8_t addr_byte_size)
 
void CopyOpcodeData (uint64_t const_value, lldb::offset_t const_value_byte_size, uint8_t addr_byte_size)
 
void SetLocationListSlide (lldb::addr_t slide)
 Tells the expression that it refers to a location list. More...
 
int GetRegisterKind ()
 Return the call-frame-info style register kind. More...
 
void SetRegisterKind (lldb::RegisterKind reg_kind)
 Set the call-frame-info style register kind. More...
 
bool Evaluate (ExecutionContextScope *exe_scope, lldb::addr_t loclist_base_load_addr, const Value *initial_value_ptr, const Value *object_address_ptr, Value &result, Status *error_ptr) const
 Wrapper for the static evaluate function that accepts an ExecutionContextScope instead of an ExecutionContext and uses member variables to populate many operands. More...
 
bool Evaluate (ExecutionContext *exe_ctx, RegisterContext *reg_ctx, lldb::addr_t loclist_base_load_addr, const Value *initial_value_ptr, const Value *object_address_ptr, Value &result, Status *error_ptr) const
 Wrapper for the static evaluate function that uses member variables to populate many operands. More...
 
bool GetExpressionData (DataExtractor &data) const
 
bool DumpLocationForAddress (Stream *s, lldb::DescriptionLevel level, lldb::addr_t loclist_base_load_addr, lldb::addr_t address, ABI *abi)
 
bool MatchesOperand (StackFrame &frame, const Instruction::Operand &op)
 

Static Public Member Functions

static bool Evaluate (ExecutionContext *exe_ctx, RegisterContext *reg_ctx, lldb::ModuleSP opcode_ctx, const DataExtractor &opcodes, DWARFUnit *dwarf_cu, const lldb::offset_t offset, const lldb::offset_t length, const lldb::RegisterKind reg_set, const Value *initial_value_ptr, const Value *object_address_ptr, Value &result, Status *error_ptr)
 Evaluate a DWARF location expression in a particular context. More...
 
static size_t LocationListSize (const DWARFUnit *dwarf_cu, const DataExtractor &debug_loc_data, lldb::offset_t offset)
 
static bool PrintDWARFExpression (Stream &s, const DataExtractor &data, int address_size, int dwarf_ref_size, bool location_expression)
 
static void PrintDWARFLocationList (Stream &s, const DWARFUnit *cu, const DataExtractor &debug_loc_data, lldb::offset_t offset)
 

Protected Member Functions

void DumpLocation (Stream *s, lldb::offset_t offset, lldb::offset_t length, lldb::DescriptionLevel level, ABI *abi) const
 Pretty-prints the location expression to a stream. More...
 
bool GetLocation (lldb::addr_t base_addr, lldb::addr_t pc, lldb::offset_t &offset, lldb::offset_t &len)
 
bool GetOpAndEndOffsets (StackFrame &frame, lldb::offset_t &op_offset, lldb::offset_t &end_offset)
 

Static Protected Member Functions

static bool AddressRangeForLocationListEntry (const DWARFUnit *dwarf_cu, const DataExtractor &debug_loc_data, lldb::offset_t *offset_ptr, lldb::addr_t &low_pc, lldb::addr_t &high_pc)
 

Protected Attributes

lldb::ModuleWP m_module_wp
 Classes that inherit from DWARFExpression can see and modify these. More...
 
DataExtractor m_data
 A data extractor capable of reading opcode bytes. More...
 
DWARFUnitm_dwarf_cu
 The DWARF compile unit this expression. More...
 
lldb::RegisterKind m_reg_kind
 belongs to. More...
 
lldb::addr_t m_loclist_slide
 A value used to slide the location list offsets so that. More...
 

Detailed Description

"lldb/Expression/DWARFExpression.h" Encapsulates a DWARF location expression and interprets it.

DWARF location expressions are used in two ways by LLDB. The first use is to find entities specified in the debug information, since their locations are specified in precisely this language. The second is to interpret expressions without having to run the target in cases where the overhead from copying JIT-compiled code into the target is too high or where the target cannot be run. This class encapsulates a single DWARF location expression or a location list and interprets it.

Definition at line 35 of file DWARFExpression.h.

Member Enumeration Documentation

◆ LocationListFormat

Enumerator
NonLocationList 
RegularLocationList 
SplitDwarfLocationList 
LocLists 

Definition at line 37 of file DWARFExpression.h.

Constructor & Destructor Documentation

◆ DWARFExpression() [1/3]

DWARFExpression::DWARFExpression ( DWARFUnit dwarf_cu)
explicit

Constructor.

Definition at line 54 of file DWARFExpression.cpp.

◆ DWARFExpression() [2/3]

DWARFExpression::DWARFExpression ( lldb::ModuleSP  module,
const DataExtractor data,
DWARFUnit dwarf_cu,
lldb::offset_t  data_offset,
lldb::offset_t  data_length 
)

Constructor.

Parameters
[in]dataA data extractor configured to read the DWARF location expression's bytecode.
[in]data_offsetThe offset of the location expression in the extractor.
[in]data_lengthThe byte length of the location expression.

Definition at line 63 of file DWARFExpression.cpp.

References m_module_wp.

◆ DWARFExpression() [3/3]

DWARFExpression::DWARFExpression ( const DWARFExpression rhs)

Copy constructor.

Definition at line 58 of file DWARFExpression.cpp.

◆ ~DWARFExpression()

DWARFExpression::~DWARFExpression ( )
virtual

Destructor.

Definition at line 76 of file DWARFExpression.cpp.

Member Function Documentation

◆ AddressRangeForLocationListEntry()

bool DWARFExpression::AddressRangeForLocationListEntry ( const DWARFUnit dwarf_cu,
const DataExtractor debug_loc_data,
lldb::offset_t offset_ptr,
lldb::addr_t low_pc,
lldb::addr_t high_pc 
)
staticprotected

◆ ContainsThreadLocalStorage()

bool DWARFExpression::ContainsThreadLocalStorage ( ) const

◆ CopyOpcodeData() [1/3]

void DWARFExpression::CopyOpcodeData ( lldb::ModuleSP  module_sp,
const DataExtractor data,
lldb::offset_t  data_offset,
lldb::offset_t  data_length 
)

Copy the DWARF location expression into a local buffer.

It is a good idea to copy the data so we don't keep the entire object file worth of data around just for a few bytes of location expression. LLDB typically will mmap the entire contents of debug information files, and if we use SetOpcodeData, it will get a shared reference to all of this data for the and cause the object file to have to stay around. Even worse, a very very large ".a" that contains one or more .o files could end up being referenced. Location lists are typically small so even though we are copying the data, it shouldn't amount to that much for the variables we end up parsing.

Parameters
[in]module_spThe module that defines the DWARF expression.
[in]dataA data extractor configured to read and copy the DWARF location expression's bytecode.
[in]data_offsetThe offset of the location expression in the extractor.
[in]data_lengthThe byte length of the location expression.

Definition at line 84 of file DWARFExpression.cpp.

References lldb_private::DataExtractor::GetAddressByteSize(), lldb_private::DataExtractor::GetByteOrder(), m_data, m_module_wp, lldb_private::DataExtractor::PeekData(), lldb_private::DataExtractor::SetAddressByteSize(), lldb_private::DataExtractor::SetByteOrder(), and lldb_private::DataExtractor::SetData().

Referenced by SetModule().

◆ CopyOpcodeData() [2/3]

void DWARFExpression::CopyOpcodeData ( const void *  data,
lldb::offset_t  data_length,
lldb::ByteOrder  byte_order,
uint8_t  addr_byte_size 
)

◆ CopyOpcodeData() [3/3]

void DWARFExpression::CopyOpcodeData ( uint64_t  const_value,
lldb::offset_t  const_value_byte_size,
uint8_t  addr_byte_size 
)

◆ DumpLocation()

void DWARFExpression::DumpLocation ( Stream s,
lldb::offset_t  offset,
lldb::offset_t  length,
lldb::DescriptionLevel  level,
ABI abi 
) const
protected

◆ DumpLocationForAddress()

bool DWARFExpression::DumpLocationForAddress ( Stream s,
lldb::DescriptionLevel  level,
lldb::addr_t  loclist_base_load_addr,
lldb::addr_t  address,
ABI abi 
)

◆ Evaluate() [1/3]

bool DWARFExpression::Evaluate ( ExecutionContextScope exe_scope,
lldb::addr_t  loclist_base_load_addr,
const Value initial_value_ptr,
const Value object_address_ptr,
Value result,
Status error_ptr 
) const

Wrapper for the static evaluate function that accepts an ExecutionContextScope instead of an ExecutionContext and uses member variables to populate many operands.

Definition at line 1234 of file DWARFExpression.cpp.

Referenced by Evaluate(), lldb_private::StackFrame::GetFrameBaseValue(), SymbolFileDWARF::GetGlobalAranges(), SetModule(), lldb_private::RegisterContext::UpdateDynamicRegisterSize(), and lldb_private::ValueObjectVariable::UpdateValue().

◆ Evaluate() [2/3]

bool DWARFExpression::Evaluate ( ExecutionContext exe_ctx,
RegisterContext reg_ctx,
lldb::addr_t  loclist_base_load_addr,
const Value initial_value_ptr,
const Value object_address_ptr,
Value result,
Status error_ptr 
) const

◆ Evaluate() [3/3]

bool DWARFExpression::Evaluate ( ExecutionContext exe_ctx,
RegisterContext reg_ctx,
lldb::ModuleSP  opcode_ctx,
const DataExtractor opcodes,
DWARFUnit dwarf_cu,
const lldb::offset_t  offset,
const lldb::offset_t  length,
const lldb::RegisterKind  reg_set,
const Value initial_value_ptr,
const Value object_address_ptr,
Value result,
Status error_ptr 
)
static

Evaluate a DWARF location expression in a particular context.

Parameters
[in]exe_ctxThe execution context in which to evaluate the location expression. The location expression may access the target's memory, especially if it comes from the expression parser.
[in]opcode_ctxThe module which defined the expression.
[in]opcodesThis is a static method so the opcodes need to be provided explicitly.
[in]expr_localsIf the location expression was produced by the expression parser, the list of local variables referenced by the DWARF expression. This list should already have been populated during parsing; the DWARF expression refers to variables by index. Can be NULL if the location expression uses no locals.
[in]decl_mapIf the location expression was produced by the expression parser, the list of external variables referenced by the location expression. Can be NULL if the location expression uses no external variables.
[in]reg_ctxAn optional parameter which provides a RegisterContext for use when evaluating the expression (i.e. for fetching register values). Normally this will come from the ExecutionContext's StackFrame but in the case where an expression needs to be evaluated while building the stack frame list, this short-cut is available.
[in]offsetThe offset of the location expression in the data extractor.
[in]lengthThe length in bytes of the location expression.
[in]reg_setThe call-frame-info style register kind.
[in]initial_value_ptrA value to put on top of the interpreter stack before evaluating the expression, if the expression is parametrized. Can be NULL.
[in]resultA value into which the result of evaluating the expression is to be placed.
[in]error_ptrIf non-NULL, used to report errors in expression evaluation.
Returns
True on success; false otherwise. If error_ptr is non-NULL, details of the failure are provided through it.

Insertion point for evaluating multi-piece expression.

Definition at line 1313 of file DWARFExpression.cpp.

References lldb_private::Value::AppendDataToHostBuffer(), lldb_private::Status::AsCString(), lldb_private::StackFrame::CalculateTarget(), lldb_private::Value::ClearContext(), lldb_private::DW_OP_value_to_name(), lldb_private::Value::eValueTypeFileAddress, lldb_private::Value::eValueTypeHostAddress, lldb_private::Value::eValueTypeLoadAddress, lldb_private::Value::eValueTypeScalar, lldb_private::Value::eValueTypeVector, SymbolFileDWARF::get_debug_addr_data(), DWARFUnit::GetAddrBase(), lldb_private::DataExtractor::GetAddress(), DWARFUnit::GetAddressByteSize(), lldb_private::Value::GetBuffer(), lldb_private::Process::GetByteOrder(), lldb_private::DataBufferHeap::GetBytes(), lldb_private::DataBufferHeap::GetByteSize(), lldb_private::StackID::GetCallFrameAddress(), lldb_private::StreamString::GetData(), lldb_private::StackFrame::GetFrameBaseValue(), lldb_private::ExecutionContext::GetFramePtr(), lldb_private::Address::GetLoadAddress(), lldb_private::GetLogIfAllCategoriesSet(), lldb_private::DataExtractor::GetMaxU64(), lldb_private::ExecutionContext::GetProcessPtr(), lldb_private::StackFrame::GetRegisterContext(), lldb_private::Value::GetScalar(), lldb_private::DataExtractor::GetSLEB128(), lldb_private::StackFrame::GetStackID(), DWARFUnit::GetSymbolFileDWARF(), lldb_private::ExecutionContext::GetTargetPtr(), lldb_private::Thread::GetThreadLocalData(), lldb_private::ExecutionContext::GetThreadPtr(), lldb_private::DataExtractor::GetU16(), lldb_private::DataExtractor::GetU32(), lldb_private::DataExtractor::GetU64(), lldb_private::DataExtractor::GetU8(), lldb_private::DataExtractor::GetULEB128(), lldb_private::Value::GetValueType(), lldb_private::Log::GetVerbose(), lldb_private::Scalar::IsZero(), LIBLLDB_LOG_EXPRESSIONS, LLDB_INVALID_ADDRESS, lldb_private::Log::Printf(), lldb_private::Stream::Printf(), lldb_private::Process::ReadMemory(), lldb_private::Process::ReadPointerFromMemory(), ReadRegisterValueAsScalar(), lldb_private::Value::ResizeData(), lldb_private::Value::ResolveValue(), lldb_private::Status::SetErrorString(), lldb_private::Status::SetErrorStringWithFormat(), lldb_private::DataExtractor::ValidOffset(), and lldb_private::DataExtractor::ValidOffsetForDataOfSize().

◆ GetDescription()

void DWARFExpression::GetDescription ( Stream s,
lldb::DescriptionLevel  level,
lldb::addr_t  location_list_base_addr,
ABI abi 
) const

Print the description of the expression to a stream.

Parameters
[in]sThe stream to print to.
[in]levelThe level of verbosity to use.
[in]location_list_base_addrIf this is a location list based expression, this is the address of the object that owns it. NOTE: this value is different from the DWARF version of the location list base address which is compile unit relative. This base address is the address of the object that owns the location list.
[in]abiAn optional ABI plug-in that can be used to resolve register names.

Definition at line 601 of file DWARFExpression.cpp.

References AddressRangeForLocationListEntry(), lldb_private::VMRange::Dump(), DumpLocation(), lldb_private::DataExtractor::GetAddressByteSize(), lldb_private::DataExtractor::GetByteSize(), lldb_private::DataExtractor::GetU16(), IsLocationList(), LLDB_INVALID_ADDRESS, m_data, m_dwarf_cu, lldb_private::Stream::PutChar(), lldb_private::Stream::PutCString(), UINT32_MAX, UINT64_MAX, and lldb_private::DataExtractor::ValidOffset().

Referenced by lldb_private::Variable::Dump().

◆ GetExpressionData()

bool lldb_private::DWARFExpression::GetExpressionData ( DataExtractor data) const
inline

◆ GetLocation()

bool DWARFExpression::GetLocation ( lldb::addr_t  base_addr,
lldb::addr_t  pc,
lldb::offset_t offset,
lldb::offset_t len 
)
protected

◆ GetLocation_DW_OP_addr()

lldb::addr_t DWARFExpression::GetLocation_DW_OP_addr ( uint32_t  op_addr_idx,
bool &  error 
) const

If a location is not a location list, return true if the location contains a DW_OP_addr () opcode in the stream that matches file_addr.

If file_addr is LLDB_INVALID_ADDRESS, the this function will return true if the variable there is any DW_OP_addr in a location that (yet still is NOT a location list). This helps us detect if a variable is a global or static variable since there is no other indication from DWARF debug info.

Parameters
[in]op_addr_idxThe DW_OP_addr index to retrieve in case there is more than one DW_OP_addr opcode in the location byte stream.
[out]errorIf the location stream contains unknown DW_OP opcodes or the data is missing, error will be set to true.
Returns
LLDB_INVALID_ADDRESS if the location doesn't contain a DW_OP_addr for op_addr_idx, otherwise a valid file address

Definition at line 945 of file DWARFExpression.cpp.

References lldb_private::DataExtractor::GetAddress(), GetOpcodeDataSize(), lldb_private::DataExtractor::GetU8(), lldb_private::DataExtractor::GetULEB128(), IsLocationList(), LLDB_INVALID_ADDRESS, LLDB_INVALID_OFFSET, m_data, m_dwarf_cu, ReadAddressFromDebugAddrSection(), and lldb_private::DataExtractor::ValidOffset().

◆ GetOpAndEndOffsets()

bool DWARFExpression::GetOpAndEndOffsets ( StackFrame frame,
lldb::offset_t op_offset,
lldb::offset_t end_offset 
)
protected

◆ GetRegisterKind()

int DWARFExpression::GetRegisterKind ( )

Return the call-frame-info style register kind.

Definition at line 591 of file DWARFExpression.cpp.

References m_reg_kind.

Referenced by SetModule().

◆ IsLocationList()

bool DWARFExpression::IsLocationList ( ) const

◆ IsValid()

bool DWARFExpression::IsValid ( ) const

Return true if the location expression contains data.

Definition at line 78 of file DWARFExpression.cpp.

References lldb_private::DataExtractor::GetByteSize(), and m_data.

Referenced by lldb_private::Variable::Dump().

◆ LinkThreadLocalStorage()

bool DWARFExpression::LinkThreadLocalStorage ( lldb::ModuleSP  new_module_sp,
std::function< lldb::addr_t(lldb::addr_t file_addr)> const &  link_address_callback 
)

◆ LocationListContainsAddress()

bool DWARFExpression::LocationListContainsAddress ( lldb::addr_t  loclist_base_addr,
lldb::addr_t  addr 
) const

Search for a load address in the location list.

Parameters
[in]processThe process to use when resolving the load address
[in]addrThe address to resolve
Returns
True if IsLocationList() is true and the address was found; false otherwise.

Definition at line 1145 of file DWARFExpression.cpp.

References AddressRangeForLocationListEntry(), lldb_private::DataExtractor::GetU16(), IsLocationList(), LLDB_INVALID_ADDRESS, m_data, m_dwarf_cu, m_loclist_slide, and lldb_private::DataExtractor::ValidOffset().

Referenced by lldb_private::Variable::LocationIsValidForAddress(), and lldb_private::Variable::LocationIsValidForFrame().

◆ LocationListSize()

size_t DWARFExpression::LocationListSize ( const DWARFUnit dwarf_cu,
const DataExtractor debug_loc_data,
lldb::offset_t  offset 
)
static

◆ MatchesOperand()

bool DWARFExpression::MatchesOperand ( StackFrame frame,
const Instruction::Operand op 
)

◆ PrintDWARFExpression()

bool DWARFExpression::PrintDWARFExpression ( Stream s,
const DataExtractor data,
int  address_size,
int  dwarf_ref_size,
bool  location_expression 
)
static

◆ PrintDWARFLocationList()

void DWARFExpression::PrintDWARFLocationList ( Stream s,
const DWARFUnit cu,
const DataExtractor debug_loc_data,
lldb::offset_t  offset 
)
static

◆ SetLocationListSlide()

void DWARFExpression::SetLocationListSlide ( lldb::addr_t  slide)

Tells the expression that it refers to a location list.

Parameters
[in]slideThis value should be a slide that is applied to any values in the location list data so the values become zero based offsets into the object that owns the location list. We need to make location lists relative to the objects that own them so we can relink addresses on the fly.

Definition at line 587 of file DWARFExpression.cpp.

References m_loclist_slide.

Referenced by DWARFDebugInfoEntry::GetDIENamesAndRanges(), and SetModule().

◆ SetModule()

void lldb_private::DWARFExpression::SetModule ( const lldb::ModuleSP &  module)
inline

◆ SetOpcodeData() [1/2]

void DWARFExpression::SetOpcodeData ( const DataExtractor data)

Make the expression parser read its location information from a given data source.

Does not change the offset and length

Parameters
[in]dataA data extractor configured to read the DWARF location expression's bytecode.

Definition at line 80 of file DWARFExpression.cpp.

References m_data.

Referenced by DWARFDebugInfoEntry::GetDIENamesAndRanges(), and SetModule().

◆ SetOpcodeData() [2/2]

void DWARFExpression::SetOpcodeData ( lldb::ModuleSP  module_sp,
const DataExtractor data,
lldb::offset_t  data_offset,
lldb::offset_t  data_length 
)

Make the expression parser read its location information from a given data source.

Parameters
[in]module_spThe module that defines the DWARF expression.
[in]dataA data extractor configured to read the DWARF location expression's bytecode.
[in]data_offsetThe offset of the location expression in the extractor.
[in]data_lengthThe byte length of the location expression.

Definition at line 119 of file DWARFExpression.cpp.

References m_data, m_module_wp, and lldb_private::DataExtractor::SetData().

◆ SetRegisterKind()

void DWARFExpression::SetRegisterKind ( lldb::RegisterKind  reg_kind)

Set the call-frame-info style register kind.

Parameters
[in]reg_kindThe register kind.

Definition at line 593 of file DWARFExpression.cpp.

References m_reg_kind.

Referenced by ConvertPDBLocationToDWARFExpression(), lldb_private::RegisterContextLLDB::IsTrapHandlerFrame(), MakeLocationExpressionInternal(), and SetModule().

◆ Update_DW_OP_addr()

bool DWARFExpression::Update_DW_OP_addr ( lldb::addr_t  file_addr)

Member Data Documentation

◆ m_data

DataExtractor lldb_private::DWARFExpression::m_data
protected

◆ m_dwarf_cu

DWARFUnit* lldb_private::DWARFExpression::m_dwarf_cu
protected

The DWARF compile unit this expression.

Definition at line 365 of file DWARFExpression.h.

Referenced by Evaluate(), GetDescription(), GetLocation(), GetLocation_DW_OP_addr(), and LocationListContainsAddress().

◆ m_loclist_slide

lldb::addr_t lldb_private::DWARFExpression::m_loclist_slide
protected

A value used to slide the location list offsets so that.

they are relative to the object that owns the location list (the function for frame base and variable location lists)

Definition at line 371 of file DWARFExpression.h.

Referenced by Evaluate(), GetLocation(), IsLocationList(), LocationListContainsAddress(), and SetLocationListSlide().

◆ m_module_wp

lldb::ModuleWP lldb_private::DWARFExpression::m_module_wp
protected

Classes that inherit from DWARFExpression can see and modify these.

Module which defined this expression.

Definition at line 363 of file DWARFExpression.h.

Referenced by CopyOpcodeData(), DWARFExpression(), Evaluate(), LinkThreadLocalStorage(), SetModule(), and SetOpcodeData().

◆ m_reg_kind

lldb::RegisterKind lldb_private::DWARFExpression::m_reg_kind
protected

belongs to.

It is used < to evaluate values indexing into the .debug_addr section (e.g. DW_OP_GNU_addr_index, DW_OP_GNU_const_index) One of the defines that starts with LLDB_REGKIND_

Definition at line 370 of file DWARFExpression.h.

Referenced by DumpLocation(), Evaluate(), GetRegisterKind(), MatchesOperand(), and SetRegisterKind().


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