https://github.com/felipepiovezan created https://github.com/llvm/llvm-project/pull/203190
This was used in older 32-bit ObjC programs, and it is not used anywhere by the debugger. >From e4a9430869484950065823ea01274f9a921e635a Mon Sep 17 00:00:00 2001 From: Felipe de Azevedo Piovezan <[email protected]> Date: Thu, 11 Jun 2026 08:10:45 +0100 Subject: [PATCH] [lldb] Delete AppleObjCRuntimeV1 This was used in older 32-bit ObjC programs, and it is not used anywhere by the debugger. --- .../Clang/ClangExpressionParser.cpp | 1 - .../AppleObjCRuntime/AppleObjCRuntime.cpp | 14 +- .../AppleObjCRuntime/AppleObjCRuntimeV1.cpp | 430 ------------------ .../AppleObjCRuntime/AppleObjCRuntimeV1.h | 160 ------- .../ObjC/AppleObjCRuntime/CMakeLists.txt | 1 - .../ObjC/ObjCLanguageRuntime.h | 7 +- 6 files changed, 7 insertions(+), 606 deletions(-) delete mode 100644 lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.cpp delete mode 100644 lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h diff --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp b/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp index 861522623f68b..c5bcfa41d02b4 100644 --- a/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp +++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp @@ -682,7 +682,6 @@ static void SetupLangOpts(CompilerInstance &compiler, lang_opts.ObjCRuntime.set(ObjCRuntime::MacOSX, VersionTuple(10, 7)); break; case ObjCLanguageRuntime::ObjCRuntimeVersions::eObjC_VersionUnknown: - case ObjCLanguageRuntime::ObjCRuntimeVersions::eAppleObjC_V1: lang_opts.ObjCRuntime.set(ObjCRuntime::FragileMacOSX, VersionTuple(10, 7)); break; diff --git a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp index adb9da795f699..925b9f1f94da8 100644 --- a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp +++ b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp @@ -7,7 +7,6 @@ //===----------------------------------------------------------------------===// #include "AppleObjCRuntime.h" -#include "AppleObjCRuntimeV1.h" #include "AppleObjCRuntimeV2.h" #include "AppleObjCTrampolineHandler.h" #include "Plugins/Language/ObjC/NSString.h" @@ -58,15 +57,9 @@ AppleObjCRuntime::AppleObjCRuntime(Process *process) ReadObjCLibraryIfNeeded(process->GetTarget().GetImages()); } -void AppleObjCRuntime::Initialize() { - AppleObjCRuntimeV2::Initialize(); - AppleObjCRuntimeV1::Initialize(); -} +void AppleObjCRuntime::Initialize() { AppleObjCRuntimeV2::Initialize(); } -void AppleObjCRuntime::Terminate() { - AppleObjCRuntimeV2::Terminate(); - AppleObjCRuntimeV1::Terminate(); -} +void AppleObjCRuntime::Terminate() { AppleObjCRuntimeV2::Terminate(); } llvm::Error AppleObjCRuntime::GetObjectDescription(Stream &str, ValueObject &valobj) { @@ -405,7 +398,8 @@ AppleObjCRuntime::GetObjCVersion(Process *process, ModuleSP &objc_module_sp) { SectionSP v1_telltale_section_sp = sections->FindSectionByName(ConstString("__OBJC")); if (v1_telltale_section_sp) { - return ObjCRuntimeVersions::eAppleObjC_V1; + // The V1 runtime is no longer supported. + return ObjCRuntimeVersions::eObjC_VersionUnknown; } return ObjCRuntimeVersions::eAppleObjC_V2; } diff --git a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.cpp b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.cpp deleted file mode 100644 index 4ddef329b3ed0..0000000000000 --- a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.cpp +++ /dev/null @@ -1,430 +0,0 @@ -//===-- AppleObjCRuntimeV1.cpp --------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "AppleObjCRuntimeV1.h" -#include "AppleObjCDeclVendor.h" -#include "AppleObjCTrampolineHandler.h" - -#include "clang/AST/Type.h" - -#include "Plugins/TypeSystem/Clang/TypeSystemClang.h" -#include "lldb/Breakpoint/BreakpointLocation.h" -#include "lldb/Core/Module.h" -#include "lldb/Core/PluginManager.h" -#include "lldb/Expression/FunctionCaller.h" -#include "lldb/Expression/UtilityFunction.h" -#include "lldb/Symbol/Symbol.h" -#include "lldb/Target/ExecutionContext.h" -#include "lldb/Target/Process.h" -#include "lldb/Target/RegisterContext.h" -#include "lldb/Target/Target.h" -#include "lldb/Target/Thread.h" -#include "lldb/Utility/ConstString.h" -#include "lldb/Utility/LLDBLog.h" -#include "lldb/Utility/Log.h" -#include "lldb/Utility/Scalar.h" -#include "lldb/Utility/Status.h" -#include "lldb/Utility/StreamString.h" - -#include <memory> -#include <vector> - -using namespace lldb; -using namespace lldb_private; - -char AppleObjCRuntimeV1::ID = 0; - -AppleObjCRuntimeV1::AppleObjCRuntimeV1(Process *process) - : AppleObjCRuntime(process), m_hash_signature(), - m_isa_hash_table_ptr(LLDB_INVALID_ADDRESS) {} - -// for V1 runtime we just try to return a class name as that is the minimum -// level of support required for the data formatters to work -bool AppleObjCRuntimeV1::GetDynamicTypeAndAddress( - ValueObject &in_value, lldb::DynamicValueType use_dynamic, - TypeAndOrName &class_type_or_name, Address &address, - Value::ValueType &value_type, llvm::ArrayRef<uint8_t> &local_buffer) { - class_type_or_name.Clear(); - value_type = Value::ValueType::Scalar; - if (CouldHaveDynamicValue(in_value)) { - auto class_descriptor(GetClassDescriptor(in_value)); - if (class_descriptor && class_descriptor->IsValid() && - class_descriptor->GetClassName()) { - const addr_t object_ptr = in_value.GetPointerValue().address; - address.SetRawAddress(object_ptr); - class_type_or_name.SetName(class_descriptor->GetClassName()); - } - } - return !class_type_or_name.IsEmpty(); -} - -// Static Functions -lldb_private::LanguageRuntime * -AppleObjCRuntimeV1::CreateInstance(Process *process, - lldb::LanguageType language) { - // FIXME: This should be a MacOS or iOS process, and we need to look for the - // OBJC section to make - // sure we aren't using the V1 runtime. - if (language == eLanguageTypeObjC) { - ModuleSP objc_module_sp; - - if (AppleObjCRuntime::GetObjCVersion(process, objc_module_sp) == - ObjCRuntimeVersions::eAppleObjC_V1) - return new AppleObjCRuntimeV1(process); - else - return nullptr; - } else - return nullptr; -} - -void AppleObjCRuntimeV1::Initialize() { - PluginManager::RegisterPlugin( - GetPluginNameStatic(), "Apple Objective-C Language Runtime - Version 1", - CreateInstance, - /*command_callback = */ nullptr, GetBreakpointExceptionPrecondition); -} - -void AppleObjCRuntimeV1::Terminate() { - PluginManager::UnregisterPlugin(CreateInstance); -} - -BreakpointResolverSP -AppleObjCRuntimeV1::CreateExceptionResolver(const BreakpointSP &bkpt, - bool catch_bp, bool throw_bp) { - BreakpointResolverSP resolver_sp; - - if (throw_bp) - resolver_sp = std::make_shared<BreakpointResolverName>( - bkpt, std::get<1>(GetExceptionThrowLocation()).AsCString(nullptr), - eFunctionNameTypeBase, eLanguageTypeUnknown, Breakpoint::Exact, 0, - /*offset_is_insn_count = */ false, eLazyBoolNo); - // FIXME: don't do catch yet. - return resolver_sp; -} - -struct BufStruct { - char contents[2048]; -}; - -llvm::Expected<std::unique_ptr<UtilityFunction>> -AppleObjCRuntimeV1::CreateObjectChecker(std::string name, - ExecutionContext &exe_ctx) { - std::unique_ptr<BufStruct> buf(new BufStruct); - - int strformatsize = - snprintf(&buf->contents[0], sizeof(buf->contents), - "struct __objc_class " - " \n" - "{ " - " \n" - " struct __objc_class *isa; " - " \n" - " struct __objc_class *super_class; " - " \n" - " const char *name; " - " \n" - " // rest of struct elided because unused " - " \n" - "}; " - " \n" - " " - " \n" - "struct __objc_object " - " \n" - "{ " - " \n" - " struct __objc_class *isa; " - " \n" - "}; " - " \n" - " " - " \n" - "extern \"C\" void " - " \n" - "%s(void *$__lldb_arg_obj, void *$__lldb_arg_selector) " - " \n" - "{ " - " \n" - " struct __objc_object *obj = (struct " - "__objc_object*)$__lldb_arg_obj; \n" - " if ($__lldb_arg_obj == (void *)0) " - " \n" - " return; // nil is ok " - " (int)strlen(obj->isa->name); " - " \n" - "} " - " \n", - name.c_str()); - assert(strformatsize < (int)sizeof(buf->contents)); - UNUSED_IF_ASSERT_DISABLED(strformatsize); - - return GetTargetRef().CreateUtilityFunction(buf->contents, std::move(name), - eLanguageTypeC, exe_ctx); -} - -AppleObjCRuntimeV1::ClassDescriptorV1::ClassDescriptorV1( - ValueObject &isa_pointer) { - Initialize(isa_pointer.GetValueAsUnsigned(0), isa_pointer.GetProcessSP()); -} - -AppleObjCRuntimeV1::ClassDescriptorV1::ClassDescriptorV1( - ObjCISA isa, lldb::ProcessSP process_sp) { - Initialize(isa, process_sp); -} - -void AppleObjCRuntimeV1::ClassDescriptorV1::Initialize( - ObjCISA isa, lldb::ProcessSP process_sp) { - if (!isa || !process_sp) { - m_valid = false; - return; - } - - m_valid = true; - - Status error; - - m_isa = process_sp->ReadPointerFromMemory(isa, error); - - if (error.Fail()) { - m_valid = false; - return; - } - - uint32_t ptr_size = process_sp->GetAddressByteSize(); - - if (!IsPointerValid(m_isa, ptr_size)) { - m_valid = false; - return; - } - - m_parent_isa = process_sp->ReadPointerFromMemory(m_isa + ptr_size, error); - - if (error.Fail()) { - m_valid = false; - return; - } - - if (!IsPointerValid(m_parent_isa, ptr_size, true)) { - m_valid = false; - return; - } - - lldb::addr_t name_ptr = - process_sp->ReadPointerFromMemory(m_isa + 2 * ptr_size, error); - - if (error.Fail()) { - m_valid = false; - return; - } - - lldb::WritableDataBufferSP buffer_sp(new DataBufferHeap(1024, 0)); - - size_t count = process_sp->ReadCStringFromMemory( - name_ptr, (char *)buffer_sp->GetBytes(), 1024, error); - - if (error.Fail()) { - m_valid = false; - return; - } - - if (count) - m_name = ConstString(reinterpret_cast<const char *>(buffer_sp->GetBytes())); - else - m_name = ConstString(); - - m_instance_size = process_sp->ReadUnsignedIntegerFromMemory( - m_isa + 5 * ptr_size, ptr_size, 0, error); - - if (error.Fail()) { - m_valid = false; - return; - } - - m_process_wp = lldb::ProcessWP(process_sp); -} - -AppleObjCRuntime::ClassDescriptorSP -AppleObjCRuntimeV1::ClassDescriptorV1::GetSuperclass() { - if (!m_valid) - return AppleObjCRuntime::ClassDescriptorSP(); - ProcessSP process_sp = m_process_wp.lock(); - if (!process_sp) - return AppleObjCRuntime::ClassDescriptorSP(); - return ObjCLanguageRuntime::ClassDescriptorSP( - new AppleObjCRuntimeV1::ClassDescriptorV1(m_parent_isa, process_sp)); -} - -std::unique_ptr<AppleObjCRuntime::ClassDescriptor> -AppleObjCRuntimeV1::ClassDescriptorV1::GetMetaclass() const { - return nullptr; -} - -bool AppleObjCRuntimeV1::ClassDescriptorV1::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 { - return false; -} - -lldb::addr_t AppleObjCRuntimeV1::GetTaggedPointerObfuscator() { - return 0; -} - -lldb::addr_t AppleObjCRuntimeV1::GetISAHashTablePointer() { - if (m_isa_hash_table_ptr == LLDB_INVALID_ADDRESS) { - ModuleSP objc_module_sp(GetObjCModule()); - - if (!objc_module_sp) - return LLDB_INVALID_ADDRESS; - - static ConstString g_objc_debug_class_hash("_objc_debug_class_hash"); - - const Symbol *symbol = objc_module_sp->FindFirstSymbolWithNameAndType( - g_objc_debug_class_hash, lldb::eSymbolTypeData); - if (symbol && symbol->ValueIsAddress()) { - Process *process = GetProcess(); - if (process) { - - lldb::addr_t objc_debug_class_hash_addr = - symbol->GetAddressRef().GetLoadAddress(&process->GetTarget()); - - if (objc_debug_class_hash_addr != LLDB_INVALID_ADDRESS) { - Status error; - lldb::addr_t objc_debug_class_hash_ptr = - process->ReadPointerFromMemory(objc_debug_class_hash_addr, error); - if (objc_debug_class_hash_ptr != 0 && - objc_debug_class_hash_ptr != LLDB_INVALID_ADDRESS) { - m_isa_hash_table_ptr = objc_debug_class_hash_ptr; - } - } - } - } - } - return m_isa_hash_table_ptr; -} - -void AppleObjCRuntimeV1::UpdateISAToDescriptorMapIfNeeded() { - // TODO: implement HashTableSignature... - Process *process = GetProcess(); - - if (process) { - // Update the process stop ID that indicates the last time we updated the - // map, whether it was successful or not. - m_isa_to_descriptor_stop_id = process->GetStopID(); - - Log *log = GetLog(LLDBLog::Process); - - ProcessSP process_sp = process->shared_from_this(); - - ModuleSP objc_module_sp(GetObjCModule()); - - if (!objc_module_sp) - return; - - lldb::addr_t hash_table_ptr = GetISAHashTablePointer(); - if (hash_table_ptr != LLDB_INVALID_ADDRESS) { - // Read the NXHashTable struct: - // - // typedef struct { - // const NXHashTablePrototype *prototype; - // unsigned count; - // unsigned nbBuckets; - // void *buckets; - // const void *info; - // } NXHashTable; - - Status error; - DataBufferHeap buffer(1024, 0); - if (process->ReadMemory(hash_table_ptr, buffer.GetBytes(), 20, error) == - 20) { - const uint32_t addr_size = m_process->GetAddressByteSize(); - const ByteOrder byte_order = m_process->GetByteOrder(); - DataExtractor data(buffer.GetBytes(), buffer.GetByteSize(), byte_order, - addr_size); - lldb::offset_t offset = addr_size; // Skip prototype - const uint32_t count = data.GetU32(&offset); - const uint32_t num_buckets = data.GetU32(&offset); - const addr_t buckets_ptr = data.GetAddress(&offset); - if (m_hash_signature.NeedsUpdate(count, num_buckets, buckets_ptr)) { - m_hash_signature.UpdateSignature(count, num_buckets, buckets_ptr); - - const uint32_t data_size = num_buckets * 2 * sizeof(uint32_t); - buffer.SetByteSize(data_size); - - if (process->ReadMemory(buckets_ptr, buffer.GetBytes(), data_size, - error) == data_size) { - data.SetData(buffer.GetBytes(), buffer.GetByteSize(), byte_order); - offset = 0; - for (uint32_t bucket_idx = 0; bucket_idx < num_buckets; - ++bucket_idx) { - const uint32_t bucket_isa_count = data.GetU32(&offset); - const lldb::addr_t bucket_data = data.GetU32(&offset); - - if (bucket_isa_count == 0) - continue; - - ObjCISA isa; - if (bucket_isa_count == 1) { - // When we only have one entry in the bucket, the bucket data - // is the "isa" - isa = bucket_data; - if (isa) { - if (!ISAIsCached(isa)) { - ClassDescriptorSP descriptor_sp( - new ClassDescriptorV1(isa, process_sp)); - - LLDB_LOGF_VERBOSE( - log, - "AppleObjCRuntimeV1 added (ObjCISA)0x%" PRIx64 - " from _objc_debug_class_hash to " - "isa->descriptor cache", - isa); - - AddClass(isa, descriptor_sp); - } - } - } else { - // When we have more than one entry in the bucket, the bucket - // data is a pointer to an array of "isa" values - addr_t isa_addr = bucket_data; - for (uint32_t isa_idx = 0; isa_idx < bucket_isa_count; - ++isa_idx, isa_addr += addr_size) { - isa = m_process->ReadPointerFromMemory(isa_addr, error); - - if (isa && isa != LLDB_INVALID_ADDRESS) { - if (!ISAIsCached(isa)) { - ClassDescriptorSP descriptor_sp( - new ClassDescriptorV1(isa, process_sp)); - - LLDB_LOGF_VERBOSE( - log, - "AppleObjCRuntimeV1 added (ObjCISA)0x%" PRIx64 - " from _objc_debug_class_hash to isa->descriptor " - "cache", - isa); - - AddClass(isa, descriptor_sp); - } - } - } - } - } - } - } - } - } - } else { - m_isa_to_descriptor_stop_id = UINT32_MAX; - } -} - -DeclVendor *AppleObjCRuntimeV1::GetDeclVendor() { - return nullptr; -} diff --git a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h deleted file mode 100644 index 9e74a735cbc62..0000000000000 --- a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h +++ /dev/null @@ -1,160 +0,0 @@ -//===-- AppleObjCRuntimeV1.h ------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef LLDB_SOURCE_PLUGINS_LANGUAGERUNTIME_OBJC_APPLEOBJCRUNTIME_APPLEOBJCRUNTIMEV1_H -#define LLDB_SOURCE_PLUGINS_LANGUAGERUNTIME_OBJC_APPLEOBJCRUNTIME_APPLEOBJCRUNTIMEV1_H - -#include "AppleObjCRuntime.h" -#include "lldb/lldb-private.h" - -#include "Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h" - -namespace lldb_private { - -class AppleObjCRuntimeV1 : public AppleObjCRuntime { -public: - ~AppleObjCRuntimeV1() override = default; - - // Static Functions - static void Initialize(); - - static void Terminate(); - - static lldb_private::LanguageRuntime * - CreateInstance(Process *process, lldb::LanguageType language); - - static llvm::StringRef GetPluginNameStatic() { return "apple-objc-v1"; } - - static char ID; - - bool isA(const void *ClassID) const override { - return ClassID == &ID || AppleObjCRuntime::isA(ClassID); - } - - static bool classof(const LanguageRuntime *runtime) { - return runtime->isA(&ID); - } - - lldb::addr_t GetTaggedPointerObfuscator(); - - class ClassDescriptorV1 : public ObjCLanguageRuntime::ClassDescriptor { - public: - ClassDescriptorV1(ValueObject &isa_pointer); - ClassDescriptorV1(ObjCISA isa, lldb::ProcessSP process_sp); - - ~ClassDescriptorV1() override = default; - - ConstString GetClassName() override { return m_name; } - - ClassDescriptorSP GetSuperclass() override; - - std::unique_ptr<ClassDescriptor> GetMetaclass() const override; - - bool IsValid() override { return m_valid; } - - // v1 does not support tagged pointers - bool GetTaggedPointerInfo(uint64_t *info_bits = nullptr, - uint64_t *value_bits = nullptr, - uint64_t *payload = nullptr) override { - return false; - } - - bool GetTaggedPointerInfoSigned(uint64_t *info_bits = nullptr, - int64_t *value_bits = nullptr, - uint64_t *payload = nullptr) override { - return false; - } - - uint64_t GetInstanceSize() override { return m_instance_size; } - - ObjCISA GetISA() override { return m_isa; } - - 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; - - protected: - void Initialize(ObjCISA isa, lldb::ProcessSP process_sp); - - private: - ConstString m_name; - ObjCISA m_isa; - ObjCISA m_parent_isa; - bool m_valid; - lldb::ProcessWP m_process_wp; - uint64_t m_instance_size; - }; - - // These are generic runtime functions: - bool GetDynamicTypeAndAddress(ValueObject &in_value, - lldb::DynamicValueType use_dynamic, - TypeAndOrName &class_type_or_name, - Address &address, Value::ValueType &value_type, - llvm::ArrayRef<uint8_t> &local_buffer) override; - - llvm::Expected<std::unique_ptr<UtilityFunction>> - CreateObjectChecker(std::string, ExecutionContext &exe_ctx) override; - - // PluginInterface protocol - llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); } - - ObjCRuntimeVersions GetRuntimeVersion() const override { - return ObjCRuntimeVersions::eAppleObjC_V1; - } - - void UpdateISAToDescriptorMapIfNeeded() override; - - DeclVendor *GetDeclVendor() override; - -protected: - lldb::BreakpointResolverSP - CreateExceptionResolver(const lldb::BreakpointSP &bkpt, - bool catch_bp, bool throw_bp) override; - - class HashTableSignature { - public: - HashTableSignature() = default; - - bool NeedsUpdate(uint32_t count, uint32_t num_buckets, - lldb::addr_t buckets_ptr) { - return m_count != count || m_num_buckets != num_buckets || - m_buckets_ptr != buckets_ptr; - } - - void UpdateSignature(uint32_t count, uint32_t num_buckets, - lldb::addr_t buckets_ptr) { - m_count = count; - m_num_buckets = num_buckets; - m_buckets_ptr = buckets_ptr; - } - - protected: - uint32_t m_count = 0; - uint32_t m_num_buckets = 0; - lldb::addr_t m_buckets_ptr = LLDB_INVALID_ADDRESS; - }; - - lldb::addr_t GetISAHashTablePointer(); - - HashTableSignature m_hash_signature; - lldb::addr_t m_isa_hash_table_ptr; - std::unique_ptr<DeclVendor> m_decl_vendor_up; - -private: - AppleObjCRuntimeV1(Process *process); -}; - -} // namespace lldb_private - -#endif // LLDB_SOURCE_PLUGINS_LANGUAGERUNTIME_OBJC_APPLEOBJCRUNTIME_APPLEOBJCRUNTIMEV1_H diff --git a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/CMakeLists.txt b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/CMakeLists.txt index 0b2dfe12c5c46..a45a71dfac819 100644 --- a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/CMakeLists.txt +++ b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/CMakeLists.txt @@ -1,6 +1,5 @@ add_lldb_library(lldbPluginAppleObjCRuntime PLUGIN AppleObjCRuntime.cpp - AppleObjCRuntimeV1.cpp AppleObjCRuntimeV2.cpp AppleObjCTrampolineHandler.cpp AppleObjCDeclVendor.cpp diff --git a/lldb/source/Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h b/lldb/source/Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h index 8b5d6af54cbc3..bf04591e7f8a4 100644 --- a/lldb/source/Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h +++ b/lldb/source/Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h @@ -40,7 +40,6 @@ class ObjCLanguageRuntime : public LanguageRuntime { public: enum class ObjCRuntimeVersions { eObjC_VersionUnknown = 0, - eAppleObjC_V1 = 1, eAppleObjC_V2 = 2, eGNUstep_libobjc2 = 3, }; @@ -51,7 +50,7 @@ class ObjCLanguageRuntime : public LanguageRuntime { typedef std::shared_ptr<ClassDescriptor> ClassDescriptorSP; // the information that we want to support retrieving from an ObjC class this - // needs to be pure virtual since there are at least 2 different + // needs to be pure virtual since there can be multiple // implementations of the runtime, and more might come class ClassDescriptor { public: @@ -66,7 +65,7 @@ class ObjCLanguageRuntime : public LanguageRuntime { virtual std::unique_ptr<ClassDescriptor> GetMetaclass() const = 0; // virtual if any implementation has some other version-specific rules but - // for the known v1/v2 this is all that needs to be done + // for the known runtime versions this is all that needs to be done virtual bool IsKVO() { if (m_is_kvo == eLazyBoolCalculate) { const char *class_name = GetClassName().AsCString(nullptr); @@ -78,7 +77,7 @@ class ObjCLanguageRuntime : public LanguageRuntime { } // virtual if any implementation has some other version-specific rules but - // for the known v1/v2 this is all that needs to be done + // for the known runtime versions this is all that needs to be done virtual bool IsCFType() { if (m_is_cf == eLazyBoolCalculate) { const char *class_name = GetClassName().AsCString(nullptr); _______________________________________________ lldb-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
