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/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/DeclCXX.h"
#include "clang/AST/DeclObjC.h"
#include "clang/AST/DeclTemplate.h"
#include "clang/AST/Type.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 void | ForcefullyCompleteType (CompilerType type) |
static void | PrepareContextToReceiveMembers (TypeSystemClang &ast, ClangASTImporter &ast_importer, clang::DeclContext *decl_ctx, DWARFDIE die, const char *type_name_cstr) |
This function serves a similar purpose as RequireCompleteType above, but it avoids completing the type if it is not immediately necessary. | |
static std::string | GetUnitName (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 57 of file DWARFASTParserClang.cpp.
|
static |
Definition at line 864 of file DWARFASTParserClang.cpp.
References ParsedDWARFTypeAttributes::calling_convention, lldb_private::GetLog(), and LLDB_LOG.
Referenced by DWARFASTParserClang::ParseSubroutine().
|
static |
Definition at line 68 of file DWARFASTParserClang.cpp.
Referenced by DWARFASTParserClang::ParseChildParameters(), DWARFASTParserClang::ParseStructureLikeDIE(), and DWARFASTParserClang::ParseSubroutine().
Definition at line 3391 of file DWARFASTParserClang.cpp.
References DWARFDIE::children().
Referenced by FindFirstChildWithAbstractOrigin().
|
static |
Definition at line 3400 of file DWARFASTParserClang.cpp.
References FindAnyChildWithAbstractOrigin(), DWARFDIE::GetParent(), and IsSubroutine().
Referenced by DWARFASTParserClang::GetDeclContextForBlock().
|
static |
Definition at line 219 of file DWARFASTParserClang.cpp.
References lldb_private::TypeSystemClang::CompleteTagDeclarationDefinition(), lldb_private::CompilerType::TypeSystemSPWrapper::dyn_cast_or_null(), lldb_private::ClangUtil::GetAsTagDecl(), lldb_private::CompilerType::GetTypeSystem(), lldbassert, lldb_private::TypeSystemClang::SetDeclIsForcefullyCompleted(), and lldb_private::TypeSystemClang::StartTagDeclarationDefinition().
Referenced by PrepareContextToReceiveMembers().
|
static |
Definition at line 119 of file DWARFASTParserClang.cpp.
References GetContainingClangModuleDIE(), DWARFBaseDIE::GetDWARF(), SymbolFileDWARF::GetExternalModule(), DWARFDIE::GetName(), and DWARFBaseDIE::IsValid().
Referenced by DWARFASTParserClang::ParseTypeFromClangModule().
Definition at line 100 of file DWARFASTParserClang.cpp.
References DWARFDIE::GetParent(), DWARFBaseDIE::IsValid(), and DWARFBaseDIE::Tag().
Referenced by GetContainingClangModule().
Definition at line 3376 of file DWARFASTParserClang.cpp.
References DWARFDIE::GetParent(), and IsSubroutine().
Referenced by DWARFASTParserClang::GetDeclContextForBlock().
|
static |
Definition at line 405 of file DWARFASTParserClang.cpp.
References DWARFBaseDIE::GetCU().
Referenced by DWARFASTParserClang::ParseSingleMember().
|
static |
Detect a forward declaration that is nested in a DW_TAG_module.
Definition at line 88 of file DWARFASTParserClang.cpp.
References DWARFBaseDIE::GetAttributeValueAsUnsigned(), and DWARFDIE::GetParent().
Referenced by DWARFASTParserClang::ParseSubroutine().
|
static |
Definition at line 3366 of file DWARFASTParserClang.cpp.
References DWARFBaseDIE::Tag().
Referenced by FindFirstChildWithAbstractOrigin(), and GetContainingFunctionWithAbstractOrigin().
|
static |
This function serves a similar purpose as RequireCompleteType above, but it avoids completing the type if it is not immediately necessary.
It only ensures we can complete the type later.
Definition at line 233 of file DWARFASTParserClang.cpp.
References lldb_private::ClangASTImporter::CanImport(), ForcefullyCompleteType(), DWARFBaseDIE::GetDWARF(), lldb_private::ModuleChild::GetModule(), lldb_private::SymbolFileCommon::GetObjectFile(), DWARFBaseDIE::GetOffset(), lldb_private::ClangUtil::GetQualType(), lldb_private::TypeSystemClang::GetTypeForDecl(), and lldb_private::ClangASTImporter::RequireCompleteType().
Referenced by DWARFASTParserClang::ParseStructureLikeDIE(), and DWARFASTParserClang::ParseTypeModifier().