#include "clang/AST/Type.h"
#include "ObjCLanguageRuntime.h"
#include "Plugins/TypeSystem/Clang/TypeSystemClang.h"
#include "lldb/Core/Module.h"
#include "lldb/Core/PluginManager.h"
#include "lldb/Core/ValueObject.h"
#include "lldb/Symbol/SymbolContext.h"
#include "lldb/Symbol/SymbolFile.h"
#include "lldb/Symbol/Type.h"
#include "lldb/Symbol/TypeList.h"
#include "lldb/Symbol/Variable.h"
#include "lldb/Target/ABI.h"
#include "lldb/Target/Target.h"
#include "lldb/Utility/LLDBLog.h"
#include "lldb/Utility/Log.h"
#include "lldb/Utility/Timer.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Support/DJB.h"
#include <optional>
usingnamespacelldb;
usingnamespacelldb_private;
char ObjCLanguageRuntime::ID = …;
ObjCLanguageRuntime::~ObjCLanguageRuntime() = default;
ObjCLanguageRuntime::ObjCLanguageRuntime(Process *process)
: … { … }
bool ObjCLanguageRuntime::IsAllowedRuntimeValue(ConstString name) { … }
bool ObjCLanguageRuntime::AddClass(ObjCISA isa,
const ClassDescriptorSP &descriptor_sp,
const char *class_name) { … }
void ObjCLanguageRuntime::AddToMethodCache(lldb::addr_t class_addr,
lldb::addr_t selector,
lldb::addr_t impl_addr) { … }
void ObjCLanguageRuntime::AddToMethodCache(lldb::addr_t class_addr,
llvm::StringRef sel_str,
lldb::addr_t impl_addr) { … }
lldb::addr_t ObjCLanguageRuntime::LookupInMethodCache(lldb::addr_t class_addr,
lldb::addr_t selector) { … }
lldb::addr_t ObjCLanguageRuntime::LookupInMethodCache(lldb::addr_t class_addr,
llvm::StringRef sel_str) { … }
lldb::TypeSP
ObjCLanguageRuntime::LookupInCompleteClassCache(ConstString &name) { … }
size_t ObjCLanguageRuntime::GetByteOffsetForIvar(CompilerType &parent_qual_type,
const char *ivar_name) { … }
bool ObjCLanguageRuntime::ClassDescriptor::IsPointerValid(
lldb::addr_t value, uint32_t ptr_size, bool allow_NULLs, bool allow_tagged,
bool check_version_specific) const { … }
ObjCLanguageRuntime::ObjCISA
ObjCLanguageRuntime::GetISA(ConstString name) { … }
ObjCLanguageRuntime::ISAToDescriptorIterator
ObjCLanguageRuntime::GetDescriptorIterator(ConstString name) { … }
std::pair<ObjCLanguageRuntime::ISAToDescriptorIterator,
ObjCLanguageRuntime::ISAToDescriptorIterator>
ObjCLanguageRuntime::GetDescriptorIteratorPair(bool update_if_needed) { … }
void ObjCLanguageRuntime::ReadObjCLibraryIfNeeded(
const ModuleList &module_list) { … }
ObjCLanguageRuntime::ObjCISA
ObjCLanguageRuntime::GetParentClass(ObjCLanguageRuntime::ObjCISA isa) { … }
ObjCLanguageRuntime::ClassDescriptorSP
ObjCLanguageRuntime::GetClassDescriptorFromClassName(
ConstString class_name) { … }
ObjCLanguageRuntime::ClassDescriptorSP
ObjCLanguageRuntime::GetClassDescriptor(ValueObject &valobj) { … }
ObjCLanguageRuntime::ClassDescriptorSP
ObjCLanguageRuntime::GetNonKVOClassDescriptor(ValueObject &valobj) { … }
ObjCLanguageRuntime::ClassDescriptorSP
ObjCLanguageRuntime::GetClassDescriptorFromISA(ObjCISA isa) { … }
ObjCLanguageRuntime::ClassDescriptorSP
ObjCLanguageRuntime::GetNonKVOClassDescriptor(ObjCISA isa) { … }
CompilerType
ObjCLanguageRuntime::EncodingToType::RealizeType(const char *name,
bool for_expression) { … }
ObjCLanguageRuntime::EncodingToType::~EncodingToType() = default;
ObjCLanguageRuntime::EncodingToTypeSP ObjCLanguageRuntime::GetEncodingToType() { … }
std::optional<uint64_t>
ObjCLanguageRuntime::GetTypeBitSize(const CompilerType &compiler_type) { … }
lldb::BreakpointPreconditionSP
ObjCLanguageRuntime::GetBreakpointExceptionPrecondition(LanguageType language,
bool throw_bp) { … }
void ObjCLanguageRuntime::ObjCExceptionPrecondition::AddClassName(
const char *class_name) { … }
ObjCLanguageRuntime::ObjCExceptionPrecondition::ObjCExceptionPrecondition() =
default;
bool ObjCLanguageRuntime::ObjCExceptionPrecondition::EvaluatePrecondition(
StoppointCallbackContext &context) { … }
void ObjCLanguageRuntime::ObjCExceptionPrecondition::GetDescription(
Stream &stream, lldb::DescriptionLevel level) { … }
Status ObjCLanguageRuntime::ObjCExceptionPrecondition::ConfigurePrecondition(
Args &args) { … }
std::optional<CompilerType>
ObjCLanguageRuntime::GetRuntimeType(CompilerType base_type) { … }