LLDB mainline
|
#include <cstdlib>
#include "DWARFASTParser.h"
#include "DWARFASTParserClang.h"
#include "DWARFDebugInfo.h"
#include "DWARFDeclContext.h"
#include "DWARFDefines.h"
#include "SymbolFileDWARF.h"
#include "SymbolFileDWARFDebugMap.h"
#include "SymbolFileDWARFDwo.h"
#include "UniqueDWARFASTType.h"
#include "Plugins/ExpressionParser/Clang/ClangASTImporter.h"
#include "Plugins/ExpressionParser/Clang/ClangASTMetadata.h"
#include "Plugins/ExpressionParser/Clang/ClangUtil.h"
#include "Plugins/Language/ObjC/ObjCLanguage.h"
#include "lldb/Core/Module.h"
#include "lldb/Core/Value.h"
#include "lldb/Host/Host.h"
#include "lldb/Symbol/CompileUnit.h"
#include "lldb/Symbol/Function.h"
#include "lldb/Symbol/ObjectFile.h"
#include "lldb/Symbol/SymbolFile.h"
#include "lldb/Symbol/TypeList.h"
#include "lldb/Symbol/TypeMap.h"
#include "lldb/Symbol/VariableList.h"
#include "lldb/Target/Language.h"
#include "lldb/Utility/LLDBAssert.h"
#include "lldb/Utility/Log.h"
#include "lldb/Utility/StreamString.h"
#include "clang/AST/CXXInheritance.h"
#include "clang/AST/DeclBase.h"
#include "clang/AST/DeclCXX.h"
#include "clang/AST/DeclObjC.h"
#include "clang/AST/DeclTemplate.h"
#include "clang/AST/Type.h"
#include "clang/Basic/Specifiers.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/DebugInfo/DWARF/DWARFAddressRange.h"
#include "llvm/DebugInfo/DWARF/DWARFTypePrinter.h"
#include "llvm/Demangle/Demangle.h"
#include <map>
#include <memory>
#include <optional>
#include <vector>
Go to the source code of this file.
Classes | |
class | DWARFASTParserClang::DelayedAddObjCClassProperty |
Macros | |
#define | DEBUG_PRINTF(fmt, ...) |
Functions | |
static bool | DeclKindIsCXXClass (clang::Decl::Kind decl_kind) |
static bool | IsClangModuleFwdDecl (const DWARFDIE &Die) |
Detect a forward declaration that is nested in a DW_TAG_module. | |
static DWARFDIE | GetContainingClangModuleDIE (const DWARFDIE &die) |
static lldb::ModuleSP | GetContainingClangModule (const DWARFDIE &die) |
static bool | ShouldIgnoreArtificialField (llvm::StringRef FieldName) |
static bool | TagIsRecordType (dw_tag_t tag) |
Returns true for C++ constructs represented by clang::CXXRecordDecl. | |
static void | PrepareContextToReceiveMembers (TypeSystemClang &ast, ClangASTImporter &ast_importer, clang::DeclContext *decl_ctx, DWARFDIE die, const char *type_name_cstr) |
This function ensures we are able to add members (nested types, functions, etc.) to this type. | |
static std::string | GetUnitName (const DWARFDIE &die) |
static std::optional< uint32_t > | ExtractDataMemberLocation (DWARFDIE const &die, DWARFFormValue const &form_value, ModuleSP module_sp) |
static TypePayloadClang | GetPtrAuthMofidierPayload (const DWARFDIE &die) |
static clang::CallingConv | ConvertDWARFCallingConventionToClang (const ParsedDWARFTypeAttributes &attrs) |
static bool | IsSubroutine (const DWARFDIE &die) |
static DWARFDIE | GetContainingFunctionWithAbstractOrigin (const DWARFDIE &die) |
static DWARFDIE | FindAnyChildWithAbstractOrigin (const DWARFDIE &context) |
static DWARFDIE | FindFirstChildWithAbstractOrigin (const DWARFDIE &block, const DWARFDIE &function) |
#define DEBUG_PRINTF | ( | fmt, | |
... | |||
) |
Definition at line 63 of file DWARFASTParserClang.cpp.
|
static |
Definition at line 970 of file DWARFASTParserClang.cpp.
References ParsedDWARFTypeAttributes::calling_convention, lldb_private::GetLog(), and LLDB_LOG.
Referenced by DWARFASTParserClang::ParseSubroutine().
|
static |
Definition at line 77 of file DWARFASTParserClang.cpp.
Referenced by DWARFASTParserClang::ParseChildParameters(), DWARFASTParserClang::ParseStructureLikeDIE(), and DWARFASTParserClang::ParseSubroutine().
|
static |
Definition at line 534 of file DWARFASTParserClang.cpp.
References lldb_private::plugin::dwarf::DWARFFormValue::BlockData(), lldb::eRegisterKindDWARF, lldb_private::DWARFExpression::Evaluate(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetCU(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetData(), lldb_private::DataExtractor::GetDataStart(), lldb_private::GetLog(), LLDB_LOG_ERROR, and lldb_private::plugin::dwarf::DWARFFormValue::Unsigned().
Referenced by DWARFASTParserClang::MemberAttributes::MemberAttributes(), and DWARFASTParserClang::ParseInheritance().
Definition at line 3394 of file DWARFASTParserClang.cpp.
References lldb_private::plugin::dwarf::DWARFDIE::children().
Referenced by FindFirstChildWithAbstractOrigin().
|
static |
Definition at line 3403 of file DWARFASTParserClang.cpp.
References FindAnyChildWithAbstractOrigin(), lldb_private::plugin::dwarf::DWARFDIE::GetParent(), and IsSubroutine().
Referenced by DWARFASTParserClang::GetDeclContextForBlock().
|
static |
Definition at line 128 of file DWARFASTParserClang.cpp.
References GetContainingClangModuleDIE(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetDWARF(), lldb_private::plugin::dwarf::SymbolFileDWARF::GetExternalModule(), lldb_private::plugin::dwarf::DWARFDIE::GetName(), and lldb_private::plugin::dwarf::DWARFBaseDIE::IsValid().
Referenced by DWARFASTParserClang::ParseTypeFromClangModule().
Definition at line 109 of file DWARFASTParserClang.cpp.
References lldb_private::plugin::dwarf::DWARFDIE::GetParent(), lldb_private::plugin::dwarf::DWARFBaseDIE::IsValid(), and lldb_private::plugin::dwarf::DWARFBaseDIE::Tag().
Referenced by GetContainingClangModule().
Definition at line 3379 of file DWARFASTParserClang.cpp.
References lldb_private::plugin::dwarf::DWARFDIE::GetParent(), and IsSubroutine().
Referenced by DWARFASTParserClang::GetDeclContextForBlock().
|
static |
Definition at line 564 of file DWARFASTParserClang.cpp.
References lldb_private::plugin::dwarf::DWARFBaseDIE::GetAttributeValueAsUnsigned(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetDWARF(), lldb_private::ModuleChild::GetModule(), lldb_private::SymbolFileCommon::GetObjectFile(), and lldb_private::plugin::dwarf::DWARFBaseDIE::GetOffset().
Referenced by DWARFASTParserClang::ParseTypeModifier().
|
static |
Definition at line 427 of file DWARFASTParserClang.cpp.
References lldb_private::plugin::dwarf::DWARFBaseDIE::GetCU().
Referenced by DWARFASTParserClang::ParseSingleMember().
|
static |
Detect a forward declaration that is nested in a DW_TAG_module.
Definition at line 97 of file DWARFASTParserClang.cpp.
References lldb_private::plugin::dwarf::DWARFBaseDIE::GetAttributeValueAsUnsigned(), and lldb_private::plugin::dwarf::DWARFDIE::GetParent().
Referenced by DWARFASTParserClang::ParseCXXMethod().
|
static |
Definition at line 3369 of file DWARFASTParserClang.cpp.
References lldb_private::plugin::dwarf::DWARFBaseDIE::Tag().
Referenced by FindFirstChildWithAbstractOrigin(), and GetContainingFunctionWithAbstractOrigin().
|
static |
This function ensures we are able to add members (nested types, functions, etc.) to this type.
It does so by starting its definition even if one cannot be found in the debug info. This means the type may need to be "forcibly completed" later – see CompleteTypeFromDWARF).
Definition at line 246 of file DWARFASTParserClang.cpp.
References lldb_private::ClangASTImporter::CanImport(), lldb_private::TypeSystemClang::CompleteTagDeclarationDefinition(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetDWARF(), lldb_private::ModuleChild::GetModule(), lldb_private::SymbolFileCommon::GetObjectFile(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetOffset(), lldb_private::ClangUtil::GetQualType(), lldb_private::TypeSystemClang::GetTypeForDecl(), lldb_private::ClangASTImporter::RequireCompleteType(), lldb_private::TypeSystemClang::SetDeclIsForcefullyCompleted(), and lldb_private::TypeSystemClang::StartTagDeclarationDefinition().
Referenced by DWARFASTParserClang::ParseCXXMethod(), DWARFASTParserClang::ParseStructureLikeDIE(), and DWARFASTParserClang::ParseTypeModifier().
|
static |
Definition at line 144 of file DWARFASTParserClang.cpp.
Referenced by DWARFASTParserClang::ParseSingleMember().
|
static |
Returns true for C++ constructs represented by clang::CXXRecordDecl.
Definition at line 151 of file DWARFASTParserClang.cpp.
Referenced by DWARFASTParserClang::GetClangDeclForDIE().