diff options
Diffstat (limited to 'lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.h')
-rw-r--r-- | lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.h | 246 |
1 files changed, 114 insertions, 132 deletions
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.h b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.h index 0826423b035..3d6d08eef9e 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.h +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.h @@ -13,10 +13,10 @@ // C Includes // C++ Includes // Other libraries and framework includes +#include "clang/AST/CharUnits.h" #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/SmallPtrSet.h" #include "llvm/ADT/SmallVector.h" -#include "clang/AST/CharUnits.h" // Project includes #include "DWARFASTParser.h" @@ -29,149 +29,131 @@ class DWARFDebugInfoEntry; class DWARFDIECollection; -class DWARFASTParserClang : public DWARFASTParser -{ +class DWARFASTParserClang : public DWARFASTParser { public: - DWARFASTParserClang (lldb_private::ClangASTContext &ast); - - ~DWARFASTParserClang() override; + DWARFASTParserClang(lldb_private::ClangASTContext &ast); - // DWARFASTParser interface. - lldb::TypeSP - ParseTypeFromDWARF (const lldb_private::SymbolContext& sc, - const DWARFDIE &die, - lldb_private::Log *log, - bool *type_is_new_ptr) override; + ~DWARFASTParserClang() override; + // DWARFASTParser interface. + lldb::TypeSP ParseTypeFromDWARF(const lldb_private::SymbolContext &sc, + const DWARFDIE &die, lldb_private::Log *log, + bool *type_is_new_ptr) override; - lldb_private::Function * - ParseFunctionFromDWARF (const lldb_private::SymbolContext& sc, - const DWARFDIE &die) override; + lldb_private::Function * + ParseFunctionFromDWARF(const lldb_private::SymbolContext &sc, + const DWARFDIE &die) override; - bool - CompleteTypeFromDWARF (const DWARFDIE &die, - lldb_private::Type *type, - lldb_private::CompilerType &compiler_type) override; + bool + CompleteTypeFromDWARF(const DWARFDIE &die, lldb_private::Type *type, + lldb_private::CompilerType &compiler_type) override; - lldb_private::CompilerDecl - GetDeclForUIDFromDWARF (const DWARFDIE &die) override; + lldb_private::CompilerDecl + GetDeclForUIDFromDWARF(const DWARFDIE &die) override; - std::vector<DWARFDIE> - GetDIEForDeclContext (lldb_private::CompilerDeclContext decl_context) override; + std::vector<DWARFDIE> + GetDIEForDeclContext(lldb_private::CompilerDeclContext decl_context) override; - lldb_private::CompilerDeclContext - GetDeclContextForUIDFromDWARF (const DWARFDIE &die) override; + lldb_private::CompilerDeclContext + GetDeclContextForUIDFromDWARF(const DWARFDIE &die) override; - lldb_private::CompilerDeclContext - GetDeclContextContainingUIDFromDWARF (const DWARFDIE &die) override; + lldb_private::CompilerDeclContext + GetDeclContextContainingUIDFromDWARF(const DWARFDIE &die) override; - lldb_private::ClangASTImporter & - GetClangASTImporter(); + lldb_private::ClangASTImporter &GetClangASTImporter(); protected: - class DelayedAddObjCClassProperty; - typedef std::vector <DelayedAddObjCClassProperty> DelayedPropertyList; - - clang::BlockDecl * - ResolveBlockDIE (const DWARFDIE &die); - - clang::NamespaceDecl * - ResolveNamespaceDIE (const DWARFDIE &die); - - bool - ParseTemplateDIE (const DWARFDIE &die, - lldb_private::ClangASTContext::TemplateParameterInfos &template_param_infos); - bool - ParseTemplateParameterInfos (const DWARFDIE &parent_die, - lldb_private::ClangASTContext::TemplateParameterInfos &template_param_infos); - - bool - ParseChildMembers(const lldb_private::SymbolContext &sc, const DWARFDIE &die, - lldb_private::CompilerType &class_compiler_type, const lldb::LanguageType class_language, - std::vector<clang::CXXBaseSpecifier *> &base_classes, std::vector<int> &member_accessibilities, - DWARFDIECollection &member_function_dies, DelayedPropertyList &delayed_properties, - lldb::AccessType &default_accessibility, bool &is_a_class, - lldb_private::ClangASTImporter::LayoutInfo &layout_info); - - size_t - ParseChildParameters (const lldb_private::SymbolContext& sc, - clang::DeclContext *containing_decl_ctx, - const DWARFDIE &parent_die, - bool skip_artificial, - bool &is_static, - bool &is_variadic, - bool &has_template_params, - std::vector<lldb_private::CompilerType>& function_args, - std::vector<clang::ParmVarDecl*>& function_param_decls, - unsigned &type_quals); - - void - ParseChildArrayInfo (const lldb_private::SymbolContext& sc, - const DWARFDIE &parent_die, - int64_t& first_index, - std::vector<uint64_t>& element_orders, - uint32_t& byte_stride, - uint32_t& bit_stride); - - size_t - ParseChildEnumerators (const lldb_private::SymbolContext& sc, - lldb_private::CompilerType &compiler_type, - bool is_signed, - uint32_t enumerator_byte_size, - const DWARFDIE &parent_die); - - lldb_private::Type * - GetTypeForDIE (const DWARFDIE &die); - - clang::Decl * - GetClangDeclForDIE (const DWARFDIE &die); - - clang::DeclContext * - GetClangDeclContextForDIE (const DWARFDIE &die); - - clang::DeclContext * - GetClangDeclContextContainingDIE (const DWARFDIE &die, - DWARFDIE *decl_ctx_die); - - bool - CopyUniqueClassMethodTypes (const DWARFDIE &src_class_die, - const DWARFDIE &dst_class_die, - lldb_private::Type *class_type, - DWARFDIECollection &failures); - - clang::DeclContext * - GetCachedClangDeclContextForDIE (const DWARFDIE &die); - - void - LinkDeclContextToDIE (clang::DeclContext *decl_ctx, - const DWARFDIE &die); - - void - LinkDeclToDIE (clang::Decl *decl, const DWARFDIE &die); - - lldb::TypeSP - ParseTypeFromDWO (const DWARFDIE &die, lldb_private::Log *log); - - //---------------------------------------------------------------------- - // Return true if this type is a declaration to a type in an external - // module. - //---------------------------------------------------------------------- - lldb::ModuleSP - GetModuleForType (const DWARFDIE &die); - - typedef llvm::SmallPtrSet<const DWARFDebugInfoEntry *, 4> DIEPointerSet; - typedef llvm::DenseMap<const DWARFDebugInfoEntry *, clang::DeclContext *> DIEToDeclContextMap; - //typedef llvm::DenseMap<const clang::DeclContext *, DIEPointerSet> DeclContextToDIEMap; - typedef std::multimap<const clang::DeclContext *, const DWARFDIE> DeclContextToDIEMap; - typedef llvm::DenseMap<const DWARFDebugInfoEntry *, clang::Decl *> DIEToDeclMap; - typedef llvm::DenseMap<const clang::Decl *, DIEPointerSet> DeclToDIEMap; - - lldb_private::ClangASTContext &m_ast; - DIEToDeclMap m_die_to_decl; - DeclToDIEMap m_decl_to_die; - DIEToDeclContextMap m_die_to_decl_ctx; - DeclContextToDIEMap m_decl_ctx_to_die; - std::unique_ptr<lldb_private::ClangASTImporter> m_clang_ast_importer_ap; + class DelayedAddObjCClassProperty; + typedef std::vector<DelayedAddObjCClassProperty> DelayedPropertyList; + + clang::BlockDecl *ResolveBlockDIE(const DWARFDIE &die); + + clang::NamespaceDecl *ResolveNamespaceDIE(const DWARFDIE &die); + + bool ParseTemplateDIE(const DWARFDIE &die, + lldb_private::ClangASTContext::TemplateParameterInfos + &template_param_infos); + bool ParseTemplateParameterInfos( + const DWARFDIE &parent_die, + lldb_private::ClangASTContext::TemplateParameterInfos + &template_param_infos); + + bool + ParseChildMembers(const lldb_private::SymbolContext &sc, const DWARFDIE &die, + lldb_private::CompilerType &class_compiler_type, + const lldb::LanguageType class_language, + std::vector<clang::CXXBaseSpecifier *> &base_classes, + std::vector<int> &member_accessibilities, + DWARFDIECollection &member_function_dies, + DelayedPropertyList &delayed_properties, + lldb::AccessType &default_accessibility, bool &is_a_class, + lldb_private::ClangASTImporter::LayoutInfo &layout_info); + + size_t + ParseChildParameters(const lldb_private::SymbolContext &sc, + clang::DeclContext *containing_decl_ctx, + const DWARFDIE &parent_die, bool skip_artificial, + bool &is_static, bool &is_variadic, + bool &has_template_params, + std::vector<lldb_private::CompilerType> &function_args, + std::vector<clang::ParmVarDecl *> &function_param_decls, + unsigned &type_quals); + + void ParseChildArrayInfo(const lldb_private::SymbolContext &sc, + const DWARFDIE &parent_die, int64_t &first_index, + std::vector<uint64_t> &element_orders, + uint32_t &byte_stride, uint32_t &bit_stride); + + size_t ParseChildEnumerators(const lldb_private::SymbolContext &sc, + lldb_private::CompilerType &compiler_type, + bool is_signed, uint32_t enumerator_byte_size, + const DWARFDIE &parent_die); + + lldb_private::Type *GetTypeForDIE(const DWARFDIE &die); + + clang::Decl *GetClangDeclForDIE(const DWARFDIE &die); + + clang::DeclContext *GetClangDeclContextForDIE(const DWARFDIE &die); + + clang::DeclContext *GetClangDeclContextContainingDIE(const DWARFDIE &die, + DWARFDIE *decl_ctx_die); + + bool CopyUniqueClassMethodTypes(const DWARFDIE &src_class_die, + const DWARFDIE &dst_class_die, + lldb_private::Type *class_type, + DWARFDIECollection &failures); + + clang::DeclContext *GetCachedClangDeclContextForDIE(const DWARFDIE &die); + + void LinkDeclContextToDIE(clang::DeclContext *decl_ctx, const DWARFDIE &die); + + void LinkDeclToDIE(clang::Decl *decl, const DWARFDIE &die); + + lldb::TypeSP ParseTypeFromDWO(const DWARFDIE &die, lldb_private::Log *log); + + //---------------------------------------------------------------------- + // Return true if this type is a declaration to a type in an external + // module. + //---------------------------------------------------------------------- + lldb::ModuleSP GetModuleForType(const DWARFDIE &die); + + typedef llvm::SmallPtrSet<const DWARFDebugInfoEntry *, 4> DIEPointerSet; + typedef llvm::DenseMap<const DWARFDebugInfoEntry *, clang::DeclContext *> + DIEToDeclContextMap; + // typedef llvm::DenseMap<const clang::DeclContext *, DIEPointerSet> + // DeclContextToDIEMap; + typedef std::multimap<const clang::DeclContext *, const DWARFDIE> + DeclContextToDIEMap; + typedef llvm::DenseMap<const DWARFDebugInfoEntry *, clang::Decl *> + DIEToDeclMap; + typedef llvm::DenseMap<const clang::Decl *, DIEPointerSet> DeclToDIEMap; + + lldb_private::ClangASTContext &m_ast; + DIEToDeclMap m_die_to_decl; + DeclToDIEMap m_decl_to_die; + DIEToDeclContextMap m_die_to_decl_ctx; + DeclContextToDIEMap m_decl_ctx_to_die; + std::unique_ptr<lldb_private::ClangASTImporter> m_clang_ast_importer_ap; }; #endif // SymbolFileDWARF_DWARFASTParserClang_h_ |