Go to the documentation of this file.
9 #ifndef LLDB_EXPRESSION_DWARFEXPRESSION_H
10 #define LLDB_EXPRESSION_DWARFEXPRESSION_H
18 #include "llvm/DebugInfo/DWARF/DWARFLocationExpression.h"
112 uint8_t addr_byte_size);
119 lldb::ModuleSP new_module_sp,
121 &link_address_callback);
148 const Value *initial_value_ptr,
const Value *object_address_ptr,
155 const Value *initial_value_ptr,
const Value *object_address_ptr,
200 const Value *initial_value_ptr,
201 const Value *object_address_ptr,
Value &result,
218 llvm::function_ref<
bool(llvm::DWARFLocationExpression)> callback)
const;
222 llvm::Optional<DataExtractor>
267 #endif // LLDB_EXPRESSION_DWARFEXPRESSION_H
bool Update_DW_OP_addr(lldb::addr_t file_addr)
@ eRegisterKindDWARF
the register numbers seen DWARF
virtual ~DWARFExpression()
Destructor.
lldb::addr_t cu_file_addr
DataExtractor m_data
A data extractor capable of reading opcode bytes.
bool LinkThreadLocalStorage(lldb::ModuleSP new_module_sp, std::function< lldb::addr_t(lldb::addr_t file_addr)> const &link_address_callback)
bool GetLocationExpressions(lldb::addr_t load_function_start, llvm::function_ref< bool(llvm::DWARFLocationExpression)> callback) const
int GetRegisterKind()
Return the call-frame-info style register kind.
lldb::RegisterKind m_reg_kind
One of the defines that starts with LLDB_REGKIND_.
bool DumpLocationForAddress(Stream *s, lldb::DescriptionLevel level, lldb::addr_t func_load_addr, lldb::addr_t address, ABI *abi)
static llvm::raw_ostream & error(Stream &strm)
void SetRegisterKind(lldb::RegisterKind reg_kind)
Set the call-frame-info style register kind.
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 ...
void GetDescription(Stream *s, lldb::DescriptionLevel level, ABI *abi) const
Print the description of the expression to a stream.
void SetModule(const lldb::ModuleSP &module)
llvm::Optional< DataExtractor > GetLocationExpression(lldb::addr_t load_function_start, lldb::addr_t addr) const
bool MatchesOperand(StackFrame &frame, const Instruction::Operand &op)
bool IsLocationList() const
Return true if a location list was provided.
bool GetExpressionData(DataExtractor &data) const
void UpdateValue(uint64_t const_value, lldb::offset_t const_value_byte_size, uint8_t addr_byte_size)
RegisterKind
Register numbering types.
const DWARFUnit * m_dwarf_cu
The DWARF compile unit this expression belongs to.
bool ContainsThreadLocalStorage() const
lldb::ModuleWP m_module_wp
Module which defined this expression.
A class that represents a running process on the host machine.
llvm::Optional< LoclistAddresses > m_loclist_addresses
void SetLocationListAddresses(lldb::addr_t cu_file_addr, lldb::addr_t func_file_addr)
Tells the expression that it refers to a location list.
bool LocationListContainsAddress(lldb::addr_t func_load_addr, lldb::addr_t addr) const
Search for a load address in the location list.
bool Evaluate(ExecutionContextScope *exe_scope, lldb::addr_t func_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 Executio...
void DumpLocation(Stream *s, const DataExtractor &data, lldb::DescriptionLevel level, ABI *abi) const
Pretty-prints the location expression to a stream.
bool IsValid() const
Return true if the location expression contains data.
lldb::addr_t func_file_addr
DescriptionLevel
Description levels for "void GetDescription(Stream *, DescriptionLevel)" calls.
bool DumpLocations(Stream *s, lldb::DescriptionLevel level, lldb::addr_t func_load_addr, lldb::addr_t addr, ABI *abi)