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 bool | IsKVO () |
virtual bool | IsCFType () |
virtual bool | CheckPointer (lldb::addr_t value, uint32_t ptr_size) const |
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) |
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.
References lldb_private::AppleObjCRuntimeV2, m_image_to_method_lists, m_ivars_storage, m_last_version_updated, m_name, m_objc_class_ptr, and m_runtime.
Referenced by lldb_private::ClassDescriptorV2::iVarsStorage::fill(), and GetMetaclass().
|
override |
Definition at line 524 of file AppleObjCClassDescriptorV2.cpp.
References GetMetaclass(), GetMethodList(), 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 601 of file AppleObjCClassDescriptorV2.cpp.
References 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 675 of file AppleObjCClassDescriptorV2.cpp.
References lldb::eLanguageTypeObjC, lldb::eLanguageTypeSwift, IS_SWIFT_STABLE, m_runtime, and Read_objc_class().
|
overridevirtual |
Implements lldb_private::ObjCLanguageRuntime::ClassDescriptor.
Definition at line 653 of file AppleObjCClassDescriptorV2.cpp.
References 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 744 of file AppleObjCClassDescriptorV2.cpp.
References m_ivars_storage, and m_runtime.
Referenced by GetNumIVars().
|
overridevirtual |
Implements lldb_private::ObjCLanguageRuntime::ClassDescriptor.
Definition at line 636 of file AppleObjCClassDescriptorV2.cpp.
References ClassDescriptorV2(), 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(), and m_ivars_storage.
Referenced by GetIVarAtIndex().
|
overridevirtual |
Implements lldb_private::ObjCLanguageRuntime::ClassDescriptor.
Definition at line 621 of file AppleObjCClassDescriptorV2.cpp.
References 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::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(), 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.
Referenced by ClassDescriptorV2(), and lldb_private::ClassDescriptorV2::iVarsStorage::fill().
|
mutableprivate |
Definition at line 276 of file AppleObjCClassDescriptorV2.h.
Referenced by ClassDescriptorV2(), and ProcessRelativeMethodLists().
|
private |
Definition at line 273 of file AppleObjCClassDescriptorV2.h.
Referenced by ClassDescriptorV2(), GetIVarAtIndex(), GetIVarInformation(), and GetNumIVars().
|
mutableprivate |
Definition at line 277 of file AppleObjCClassDescriptorV2.h.
Referenced by ClassDescriptorV2(), and ProcessRelativeMethodLists().
|
private |
Definition at line 272 of file AppleObjCClassDescriptorV2.h.
Referenced by ClassDescriptorV2(), Describe(), and GetClassName().
|
private |
Definition at line 269 of file AppleObjCClassDescriptorV2.h.
Referenced by ClassDescriptorV2(), GetISA(), and Read_objc_class().
|
private |
Definition at line 268 of file AppleObjCClassDescriptorV2.h.
Referenced by ClassDescriptorV2(), Describe(), GetClassName(), GetImplementationLanguage(), GetInstanceSize(), GetIVarInformation(), GetMetaclass(), GetSuperclass(), ProcessMethodList(), and ProcessRelativeMethodLists().
|
staticprivate |
Definition at line 80 of file AppleObjCClassDescriptorV2.h.
Referenced by Read_class_row().