LLDB
mainline
|
#include <cstdlib>
#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 "llvm/Demangle/Demangle.h"
#include "clang/AST/CXXInheritance.h"
#include "clang/AST/DeclCXX.h"
#include "clang/AST/DeclObjC.h"
#include "clang/AST/DeclTemplate.h"
#include <map>
#include <memory>
#include <vector>
Go to the source code of this file.
Classes | |
class | DWARFASTParserClang::DelayedAddObjCClassProperty |
Macros | |
#define | DEBUG_PRINTF(fmt, ...) |
Functions | |
static AccessType | DW_ACCESS_to_AccessType (uint32_t dwarf_accessibility) |
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. More... | |
static DWARFDIE | GetContainingClangModuleDIE (const DWARFDIE &die) |
static lldb::ModuleSP | GetContainingClangModule (const DWARFDIE &die) |
static void | ForcefullyCompleteType (CompilerType type) |
static void | RequireCompleteType (CompilerType type) |
Complete a type from debug info, or mark it as forcefully completed if there is no definition of the type in the current Module. More... | |
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. More... | |
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 55 of file DWARFASTParserClang.cpp.
|
static |
Definition at line 879 of file DWARFASTParserClang.cpp.
References ParsedDWARFTypeAttributes::calling_convention, lldb_private::GetLog(), and LLDB_LOG.
Referenced by DWARFASTParserClang::ParseSubroutine().
|
static |
Definition at line 80 of file DWARFASTParserClang.cpp.
Referenced by DWARFASTParserClang::ParseChildParameters(), DWARFASTParserClang::ParseStructureLikeDIE(), and DWARFASTParserClang::ParseSubroutine().
|
static |
Definition at line 66 of file DWARFASTParserClang.cpp.
References lldb::eAccessNone, lldb::eAccessPrivate, lldb::eAccessProtected, and lldb::eAccessPublic.
Referenced by ParsedDWARFTypeAttributes::ParsedDWARFTypeAttributes(), and DWARFASTParserClang::ParseInheritance().
Definition at line 3328 of file DWARFASTParserClang.cpp.
References DWARFDIE::children().
Referenced by FindFirstChildWithAbstractOrigin().
|
static |
Definition at line 3337 of file DWARFASTParserClang.cpp.
References FindAnyChildWithAbstractOrigin(), DWARFDIE::GetParent(), and IsSubroutine().
Referenced by DWARFASTParserClang::GetDeclContextForBlock().
|
static |
Definition at line 234 of file DWARFASTParserClang.cpp.
References lldb_private::CompilerType::GetTypeSystem(), and lldbassert.
Referenced by PrepareContextToReceiveMembers(), and RequireCompleteType().
|
static |
Definition at line 131 of file DWARFASTParserClang.cpp.
References GetContainingClangModuleDIE(), DWARFBaseDIE::GetDWARF(), SymbolFileDWARF::GetExternalModule(), DWARFDIE::GetName(), and DWARFBaseDIE::IsValid().
Referenced by DWARFASTParserClang::ParseTypeFromClangModule().
Definition at line 112 of file DWARFASTParserClang.cpp.
References DWARFDIE::GetParent(), DWARFBaseDIE::IsValid(), and DWARFBaseDIE::Tag().
Referenced by GetContainingClangModule().
Definition at line 3313 of file DWARFASTParserClang.cpp.
References DWARFDIE::GetParent(), and IsSubroutine().
Referenced by DWARFASTParserClang::GetDeclContextForBlock().
|
static |
Definition at line 432 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 100 of file DWARFASTParserClang.cpp.
References DWARFBaseDIE::GetAttributeValueAsUnsigned(), and DWARFDIE::GetParent().
Referenced by DWARFASTParserClang::ParseSubroutine().
|
static |
Definition at line 3303 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 268 of file DWARFASTParserClang.cpp.
References lldb_private::ClangASTImporter::CanImport(), ForcefullyCompleteType(), DWARFBaseDIE::GetDWARF(), lldb_private::ModuleChild::GetModule(), lldb_private::SymbolFileCommon::GetObjectFile(), DWARFBaseDIE::GetOffset(), lldb_private::TypeSystemClang::GetTypeForDecl(), and lldb_private::ClangASTImporter::RequireCompleteType().
Referenced by DWARFASTParserClang::ParseStructureLikeDIE(), and DWARFASTParserClang::ParseTypeModifier().
|
static |
Complete a type from debug info, or mark it as forcefully completed if there is no definition of the type in the current Module.
Call this function in contexts where the usual C++ rules require a type to be complete (base class, member, etc.).
Definition at line 247 of file DWARFASTParserClang.cpp.
References ForcefullyCompleteType(), and lldb_private::CompilerType::GetCompleteType().
Referenced by lldb_private::ClangASTImporter::CompleteAndFetchChildren(), lldb_private::ClangASTImporter::CompleteObjCInterfaceDecl(), DWARFASTParserClang::CompleteRecordType(), DWARFASTParserClang::ParseArrayType(), DWARFASTParserClang::ParseSingleMember(), and lldb_private::ClangASTImporter::RequireCompleteType().