|
LLDB mainline
|
#include <ItaniumABIRuntime.h>
Public Member Functions | |
| ItaniumABIRuntime (Process *process) | |
| llvm::Expected< LanguageRuntime::VTableInfo > | GetVTableInfo (ValueObject &in_value, bool check_type) |
| bool | GetDynamicTypeAndAddress (ValueObject &in_value, lldb::DynamicValueType use_dynamic, TypeAndOrName &class_type_or_name, Address &dynamic_address, Value::ValueType &value_type) |
| void | AppendExceptionBreakpointFunctions (std::vector< const char * > &names, bool catch_bp, bool throw_bp, bool for_expressions) |
| void | AppendExceptionBreakpointFilterModules (FileSpecList &list, const Target &target) |
| lldb::ValueObjectSP | GetExceptionObjectForThread (lldb::ThreadSP thread_sp) |
Private Types | |
| using | DynamicTypeCache = std::map<Address, TypeAndOrName> |
| using | VTableInfoCache = std::map<Address, LanguageRuntime::VTableInfo> |
Private Member Functions | |
| TypeAndOrName | GetTypeInfo (ValueObject &in_value, const LanguageRuntime::VTableInfo &vtable_info) |
| llvm::Error | TypeHasVTable (CompilerType type) |
| TypeAndOrName | GetDynamicTypeInfo (const lldb_private::Address &vtable_addr) |
| void | SetDynamicTypeInfo (const lldb_private::Address &vtable_addr, const TypeAndOrName &type_info) |
Private Attributes | |
| DynamicTypeCache | m_dynamic_type_map |
| VTableInfoCache | m_vtable_info_map |
| std::mutex | m_mutex |
| Process * | m_process |
Definition at line 19 of file ItaniumABIRuntime.h.
|
private |
Definition at line 52 of file ItaniumABIRuntime.h.
|
private |
Definition at line 53 of file ItaniumABIRuntime.h.
| ItaniumABIRuntime::ItaniumABIRuntime | ( | Process * | process | ) |
Definition at line 22 of file ItaniumABIRuntime.cpp.
References m_process.
| void ItaniumABIRuntime::AppendExceptionBreakpointFilterModules | ( | FileSpecList & | list, |
| const Target & | target ) |
Definition at line 354 of file ItaniumABIRuntime.cpp.
References lldb_private::FileSpecList::EmplaceBack(), lldb_private::Target::GetArchitecture(), and lldb_private::ArchSpec::GetTriple().
| void ItaniumABIRuntime::AppendExceptionBreakpointFunctions | ( | std::vector< const char * > & | names, |
| bool | catch_bp, | ||
| bool | throw_bp, | ||
| bool | for_expressions ) |
Definition at line 327 of file ItaniumABIRuntime.cpp.
| bool ItaniumABIRuntime::GetDynamicTypeAndAddress | ( | ValueObject & | in_value, |
| lldb::DynamicValueType | use_dynamic, | ||
| TypeAndOrName & | class_type_or_name, | ||
| Address & | dynamic_address, | ||
| Value::ValueType & | value_type ) |
Definition at line 254 of file ItaniumABIRuntime.cpp.
References lldb_private::LanguageRuntime::VTableInfo::addr, lldb_private::ValueObject::AddrAndType::address, lldb_private::TypeSystemClang::AreTypesSame(), error(), lldb_private::TypeAndOrName::GetCompilerType(), lldb_private::ValueObject::GetCompilerType(), lldb_private::Address::GetLoadAddress(), lldb_private::ValueObject::GetPointerValue(), GetTypeInfo(), GetVTableInfo(), LLDB_INVALID_ADDRESS, m_process, lldb_private::Target::ReadSignedIntegerFromMemory(), and lldb_private::Address::SetRawAddress().
|
private |
Definition at line 438 of file ItaniumABIRuntime.cpp.
References m_dynamic_type_map, and m_mutex.
Referenced by GetTypeInfo().
| ValueObjectSP ItaniumABIRuntime::GetExceptionObjectForThread | ( | lldb::ThreadSP | thread_sp | ) |
Definition at line 367 of file ItaniumABIRuntime.cpp.
References lldb_private::ValueObject::CreateValueObjectFromData(), lldb::eBasicTypeVoid, lldb::eDynamicDontRunTarget, lldb::eExpressionCompleted, lldb::eLanguageTypeC, error(), lldb::eSymbolTypeCode, lldb_private::FunctionCaller::ExecuteFunction(), lldb_private::ModuleList::FindSymbolsWithNameAndType(), lldb_private::Symbol::GetAddress(), lldb_private::formatters::InferiorSizedWord::GetAsData(), lldb_private::SymbolContextList::GetContextAtIndex(), lldb_private::ScratchTypeSystemClang::GetForTarget(), lldb_private::Value::GetScalar(), LLDB_INVALID_ADDRESS, m_process, lldb_private::EvaluateExpressionOptions::SetIgnoreBreakpoints(), lldb_private::EvaluateExpressionOptions::SetStopOthers(), lldb_private::EvaluateExpressionOptions::SetTimeout(), lldb_private::EvaluateExpressionOptions::SetTryAllThreads(), lldb_private::EvaluateExpressionOptions::SetUnwindOnError(), lldb_private::SymbolContext::symbol, and lldb_private::Scalar::ULongLong().
|
private |
Definition at line 25 of file ItaniumABIRuntime.cpp.
References lldb_private::LanguageRuntime::VTableInfo::addr, lldb_private::ValueObject::AddrAndType::address, lldb_private::ConstString::AsCString(), lldb_private::Symbol::CalculateSymbolContextModule(), lldb_private::TypeList::Empty(), lldb_private::ConstString::GetCString(), lldb_private::Mangled::GetDemangledName(), GetDynamicTypeInfo(), lldb_private::TypeResults::GetFirstType(), lldb_private::GetLog(), lldb_private::Symbol::GetMangled(), lldb_private::ValueObject::GetPointerValue(), lldb_private::TypeList::GetSize(), lldb_private::ConstString::GetStringRef(), lldb_private::TypeList::GetTypeAtIndex(), lldb_private::TypeResults::GetTypeMap(), lldb_private::ValueObject::GetTypeName(), lldb_private::TypeList::Insert(), lldb_private::TypeSystemClang::IsCXXClassType(), lldb_private::Address::IsSectionOffset(), LLDB_LOGF, m_process, lldb_private::Object, SetDynamicTypeInfo(), lldb_private::TypeQuery::SetFindOne(), lldb_private::TypeAndOrName::SetName(), lldb_private::TypeAndOrName::SetTypeSP(), lldb_private::LanguageRuntime::VTableInfo::symbol, lldb_private::TypeMap::Types(), and vtable_demangled_prefix.
Referenced by GetDynamicTypeAndAddress().
| llvm::Expected< LanguageRuntime::VTableInfo > ItaniumABIRuntime::GetVTableInfo | ( | ValueObject & | in_value, |
| bool | check_type ) |
Definition at line 185 of file ItaniumABIRuntime.cpp.
References lldb_private::Address::CalculateSymbolContextSymbol(), lldb_private::eAddressTypeLoad, error(), lldb_private::Process::FixDataAddress(), lldb_private::ValueObject::GetAddressOf(), lldb_private::ValueObject::GetCompilerType(), lldb_private::Mangled::GetDemangledName(), lldb_private::ValueObject::GetExecutionContextRef(), lldb_private::Symbol::GetMangled(), lldb_private::ValueObject::GetPointerValue(), lldb_private::ExecutionContext::GetProcessPtr(), lldb_private::ConstString::GetStringRef(), lldb_private::Process::GetTarget(), lldb_private::CompilerType::IsPointerOrReferenceType(), LLDB_INVALID_ADDRESS, m_mutex, m_vtable_info_map, lldb_private::Process::ReadPointerFromMemory(), lldb_private::Target::ResolveLoadAddress(), TypeHasVTable(), and vtable_demangled_prefix.
Referenced by GetDynamicTypeAndAddress().
|
private |
Definition at line 448 of file ItaniumABIRuntime.cpp.
References m_dynamic_type_map, and m_mutex.
Referenced by GetTypeInfo().
|
private |
Definition at line 150 of file ItaniumABIRuntime.cpp.
References lldb_private::ConstString::AsCString(), lldb_private::CompilerType::GetPointeeType(), lldb_private::CompilerType::GetTypeClass(), lldb_private::CompilerType::GetTypeName(), lldb_private::CompilerType::IsPointerOrReferenceType(), and lldb_private::CompilerType::IsPolymorphicClass().
Referenced by GetVTableInfo().
|
private |
Definition at line 55 of file ItaniumABIRuntime.h.
Referenced by GetDynamicTypeInfo(), and SetDynamicTypeInfo().
|
private |
Definition at line 57 of file ItaniumABIRuntime.h.
Referenced by GetDynamicTypeInfo(), GetVTableInfo(), and SetDynamicTypeInfo().
|
private |
Definition at line 59 of file ItaniumABIRuntime.h.
Referenced by GetDynamicTypeAndAddress(), GetExceptionObjectForThread(), GetTypeInfo(), and ItaniumABIRuntime().
|
private |
Definition at line 56 of file ItaniumABIRuntime.h.
Referenced by GetVTableInfo().