LLDB mainline
|
#include <ValueObjectRegister.h>
Public Member Functions | |
~ValueObjectRegister () override | |
std::optional< uint64_t > | GetByteSize () override |
lldb::ValueType | GetValueType () const override |
ConstString | GetTypeName () override |
llvm::Expected< uint32_t > | CalculateNumChildren (uint32_t max) override |
Should only be called by ValueObject::GetNumChildren(). | |
bool | SetValueFromCString (const char *value_str, Status &error) override |
bool | SetData (DataExtractor &data, Status &error) override |
bool | ResolveValue (Scalar &scalar) override |
void | GetExpressionPath (Stream &s, GetExpressionPathFormat epformat=eGetExpressionPathFormatDereferencePointers) override |
Public Member Functions inherited from lldb_private::ValueObject | |
virtual | ~ValueObject () |
const EvaluationPoint & | GetUpdatePoint () const |
EvaluationPoint & | GetUpdatePoint () |
const ExecutionContextRef & | GetExecutionContextRef () const |
lldb::TargetSP | GetTargetSP () const |
lldb::ProcessSP | GetProcessSP () const |
lldb::ThreadSP | GetThreadSP () const |
lldb::StackFrameSP | GetFrameSP () const |
void | SetNeedsUpdate () |
CompilerType | GetCompilerType () |
virtual TypeImpl | GetTypeImpl () |
virtual bool | CanProvideValue () |
virtual std::optional< uint64_t > | GetByteSize ()=0 |
virtual lldb::ValueType | GetValueType () const =0 |
virtual ConstString | GetTypeName () |
virtual ConstString | GetDisplayTypeName () |
virtual ConstString | GetQualifiedTypeName () |
lldb::LanguageType | GetObjectRuntimeLanguage () |
uint32_t | GetTypeInfo (CompilerType *pointee_or_element_compiler_type=nullptr) |
bool | IsPointerType () |
bool | IsArrayType () |
bool | IsScalarType () |
bool | IsPointerOrReferenceType () |
bool | IsPossibleDynamicType () |
bool | IsNilReference () |
bool | IsUninitializedReference () |
virtual bool | IsBaseClass () |
bool | IsBaseClass (uint32_t &depth) |
virtual bool | IsDereferenceOfParent () |
bool | IsIntegerType (bool &is_signed) |
virtual void | GetExpressionPath (Stream &s, GetExpressionPathFormat=eGetExpressionPathFormatDereferencePointers) |
lldb::ValueObjectSP | GetValueForExpressionPath (llvm::StringRef expression, ExpressionPathScanEndReason *reason_to_stop=nullptr, ExpressionPathEndResultType *final_value_type=nullptr, const GetValueForExpressionPathOptions &options=GetValueForExpressionPathOptions::DefaultOptions(), ExpressionPathAftermath *final_task_on_target=nullptr) |
virtual bool | IsInScope () |
virtual lldb::offset_t | GetByteOffset () |
virtual uint32_t | GetBitfieldBitSize () |
virtual uint32_t | GetBitfieldBitOffset () |
bool | IsBitfield () |
virtual const char * | GetValueAsCString () |
virtual bool | GetValueAsCString (const lldb_private::TypeFormatImpl &format, std::string &destination) |
bool | GetValueAsCString (lldb::Format format, std::string &destination) |
virtual uint64_t | GetValueAsUnsigned (uint64_t fail_value, bool *success=nullptr) |
virtual int64_t | GetValueAsSigned (int64_t fail_value, bool *success=nullptr) |
llvm::Expected< llvm::APSInt > | GetValueAsAPSInt () |
If the current ValueObject is of an appropriate type, convert the value to an APSInt and return that. | |
llvm::Expected< llvm::APFloat > | GetValueAsAPFloat () |
If the current ValueObject is of an appropriate type, convert the value to an APFloat and return that. | |
llvm::Expected< bool > | GetValueAsBool () |
If the current ValueObject is of an appropriate type, convert the value to a boolean and return that. | |
void | SetValueFromInteger (const llvm::APInt &value, Status &error) |
Update an existing integer ValueObject with a new integer value. | |
void | SetValueFromInteger (lldb::ValueObjectSP new_val_sp, Status &error) |
Update an existing integer ValueObject with an integer value created frome 'new_val_sp'. | |
virtual bool | SetValueFromCString (const char *value_str, Status &error) |
virtual lldb::ModuleSP | GetModule () |
Return the module associated with this value object in case the value is from an executable file and might have its data in sections of the file. | |
ValueObject * | GetRoot () |
ValueObject * | FollowParentChain (std::function< bool(ValueObject *)>) |
Given a ValueObject, loop over itself and its parent, and its parent's parent, . | |
virtual bool | GetDeclaration (Declaration &decl) |
const Status & | GetError () |
ConstString | GetName () const |
lldb::user_id_t | GetID () const |
Returns a unique id for this ValueObject. | |
virtual lldb::ValueObjectSP | GetChildAtIndex (uint32_t idx, bool can_create=true) |
lldb::ValueObjectSP | GetChildAtNamePath (llvm::ArrayRef< llvm::StringRef > names) |
virtual lldb::ValueObjectSP | GetChildMemberWithName (llvm::StringRef name, bool can_create=true) |
virtual size_t | GetIndexOfChildWithName (llvm::StringRef name) |
llvm::Expected< uint32_t > | GetNumChildren (uint32_t max=UINT32_MAX) |
uint32_t | GetNumChildrenIgnoringErrors (uint32_t max=UINT32_MAX) |
Like GetNumChildren but returns 0 on error. | |
bool | HasChildren () |
const Value & | GetValue () const |
Value & | GetValue () |
virtual bool | ResolveValue (Scalar &scalar) |
virtual bool | IsLogicalTrue (Status &error) |
virtual const char * | GetLocationAsCString () |
const char * | GetSummaryAsCString (lldb::LanguageType lang=lldb::eLanguageTypeUnknown) |
bool | GetSummaryAsCString (TypeSummaryImpl *summary_ptr, std::string &destination, lldb::LanguageType lang=lldb::eLanguageTypeUnknown) |
bool | GetSummaryAsCString (std::string &destination, const TypeSummaryOptions &options) |
bool | GetSummaryAsCString (TypeSummaryImpl *summary_ptr, std::string &destination, const TypeSummaryOptions &options) |
llvm::Expected< std::string > | GetObjectDescription () |
bool | HasSpecialPrintableRepresentation (ValueObjectRepresentationStyle val_obj_display, lldb::Format custom_format) |
bool | DumpPrintableRepresentation (Stream &s, ValueObjectRepresentationStyle val_obj_display=eValueObjectRepresentationStyleSummary, lldb::Format custom_format=lldb::eFormatInvalid, PrintableRepresentationSpecialCases special=PrintableRepresentationSpecialCases::eAllow, bool do_dump_error=true) |
bool | GetValueIsValid () const |
bool | GetValueDidChange () |
bool | UpdateValueIfNeeded (bool update_format=true) |
bool | UpdateFormatsIfNeeded () |
lldb::ValueObjectSP | GetSP () |
void | SetName (ConstString name) |
Change the name of the current ValueObject. | |
virtual lldb::addr_t | GetAddressOf (bool scalar_is_load_address=true, AddressType *address_type=nullptr) |
lldb::addr_t | GetPointerValue (AddressType *address_type=nullptr) |
lldb::ValueObjectSP | GetSyntheticChild (ConstString key) const |
lldb::ValueObjectSP | GetSyntheticArrayMember (size_t index, bool can_create) |
lldb::ValueObjectSP | GetSyntheticBitFieldChild (uint32_t from, uint32_t to, bool can_create) |
lldb::ValueObjectSP | GetSyntheticExpressionPathChild (const char *expression, bool can_create) |
virtual lldb::ValueObjectSP | GetSyntheticChildAtOffset (uint32_t offset, const CompilerType &type, bool can_create, ConstString name_const_str=ConstString()) |
virtual lldb::ValueObjectSP | GetSyntheticBase (uint32_t offset, const CompilerType &type, bool can_create, ConstString name_const_str=ConstString()) |
virtual lldb::ValueObjectSP | GetDynamicValue (lldb::DynamicValueType valueType) |
lldb::DynamicValueType | GetDynamicValueType () |
virtual lldb::ValueObjectSP | GetStaticValue () |
virtual lldb::ValueObjectSP | GetNonSyntheticValue () |
lldb::ValueObjectSP | GetSyntheticValue () |
virtual bool | HasSyntheticValue () |
virtual bool | IsSynthetic () |
lldb::ValueObjectSP | GetQualifiedRepresentationIfAvailable (lldb::DynamicValueType dynValue, bool synthValue) |
virtual lldb::ValueObjectSP | CreateConstantValue (ConstString name) |
virtual lldb::ValueObjectSP | Dereference (Status &error) |
virtual lldb::ValueObjectSP | Clone (ConstString new_name) |
Creates a copy of the ValueObject with a new name and setting the current ValueObject as its parent. | |
virtual lldb::ValueObjectSP | AddressOf (Status &error) |
virtual lldb::addr_t | GetLiveAddress () |
virtual void | SetLiveAddress (lldb::addr_t addr=LLDB_INVALID_ADDRESS, AddressType address_type=eAddressTypeLoad) |
lldb::ValueObjectSP | Cast (const CompilerType &compiler_type) |
virtual lldb::ValueObjectSP | DoCast (const CompilerType &compiler_type) |
virtual lldb::ValueObjectSP | CastPointerType (const char *name, CompilerType &ast_type) |
virtual lldb::ValueObjectSP | CastPointerType (const char *name, lldb::TypeSP &type_sp) |
lldb::addr_t | GetLoadAddress () |
Return the target load address associated with this value object. | |
llvm::Expected< lldb::ValueObjectSP > | CastDerivedToBaseType (CompilerType type, const llvm::ArrayRef< uint32_t > &base_type_indices) |
Take a ValueObject whose type is an inherited class, and cast it to 'type', which should be one of its base classes. | |
llvm::Expected< lldb::ValueObjectSP > | CastBaseToDerivedType (CompilerType type, uint64_t offset) |
Take a ValueObject whose type is a base class, and cast it to 'type', which should be one of its derived classes. | |
lldb::ValueObjectSP | CastToBasicType (CompilerType type) |
lldb::ValueObjectSP | CastToEnumType (CompilerType type) |
lldb::ValueObjectSP | GetVTable () |
If this object represents a C++ class with a vtable, return an object that represents the virtual function table. | |
void | ValueUpdated () |
virtual bool | IsDynamic () |
virtual bool | DoesProvideSyntheticValue () |
virtual bool | IsSyntheticChildrenGenerated () |
virtual void | SetSyntheticChildrenGenerated (bool b) |
virtual SymbolContextScope * | GetSymbolContextScope () |
llvm::Error | Dump (Stream &s) |
llvm::Error | Dump (Stream &s, const DumpValueObjectOptions &options) |
lldb::ValueObjectSP | Persist () |
bool | IsCStringContainer (bool check_pointer=false) |
Returns true if this is a char* or a char[] if it is a char* and check_pointer is true, it also checks that the pointer is valid. | |
std::pair< size_t, bool > | ReadPointedString (lldb::WritableDataBufferSP &buffer_sp, Status &error, bool honor_array) |
virtual size_t | GetPointeeData (DataExtractor &data, uint32_t item_idx=0, uint32_t item_count=1) |
virtual uint64_t | GetData (DataExtractor &data, Status &error) |
virtual bool | SetData (DataExtractor &data, Status &error) |
virtual bool | GetIsConstant () const |
bool | NeedsUpdating () |
void | SetIsConstant () |
lldb::Format | GetFormat () const |
virtual void | SetFormat (lldb::Format format) |
virtual lldb::LanguageType | GetPreferredDisplayLanguage () |
void | SetPreferredDisplayLanguage (lldb::LanguageType lt) |
lldb::TypeSummaryImplSP | GetSummaryFormat () |
void | SetSummaryFormat (lldb::TypeSummaryImplSP format) |
void | SetDerefValobj (ValueObject *deref) |
ValueObject * | GetDerefValobj () |
void | SetValueFormat (lldb::TypeFormatImplSP format) |
lldb::TypeFormatImplSP | GetValueFormat () |
void | SetSyntheticChildren (const lldb::SyntheticChildrenSP &synth_sp) |
lldb::SyntheticChildrenSP | GetSyntheticChildren () |
virtual ValueObject * | GetParent () |
virtual const ValueObject * | GetParent () const |
ValueObject * | GetNonBaseClassParent () |
void | SetAddressTypeOfChildren (AddressType at) |
AddressType | GetAddressTypeOfChildren () |
void | SetHasCompleteType () |
virtual bool | MightHaveChildren () |
Find out if a ValueObject might have children. | |
virtual lldb::VariableSP | GetVariable () |
virtual bool | IsRuntimeSupportValue () |
virtual uint64_t | GetLanguageFlags () |
virtual void | SetLanguageFlags (uint64_t flags) |
Static Public Member Functions | |
static lldb::ValueObjectSP | Create (ExecutionContextScope *exe_scope, lldb::RegisterContextSP ®_ctx_sp, const RegisterInfo *reg_info) |
Static Public Member Functions inherited from lldb_private::ValueObject | |
static lldb::ValueObjectSP | CreateValueObjectFromExpression (llvm::StringRef name, llvm::StringRef expression, const ExecutionContext &exe_ctx) |
static lldb::ValueObjectSP | CreateValueObjectFromExpression (llvm::StringRef name, llvm::StringRef expression, const ExecutionContext &exe_ctx, const EvaluateExpressionOptions &options) |
static lldb::ValueObjectSP | CreateValueObjectFromAddress (llvm::StringRef name, uint64_t address, const ExecutionContext &exe_ctx, CompilerType type, bool do_deref=true) |
Given an address either create a value object containing the value at that address, or create a value object containing the address itself (pointer value), depending on whether the parameter 'do_deref' is true or false. | |
static lldb::ValueObjectSP | CreateValueObjectFromData (llvm::StringRef name, const DataExtractor &data, const ExecutionContext &exe_ctx, CompilerType type) |
static lldb::ValueObjectSP | CreateValueObjectFromAPInt (lldb::TargetSP target, const llvm::APInt &v, CompilerType type, llvm::StringRef name) |
Create a value object containing the given APInt value. | |
static lldb::ValueObjectSP | CreateValueObjectFromAPFloat (lldb::TargetSP target, const llvm::APFloat &v, CompilerType type, llvm::StringRef name) |
Create a value object containing the given APFloat value. | |
static lldb::ValueObjectSP | CreateValueObjectFromBool (lldb::TargetSP target, bool value, llvm::StringRef name) |
Create a value object containing the given boolean value. | |
static lldb::ValueObjectSP | CreateValueObjectFromNullptr (lldb::TargetSP target, CompilerType type, llvm::StringRef name) |
Create a nullptr value object with the specified type (must be a nullptr type). | |
Protected Attributes | |
lldb::RegisterContextSP | m_reg_ctx_sp |
RegisterInfo | m_reg_info |
RegisterValue | m_reg_value |
ConstString | m_type_name |
CompilerType | m_compiler_type |
Protected Attributes inherited from lldb_private::ValueObject | |
ValueObject * | m_parent = nullptr |
The parent value object, or nullptr if this has no parent. | |
ValueObject * | m_root = nullptr |
The root of the hierarchy for this ValueObject (or nullptr if never calculated). | |
EvaluationPoint | m_update_point |
Stores both the stop id and the full context at which this value was last updated. | |
ConstString | m_name |
The name of this object. | |
DataExtractor | m_data |
A data extractor that can be used to extract the value. | |
Value | m_value |
Status | m_error |
An error object that can describe any errors that occur when updating values. | |
std::string | m_value_str |
Cached value string that will get cleared if/when the value is updated. | |
std::string | m_old_value_str |
Cached old value string from the last time the value was gotten. | |
std::string | m_location_str |
Cached location string that will get cleared if/when the value is updated. | |
std::string | m_summary_str |
Cached summary string that will get cleared if/when the value is updated. | |
std::string | m_object_desc_str |
Cached result of the "object printer". | |
CompilerType | m_override_type |
If the type of the value object should be overridden, the type to impose. | |
ValueObjectManager * | m_manager = nullptr |
This object is managed by the root object (any ValueObject that gets created without a parent.) The manager gets passed through all the generations of dependent objects, and will keep the whole cluster of objects alive as long as a shared pointer to any of them has been handed out. | |
ChildrenManager | m_children |
std::map< ConstString, ValueObject * > | m_synthetic_children |
ValueObject * | m_dynamic_value = nullptr |
ValueObject * | m_synthetic_value = nullptr |
ValueObject * | m_deref_valobj = nullptr |
lldb::ValueObjectSP | m_addr_of_valobj_sp |
We have to hold onto a shared pointer to this one because it is created as an independent ValueObjectConstResult, which isn't managed by us. | |
lldb::Format | m_format = lldb::eFormatDefault |
lldb::Format | m_last_format = lldb::eFormatDefault |
uint32_t | m_last_format_mgr_revision = 0 |
lldb::TypeSummaryImplSP | m_type_summary_sp |
lldb::TypeFormatImplSP | m_type_format_sp |
lldb::SyntheticChildrenSP | m_synthetic_children_sp |
ProcessModID | m_user_id_of_forced_summary |
AddressType | m_address_type_of_ptr_or_ref_children = eAddressTypeInvalid |
llvm::SmallVector< uint8_t, 16 > | m_value_checksum |
lldb::LanguageType | m_preferred_display_language = lldb::eLanguageTypeUnknown |
uint64_t | m_language_flags = 0 |
UserID | m_id |
Unique identifier for every value object. | |
struct lldb_private::ValueObject::Bitflags | m_flags |
Private Member Functions | |
void | ConstructObject (const RegisterInfo *reg_info) |
ValueObjectRegister (ValueObject &parent, lldb::RegisterContextSP ®_ctx_sp, const RegisterInfo *reg_info) | |
ValueObjectRegister (ExecutionContextScope *exe_scope, ValueObjectManager &manager, lldb::RegisterContextSP ®_ctx_sp, const RegisterInfo *reg_info) | |
ValueObjectRegister (const ValueObjectRegister &)=delete | |
const ValueObjectRegister & | operator= (const ValueObjectRegister &)=delete |
Friends | |
class | ValueObjectRegisterSet |
Definition at line 84 of file ValueObjectRegister.h.
|
overridedefault |
|
private |
Definition at line 164 of file ValueObjectRegister.cpp.
References ConstructObject().
|
private |
Definition at line 181 of file ValueObjectRegister.cpp.
References ConstructObject().
|
privatedelete |
|
overridevirtual |
Should only be called by ValueObject::GetNumChildren().
Implements lldb_private::ValueObject.
Definition at line 221 of file ValueObjectRegister.cpp.
References lldb_private::ValueObject::GetCompilerType(), lldb_private::ValueObject::GetExecutionContextRef(), and lldb_private::CompilerType::GetNumChildren().
|
private |
Definition at line 154 of file ValueObjectRegister.cpp.
References lldb_private::RegisterInfo::alt_name, lldb_private::ValueObject::m_name, m_reg_info, lldb_private::RegisterInfo::name, and lldb_private::ConstString::SetCString().
Referenced by ValueObjectRegister().
|
static |
Definition at line 173 of file ValueObjectRegister.cpp.
References lldb_private::ClusterManager< T >::Create().
Referenced by lldb::SBFrame::FindRegister(), and lldb::SBFrame::FindValue().
|
overridevirtual |
Implements lldb_private::ValueObject.
Definition at line 229 of file ValueObjectRegister.cpp.
References lldb_private::RegisterInfo::byte_size, and m_reg_info.
|
overrideprotectedvirtual |
Implements lldb_private::ValueObject.
Definition at line 193 of file ValueObjectRegister.cpp.
References lldb_private::RegisterInfo::byte_size, lldb::eLanguageTypeC, lldb_private::RegisterInfo::encoding, lldb_private::ValueObject::GetExecutionContextRef(), lldb_private::GetLog(), lldb_private::ExecutionContext::GetTargetPtr(), lldb_private::CompilerType::IsValid(), LLDB_LOG_ERROR, m_compiler_type, m_reg_info, and lldb_private::Types.
|
overridevirtual |
Reimplemented from lldb_private::ValueObject.
Definition at line 303 of file ValueObjectRegister.cpp.
References m_reg_info, lldb_private::RegisterInfo::name, and lldb_private::Stream::Printf().
|
overridevirtual |
Reimplemented from lldb_private::ValueObject.
Definition at line 214 of file ValueObjectRegister.cpp.
References lldb_private::ValueObject::GetCompilerType(), lldb_private::CompilerType::GetTypeName(), lldb_private::ConstString::IsEmpty(), and m_type_name.
|
inlineoverridevirtual |
Implements lldb_private::ValueObject.
Definition at line 94 of file ValueObjectRegister.h.
References lldb::eValueTypeRegister.
|
privatedelete |
|
overridevirtual |
Reimplemented from lldb_private::ValueObject.
Definition at line 296 of file ValueObjectRegister.cpp.
References lldb_private::RegisterValue::GetScalarValue(), m_reg_value, and lldb_private::ValueObject::UpdateValueIfNeeded().
|
overridevirtual |
Reimplemented from lldb_private::ValueObject.
Definition at line 282 of file ValueObjectRegister.cpp.
References error(), lldb_private::Status::FromErrorString(), m_reg_ctx_sp, m_reg_info, m_reg_value, lldb_private::ValueObject::SetNeedsUpdate(), and lldb_private::RegisterValue::SetValueFromData().
|
overridevirtual |
Reimplemented from lldb_private::ValueObject.
Definition at line 265 of file ValueObjectRegister.cpp.
References error(), lldb_private::Status::FromErrorString(), m_reg_ctx_sp, m_reg_info, m_reg_value, lldb_private::ValueObject::SetNeedsUpdate(), and lldb_private::RegisterValue::SetValueFromString().
|
overrideprotectedvirtual |
Implements lldb_private::ValueObject.
Definition at line 233 of file ValueObjectRegister.cpp.
References lldb_private::RegisterValue::Clear(), lldb_private::Status::Clear(), lldb_private::Status::FromErrorString(), lldb_private::Process::GetAddressByteSize(), lldb_private::RegisterValue::GetData(), lldb_private::DataExtractor::GetDataStart(), lldb_private::ValueObject::GetExecutionContextRef(), lldb_private::ExecutionContext::GetFramePtr(), lldb_private::ExecutionContext::GetProcessPtr(), lldb_private::Value::GetScalar(), lldb_private::Value::HostAddress, lldb_private::ValueObject::m_data, lldb_private::ValueObject::m_error, m_reg_ctx_sp, m_reg_info, m_reg_value, lldb_private::ValueObject::m_value, lldb_private::Value::RegisterInfo, lldb_private::DataExtractor::SetAddressByteSize(), lldb_private::Value::SetContext(), lldb_private::ValueObject::SetValueDidChange(), lldb_private::ValueObject::SetValueIsValid(), and lldb_private::Value::SetValueType().
|
friend |
Definition at line 127 of file ValueObjectRegister.h.
|
protected |
Definition at line 122 of file ValueObjectRegister.h.
Referenced by GetCompilerTypeImpl().
|
protected |
Definition at line 118 of file ValueObjectRegister.h.
Referenced by SetData(), SetValueFromCString(), and UpdateValue().
|
protected |
Definition at line 119 of file ValueObjectRegister.h.
Referenced by ConstructObject(), GetByteSize(), GetCompilerTypeImpl(), GetExpressionPath(), SetData(), SetValueFromCString(), and UpdateValue().
|
protected |
Definition at line 120 of file ValueObjectRegister.h.
Referenced by ResolveValue(), SetData(), SetValueFromCString(), and UpdateValue().
|
protected |
Definition at line 121 of file ValueObjectRegister.h.
Referenced by GetTypeName().