Go to the documentation of this file.
9 #ifndef LLDB_SOURCE_PLUGINS_LANGUAGERUNTIME_OBJC_APPLEOBJCRUNTIME_APPLEOBJCRUNTIMEV1_H
10 #define LLDB_SOURCE_PLUGINS_LANGUAGERUNTIME_OBJC_APPLEOBJCRUNTIME_APPLEOBJCRUNTIMEV1_H
35 bool isA(
const void *ClassID)
const override {
40 return runtime->
isA(&
ID);
62 uint64_t *value_bits =
nullptr,
63 uint64_t *payload =
nullptr)
override {
68 int64_t *value_bits =
nullptr,
69 uint64_t *payload =
nullptr)
override {
80 std::function<
bool(
const char *,
const char *)>
const
81 &instance_method_func,
82 std::function<
bool(
const char *,
const char *)>
const
84 std::function<
bool(
const char *,
const char *,
lldb::addr_t,
85 uint64_t)>
const &ivar_func)
const override;
106 llvm::Expected<std::unique_ptr<UtilityFunction>>
121 lldb::BreakpointResolverSP
123 bool catch_bp,
bool throw_bp)
override;
160 #endif // LLDB_SOURCE_PLUGINS_LANGUAGERUNTIME_OBJC_APPLEOBJCRUNTIME_APPLEOBJCRUNTIMEV1_H
bool isA(const void *ClassID) const override
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...
ObjCRuntimeVersions GetRuntimeVersion() const override
lldb::addr_t m_buckets_ptr
~AppleObjCRuntimeV1() override=default
bool isA(const void *ClassID) const override
std::shared_ptr< ClassDescriptor > ClassDescriptorSP
HashTableSignature()=default
uint64_t GetInstanceSize() override
void UpdateISAToDescriptorMapIfNeeded() override
LanguageType
Programming language type.
bool GetTaggedPointerInfoSigned(uint64_t *info_bits=nullptr, int64_t *value_bits=nullptr, uint64_t *payload=nullptr) override
AppleObjCRuntimeV1(Process *process)
std::unique_ptr< DeclVendor > m_decl_vendor_up
virtual bool isA(const void *ClassID) const
lldb::BreakpointResolverSP CreateExceptionResolver(const lldb::BreakpointSP &bkpt, bool catch_bp, bool throw_bp) override
void UpdateSignature(uint32_t count, uint32_t num_buckets, lldb::addr_t buckets_ptr)
ConstString GetClassName() override
lldb::addr_t m_isa_hash_table_ptr
bool GetDynamicTypeAndAddress(ValueObject &in_value, lldb::DynamicValueType use_dynamic, TypeAndOrName &class_type_or_name, Address &address, Value::ValueType &value_type) override
ClassDescriptorV1(ValueObject &isa_pointer)
ValueType
Type that describes Value::m_value.
lldb::addr_t GetTaggedPointerObfuscator()
string(SUBSTRING ${p} 10 -1 pStripped) if($
DeclVendor * GetDeclVendor() override
lldb::addr_t GetISAHashTablePointer()
static llvm::StringRef GetPluginNameStatic()
ClassDescriptorSP GetMetaclass() const 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
static lldb_private::LanguageRuntime * CreateInstance(Process *process, lldb::LanguageType language)
static bool classof(const LanguageRuntime *runtime)
#define LLDB_INVALID_ADDRESS
bool NeedsUpdate(uint32_t count, uint32_t num_buckets, lldb::addr_t buckets_ptr)
llvm::Expected< std::unique_ptr< UtilityFunction > > CreateObjectChecker(std::string, ExecutionContext &exe_ctx) override
A class that represents a running process on the host machine.
HashTableSignature m_hash_signature
Sometimes you can find the name of the type corresponding to an object, but we don't have debug infor...
~ClassDescriptorV1() override=default
ClassDescriptorSP GetSuperclass() override
void Initialize(ObjCISA isa, lldb::ProcessSP process_sp)
lldb::ProcessWP m_process_wp
ObjCISA GetISA() override
llvm::StringRef GetPluginName() override