LLDB mainline
|
#include <AppleObjCClassDescriptorV2.h>
Classes | |
struct | class_ro_t |
struct | class_rw_t |
struct | ivar_list_t |
struct | ivar_t |
class | iVarsStorage |
struct | method_list_t |
struct | method_t |
struct | objc_class_t |
struct | relative_list_entry_t |
struct | relative_list_list_t |
Public Member Functions | |
~ClassDescriptorV2 () override=default | |
ConstString | GetClassName () override |
ObjCLanguageRuntime::ClassDescriptorSP | GetSuperclass () override |
ObjCLanguageRuntime::ClassDescriptorSP | GetMetaclass () const override |
bool | IsValid () override |
lldb::LanguageType | GetImplementationLanguage () const override |
Determine whether this class is implemented in Swift. | |
bool | GetTaggedPointerInfo (uint64_t *info_bits=nullptr, uint64_t *value_bits=nullptr, uint64_t *payload=nullptr) override |
There are two routines in the ObjC runtime that tagged pointer clients can call to get the value from their tagged pointer, one that retrieves it as an unsigned value and one a signed value. | |
bool | GetTaggedPointerInfoSigned (uint64_t *info_bits=nullptr, int64_t *value_bits=nullptr, uint64_t *payload=nullptr) override |
uint64_t | GetInstanceSize () override |
ObjCLanguageRuntime::ObjCISA | GetISA () override |
bool | Describe (std::function< void(ObjCLanguageRuntime::ObjCISA)> const &superclass_func, std::function< bool(const char *, const char *)> const &instance_method_func, std::function< bool(const char *, const char *)> const &class_method_func, std::function< bool(const char *, const char *, lldb::addr_t, uint64_t)> const &ivar_func) const override |
size_t | GetNumIVars () override |
iVarDescriptor | GetIVarAtIndex (size_t idx) override |
Public Member Functions inherited from lldb_private::ObjCLanguageRuntime::ClassDescriptor | |
ClassDescriptor () | |
virtual | ~ClassDescriptor ()=default |
virtual ConstString | GetClassName ()=0 |
virtual ClassDescriptorSP | GetSuperclass ()=0 |
virtual ClassDescriptorSP | GetMetaclass () const =0 |
virtual bool | IsKVO () |
virtual bool | IsCFType () |
virtual lldb::LanguageType | GetImplementationLanguage () const |
Determine whether this class is implemented in Swift. | |
virtual bool | IsValid ()=0 |
virtual uint64_t | GetInstanceSize ()=0 |
virtual bool | CheckPointer (lldb::addr_t value, uint32_t ptr_size) const |
virtual ObjCISA | GetISA ()=0 |
virtual bool | Describe (std::function< void(ObjCISA)> const &superclass_func, std::function< bool(const char *, const char *)> const &instance_method_func, std::function< bool(const char *, const char *)> const &class_method_func, std::function< bool(const char *, const char *, lldb::addr_t, uint64_t)> const &ivar_func) const |
lldb::TypeSP | GetType () |
void | SetType (const lldb::TypeSP &type_sp) |
virtual size_t | GetNumIVars () |
virtual iVarDescriptor | GetIVarAtIndex (size_t idx) |
Protected Member Functions | |
void | GetIVarInformation () |
Protected Member Functions inherited from lldb_private::ObjCLanguageRuntime::ClassDescriptor | |
bool | IsPointerValid (lldb::addr_t value, uint32_t ptr_size, bool allow_NULLs=false, bool allow_tagged=false, bool check_version_specific=false) const |
Private Member Functions | |
std::optional< method_list_t > | GetMethodList (Process *process, lldb::addr_t method_list_ptr) const |
ClassDescriptorV2 (AppleObjCRuntimeV2 &runtime, ObjCLanguageRuntime::ObjCISA isa, const char *name) | |
bool | Read_objc_class (Process *process, std::unique_ptr< objc_class_t > &objc_class) const |
bool | Read_class_row (Process *process, const objc_class_t &objc_class, std::unique_ptr< class_ro_t > &class_ro, std::unique_ptr< class_rw_t > &class_rw) const |
bool | ProcessMethodList (std::function< bool(const char *, const char *)> const &instance_method_func, method_list_t &method_list) const |
bool | ProcessRelativeMethodLists (std::function< bool(const char *, const char *)> const &instance_method_func, lldb::addr_t relative_method_list_ptr) const |
Private Attributes | |
AppleObjCRuntimeV2 & | m_runtime |
lldb::addr_t | m_objc_class_ptr |
ConstString | m_name |
iVarsStorage | m_ivars_storage |
std::map< uint16_t, std::vector< method_list_t > > | m_image_to_method_lists |
std::optional< uint64_t > | m_last_version_updated |
Static Private Attributes | |
static const uint32_t | RW_REALIZED = (1u << 31) |
Friends | |
class | lldb_private::AppleObjCRuntimeV2 |
Definition at line 22 of file AppleObjCClassDescriptorV2.h.
|
overridedefault |
|
inlineprivate |
Definition at line 245 of file AppleObjCClassDescriptorV2.h.
|
override |
Definition at line 524 of file AppleObjCClassDescriptorV2.cpp.
References GetMetaclass(), GetMethodList(), lldb_private::Runtime::GetProcess(), lldb_private::ClassDescriptorV2::ivar_t::GetSize(), lldb_private::ClassDescriptorV2::ivar_list_t::m_count, lldb_private::ClassDescriptorV2::ivar_list_t::m_entsize, lldb_private::ClassDescriptorV2::ivar_list_t::m_first_ptr, lldb_private::ClassDescriptorV2::ivar_t::m_name, m_name, lldb_private::ClassDescriptorV2::ivar_t::m_offset_ptr, m_runtime, lldb_private::ClassDescriptorV2::ivar_t::m_size, lldb_private::ClassDescriptorV2::ivar_t::m_type, ProcessMethodList(), ProcessRelativeMethodLists(), lldb_private::ClassDescriptorV2::ivar_list_t::Read(), lldb_private::ClassDescriptorV2::ivar_t::Read(), Read_class_row(), and Read_objc_class().
Referenced by lldb_private::ClassDescriptorV2::iVarsStorage::fill().
|
overridevirtual |
Implements lldb_private::ObjCLanguageRuntime::ClassDescriptor.
Definition at line 602 of file AppleObjCClassDescriptorV2.cpp.
References lldb_private::Runtime::GetProcess(), m_name, m_runtime, Read_class_row(), and Read_objc_class().
Referenced by lldb_private::ClassDescriptorV2::iVarsStorage::fill().
|
overridevirtual |
Determine whether this class is implemented in Swift.
Reimplemented from lldb_private::ObjCLanguageRuntime::ClassDescriptor.
Definition at line 676 of file AppleObjCClassDescriptorV2.cpp.
References lldb::eLanguageTypeObjC, lldb::eLanguageTypeSwift, lldb_private::Runtime::GetProcess(), IS_SWIFT_STABLE, m_runtime, and Read_objc_class().
|
overridevirtual |
Implements lldb_private::ObjCLanguageRuntime::ClassDescriptor.
Definition at line 654 of file AppleObjCClassDescriptorV2.cpp.
References lldb_private::Runtime::GetProcess(), m_runtime, Read_class_row(), and Read_objc_class().
|
inlineoverridevirtual |
Implements lldb_private::ObjCLanguageRuntime::ClassDescriptor.
Definition at line 55 of file AppleObjCClassDescriptorV2.h.
References m_objc_class_ptr.
|
inlineoverridevirtual |
Reimplemented from lldb_private::ObjCLanguageRuntime::ClassDescriptor.
Definition at line 70 of file AppleObjCClassDescriptorV2.h.
References GetNumIVars(), and m_ivars_storage.
|
protected |
Definition at line 745 of file AppleObjCClassDescriptorV2.cpp.
References lldb_private::ClassDescriptorV2::iVarsStorage::fill(), m_ivars_storage, and m_runtime.
Referenced by GetNumIVars().
|
overridevirtual |
Implements lldb_private::ObjCLanguageRuntime::ClassDescriptor.
Definition at line 637 of file AppleObjCClassDescriptorV2.cpp.
References lldb_private::AppleObjCRuntimeV2::GetPointerISA(), lldb_private::Runtime::GetProcess(), m_runtime, and Read_objc_class().
Referenced by Describe().
|
private |
Definition at line 428 of file AppleObjCClassDescriptorV2.cpp.
References lldb_private::GetLog(), lldb_private::ClassDescriptorV2::method_t::GetSize(), LLDB_LOG, lldb_private::ClassDescriptorV2::method_list_t::m_entsize, lldb_private::ClassDescriptorV2::method_list_t::m_is_small, lldb_private::ClassDescriptorV2::method_list_t::Read(), and lldb_private::Types.
Referenced by Describe(), and ProcessRelativeMethodLists().
|
inlineoverridevirtual |
Reimplemented from lldb_private::ObjCLanguageRuntime::ClassDescriptor.
Definition at line 65 of file AppleObjCClassDescriptorV2.h.
References GetIVarInformation(), m_ivars_storage, and lldb_private::ClassDescriptorV2::iVarsStorage::size().
Referenced by GetIVarAtIndex().
|
overridevirtual |
Implements lldb_private::ObjCLanguageRuntime::ClassDescriptor.
Definition at line 622 of file AppleObjCClassDescriptorV2.cpp.
References lldb_private::Runtime::GetProcess(), m_runtime, and Read_objc_class().
|
inlineoverridevirtual |
There are two routines in the ObjC runtime that tagged pointer clients can call to get the value from their tagged pointer, one that retrieves it as an unsigned value and one a signed value.
These two GetTaggedPointerInfo methods mirror those two ObjC runtime calls.
Implements lldb_private::ObjCLanguageRuntime::ClassDescriptor.
Definition at line 41 of file AppleObjCClassDescriptorV2.h.
|
inlineoverridevirtual |
Implements lldb_private::ObjCLanguageRuntime::ClassDescriptor.
Definition at line 47 of file AppleObjCClassDescriptorV2.h.
|
inlineoverridevirtual |
Implements lldb_private::ObjCLanguageRuntime::ClassDescriptor.
Definition at line 34 of file AppleObjCClassDescriptorV2.h.
|
private |
Definition at line 447 of file AppleObjCClassDescriptorV2.cpp.
References lldb_private::Runtime::GetProcess(), lldb_private::AppleObjCRuntimeV2::GetRelativeSelectorBaseAddr(), lldb_private::ClassDescriptorV2::method_list_t::m_count, lldb_private::ClassDescriptorV2::method_list_t::m_entsize, lldb_private::ClassDescriptorV2::method_list_t::m_first_ptr, lldb_private::ClassDescriptorV2::method_list_t::m_has_direct_selector, lldb_private::ClassDescriptorV2::method_list_t::m_is_small, and m_runtime.
Referenced by Describe(), and ProcessRelativeMethodLists().
|
private |
Definition at line 477 of file AppleObjCClassDescriptorV2.cpp.
References GetMethodList(), lldb_private::Runtime::GetProcess(), lldb_private::AppleObjCRuntimeV2::GetSharedCacheImageHeaderVersion(), lldb_private::AppleObjCRuntimeV2::IsSharedCacheImageLoaded(), m_image_to_method_lists, m_last_version_updated, m_runtime, and ProcessMethodList().
Referenced by Describe().
|
private |
Definition at line 199 of file AppleObjCClassDescriptorV2.cpp.
References error(), lldb_private::ClassDescriptorV2::objc_class_t::m_data_ptr, lldb_private::Process::ReadUnsignedIntegerFromMemory(), and RW_REALIZED.
Referenced by Describe(), GetClassName(), and GetInstanceSize().
|
private |
Definition at line 21 of file AppleObjCClassDescriptorV2.cpp.
References m_objc_class_ptr.
Referenced by Describe(), GetClassName(), GetImplementationLanguage(), GetInstanceSize(), GetMetaclass(), and GetSuperclass().
|
friend |
Definition at line 24 of file AppleObjCClassDescriptorV2.h.
|
mutableprivate |
Definition at line 276 of file AppleObjCClassDescriptorV2.h.
Referenced by ProcessRelativeMethodLists().
|
private |
Definition at line 273 of file AppleObjCClassDescriptorV2.h.
Referenced by GetIVarAtIndex(), GetIVarInformation(), and GetNumIVars().
|
mutableprivate |
Definition at line 277 of file AppleObjCClassDescriptorV2.h.
Referenced by ProcessRelativeMethodLists().
|
private |
Definition at line 272 of file AppleObjCClassDescriptorV2.h.
Referenced by Describe(), GetClassName(), lldb_private::ClassDescriptorV2::class_ro_t::Read(), lldb_private::ClassDescriptorV2::ivar_t::Read(), and lldb_private::ClassDescriptorV2::method_t::Read().
|
private |
Definition at line 269 of file AppleObjCClassDescriptorV2.h.
Referenced by GetISA(), and Read_objc_class().
|
private |
Definition at line 268 of file AppleObjCClassDescriptorV2.h.
Referenced by Describe(), GetClassName(), GetImplementationLanguage(), GetInstanceSize(), GetIVarInformation(), GetMetaclass(), GetSuperclass(), ProcessMethodList(), and ProcessRelativeMethodLists().
|
staticprivate |
Definition at line 80 of file AppleObjCClassDescriptorV2.h.
Referenced by Read_class_row().