|
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 |
| llvm::SmallVector< method_t, 0 > | ReadMethods (llvm::ArrayRef< lldb::addr_t > addresses, lldb::addr_t relative_string_base_addr, bool is_small, bool has_direct_sel, bool has_relative_types) 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 248 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 557 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 634 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 708 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 686 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 777 of file AppleObjCClassDescriptorV2.cpp.
References m_ivars_storage, and m_runtime.
Referenced by GetNumIVars().
|
overridevirtual |
Implements lldb_private::ObjCLanguageRuntime::ClassDescriptor.
Definition at line 669 of file AppleObjCClassDescriptorV2.cpp.
References ClassDescriptorV2(), m_runtime, and Read_objc_class().
Referenced by Describe().
|
private |
Definition at line 458 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 654 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 477 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_has_relative_types, lldb_private::ClassDescriptorV2::method_list_t::m_is_small, m_runtime, and ReadMethods().
Referenced by Describe(), and ProcessRelativeMethodLists().
|
private |
Definition at line 510 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 197 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 22 of file AppleObjCClassDescriptorV2.cpp.
References m_objc_class_ptr.
Referenced by Describe(), GetClassName(), GetImplementationLanguage(), GetInstanceSize(), GetMetaclass(), and GetSuperclass().
|
private |
Definition at line 269 of file AppleObjCClassDescriptorV2.cpp.
References lldb_private::Process::GetAddressByteSize(), lldb_private::Process::GetByteOrder(), lldb_private::ClassDescriptorV2::method_t::GetSize(), m_runtime, and lldb_private::Process::ReadMemoryRanges().
Referenced by ProcessMethodList().
|
friend |
Definition at line 24 of file AppleObjCClassDescriptorV2.h.
Referenced by ClassDescriptorV2(), and lldb_private::ClassDescriptorV2::iVarsStorage::fill().
|
mutableprivate |
Definition at line 279 of file AppleObjCClassDescriptorV2.h.
Referenced by ClassDescriptorV2(), and ProcessRelativeMethodLists().
|
private |
Definition at line 276 of file AppleObjCClassDescriptorV2.h.
Referenced by ClassDescriptorV2(), GetIVarAtIndex(), GetIVarInformation(), and GetNumIVars().
|
mutableprivate |
Definition at line 280 of file AppleObjCClassDescriptorV2.h.
Referenced by ClassDescriptorV2(), and ProcessRelativeMethodLists().
|
private |
Definition at line 275 of file AppleObjCClassDescriptorV2.h.
Referenced by ClassDescriptorV2(), Describe(), and GetClassName().
|
private |
Definition at line 272 of file AppleObjCClassDescriptorV2.h.
Referenced by ClassDescriptorV2(), GetISA(), and Read_objc_class().
|
private |
Definition at line 271 of file AppleObjCClassDescriptorV2.h.
Referenced by ClassDescriptorV2(), Describe(), GetClassName(), GetImplementationLanguage(), GetInstanceSize(), GetIVarInformation(), GetMetaclass(), GetSuperclass(), ProcessMethodList(), ProcessRelativeMethodLists(), and ReadMethods().
|
staticprivate |
Definition at line 80 of file AppleObjCClassDescriptorV2.h.
Referenced by Read_class_row().