#include "ItaniumABILanguageRuntime.h"
#include "Plugins/TypeSystem/Clang/TypeSystemClang.h"
#include "lldb/Breakpoint/BreakpointLocation.h"
#include "lldb/Core/Mangled.h"
#include "lldb/Core/Module.h"
#include "lldb/Core/PluginManager.h"
#include "lldb/Core/ValueObject.h"
#include "lldb/Core/ValueObjectMemory.h"
#include "lldb/DataFormatters/FormattersHelpers.h"
#include "lldb/Expression/DiagnosticManager.h"
#include "lldb/Expression/FunctionCaller.h"
#include "lldb/Interpreter/CommandObject.h"
#include "lldb/Interpreter/CommandObjectMultiword.h"
#include "lldb/Interpreter/CommandReturnObject.h"
#include "lldb/Symbol/Symbol.h"
#include "lldb/Symbol/SymbolFile.h"
#include "lldb/Symbol/TypeList.h"
#include "lldb/Target/Process.h"
#include "lldb/Target/RegisterContext.h"
#include "lldb/Target/SectionLoadList.h"
#include "lldb/Target/StopInfo.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 <vector>
usingnamespacelldb;
usingnamespacelldb_private;
LLDB_PLUGIN_DEFINE_ADV(ItaniumABILanguageRuntime, CXXItaniumABI)
static const char *vtable_demangled_prefix = …;
char ItaniumABILanguageRuntime::ID = …;
bool ItaniumABILanguageRuntime::CouldHaveDynamicValue(ValueObject &in_value) { … }
TypeAndOrName ItaniumABILanguageRuntime::GetTypeInfo(
ValueObject &in_value, const VTableInfo &vtable_info) { … }
llvm::Error ItaniumABILanguageRuntime::TypeHasVTable(CompilerType type) { … }
llvm::Expected<LanguageRuntime::VTableInfo>
ItaniumABILanguageRuntime::GetVTableInfo(ValueObject &in_value,
bool check_type) { … }
bool ItaniumABILanguageRuntime::GetDynamicTypeAndAddress(
ValueObject &in_value, lldb::DynamicValueType use_dynamic,
TypeAndOrName &class_type_or_name, Address &dynamic_address,
Value::ValueType &value_type) { … }
TypeAndOrName ItaniumABILanguageRuntime::FixUpDynamicType(
const TypeAndOrName &type_and_or_name, ValueObject &static_value) { … }
LanguageRuntime *
ItaniumABILanguageRuntime::CreateInstance(Process *process,
lldb::LanguageType language) { … }
class CommandObjectMultiwordItaniumABI_Demangle : public CommandObjectParsed { … };
class CommandObjectMultiwordItaniumABI : public CommandObjectMultiword { … };
void ItaniumABILanguageRuntime::Initialize() { … }
void ItaniumABILanguageRuntime::Terminate() { … }
BreakpointResolverSP ItaniumABILanguageRuntime::CreateExceptionResolver(
const BreakpointSP &bkpt, bool catch_bp, bool throw_bp) { … }
BreakpointResolverSP ItaniumABILanguageRuntime::CreateExceptionResolver(
const BreakpointSP &bkpt, bool catch_bp, bool throw_bp,
bool for_expressions) { … }
lldb::SearchFilterSP ItaniumABILanguageRuntime::CreateExceptionSearchFilter() { … }
lldb::BreakpointSP ItaniumABILanguageRuntime::CreateExceptionBreakpoint(
bool catch_bp, bool throw_bp, bool for_expressions, bool is_internal) { … }
void ItaniumABILanguageRuntime::SetExceptionBreakpoints() { … }
void ItaniumABILanguageRuntime::ClearExceptionBreakpoints() { … }
bool ItaniumABILanguageRuntime::ExceptionBreakpointsAreSet() { … }
bool ItaniumABILanguageRuntime::ExceptionBreakpointsExplainStop(
lldb::StopInfoSP stop_reason) { … }
ValueObjectSP ItaniumABILanguageRuntime::GetExceptionObjectForThread(
ThreadSP thread_sp) { … }
TypeAndOrName ItaniumABILanguageRuntime::GetDynamicTypeInfo(
const lldb_private::Address &vtable_addr) { … }
void ItaniumABILanguageRuntime::SetDynamicTypeInfo(
const lldb_private::Address &vtable_addr, const TypeAndOrName &type_info) { … }