diff options
Diffstat (limited to 'source/Plugins/SymbolFile/Symtab')
-rw-r--r-- | source/Plugins/SymbolFile/Symtab/SymbolFileSymtab.cpp | 83 | ||||
-rw-r--r-- | source/Plugins/SymbolFile/Symtab/SymbolFileSymtab.h | 129 |
2 files changed, 66 insertions, 146 deletions
diff --git a/source/Plugins/SymbolFile/Symtab/SymbolFileSymtab.cpp b/source/Plugins/SymbolFile/Symtab/SymbolFileSymtab.cpp index 09b9197..d3dd1ae 100644 --- a/source/Plugins/SymbolFile/Symtab/SymbolFileSymtab.cpp +++ b/source/Plugins/SymbolFile/Symtab/SymbolFileSymtab.cpp @@ -12,7 +12,6 @@ #include "lldb/Core/PluginManager.h" #include "lldb/Core/RegularExpression.h" #include "lldb/Core/Timer.h" -#include "lldb/Symbol/ClangExternalASTSourceCommon.h" #include "lldb/Symbol/CompileUnit.h" #include "lldb/Symbol/Function.h" #include "lldb/Symbol/ObjectFile.h" @@ -79,14 +78,6 @@ SymbolFileSymtab::~SymbolFileSymtab() { } -ClangASTContext & -SymbolFileSymtab::GetClangASTContext () -{ - ClangASTContext &ast = m_obj_file->GetModule()->GetClangASTContext(); - - return ast; -} - uint32_t SymbolFileSymtab::CalculateAbilities () { @@ -115,6 +106,7 @@ SymbolFileSymtab::CalculateAbilities () if (symtab->AppendSymbolIndexesWithType(eSymbolTypeCode, Symtab::eDebugNo, Symtab::eVisibilityAny, m_code_indexes)) { symtab->SortSymbolIndexesByValue(m_code_indexes, true); + abilities |= Functions; } if (symtab->AppendSymbolIndexesWithType(eSymbolTypeData, m_data_indexes)) @@ -161,7 +153,7 @@ SymbolFileSymtab::ParseCompileUnitAtIndex(uint32_t idx) { const Symbol *cu_symbol = m_obj_file->GetSymtab()->SymbolAtIndex(m_source_indexes[idx]); if (cu_symbol) - cu_sp.reset(new CompileUnit (m_obj_file->GetModule(), NULL, cu_symbol->GetName().AsCString(), 0, eLanguageTypeUnknown)); + cu_sp.reset(new CompileUnit (m_obj_file->GetModule(), NULL, cu_symbol->GetName().AsCString(), 0, eLanguageTypeUnknown, false)); } return cu_sp; } @@ -261,6 +253,12 @@ SymbolFileSymtab::ParseCompileUnitLineTable (const SymbolContext &sc) } bool +SymbolFileSymtab::ParseCompileUnitDebugMacros (const SymbolContext &sc) +{ + return false; +} + +bool SymbolFileSymtab::ParseCompileUnitSupportFiles (const SymbolContext& sc, FileSpecList &support_files) { return false; @@ -299,17 +297,11 @@ SymbolFileSymtab::ResolveTypeUID(lldb::user_id_t type_uid) } bool -SymbolFileSymtab::ResolveClangOpaqueTypeDefinition (lldb_private::ClangASTType& clang_opaque_type) +SymbolFileSymtab::CompleteType (lldb_private::CompilerType& compiler_type) { return false; } -ClangNamespaceDecl -SymbolFileSymtab::FindNamespace (const SymbolContext& sc, const ConstString &name, const ClangNamespaceDecl *namespace_decl) -{ - return ClangNamespaceDecl(); -} - uint32_t SymbolFileSymtab::ResolveSymbolContext (const Address& so_addr, uint32_t resolve_scope, SymbolContext& sc) { @@ -326,63 +318,6 @@ SymbolFileSymtab::ResolveSymbolContext (const Address& so_addr, uint32_t resolve return resolved_flags; } -uint32_t -SymbolFileSymtab::ResolveSymbolContext (const FileSpec& file_spec, uint32_t line, bool check_inlines, uint32_t resolve_scope, SymbolContextList& sc_list) -{ - return 0; -} - -uint32_t -SymbolFileSymtab::FindGlobalVariables(const ConstString &name, const ClangNamespaceDecl *namespace_decl, bool append, uint32_t max_matches, VariableList& variables) -{ - return 0; -} - -uint32_t -SymbolFileSymtab::FindGlobalVariables(const RegularExpression& regex, bool append, uint32_t max_matches, VariableList& variables) -{ - return 0; -} - -uint32_t -SymbolFileSymtab::FindFunctions(const ConstString &name, const ClangNamespaceDecl *namespace_decl, uint32_t name_type_mask, bool include_inlines, bool append, SymbolContextList& sc_list) -{ - Timer scoped_timer (__PRETTY_FUNCTION__, - "SymbolFileSymtab::FindFunctions (name = '%s')", - name.GetCString()); - // If we ever support finding STABS or COFF debug info symbols, - // we will need to add support here. We are not trying to find symbols - // here, just "lldb_private::Function" objects that come from complete - // debug information. Any symbol queries should go through the symbol - // table itself in the module's object file. - return 0; -} - -uint32_t -SymbolFileSymtab::FindFunctions(const RegularExpression& regex, bool include_inlines, bool append, SymbolContextList& sc_list) -{ - Timer scoped_timer (__PRETTY_FUNCTION__, - "SymbolFileSymtab::FindFunctions (regex = '%s')", - regex.GetText()); - // If we ever support finding STABS or COFF debug info symbols, - // we will need to add support here. We are not trying to find symbols - // here, just "lldb_private::Function" objects that come from complete - // debug information. Any symbol queries should go through the symbol - // table itself in the module's object file. - return 0; -} - -uint32_t -SymbolFileSymtab::FindTypes (const lldb_private::SymbolContext& sc, - const lldb_private::ConstString &name, - const ClangNamespaceDecl *namespace_decl, - bool append, - uint32_t max_matches, - lldb_private::TypeList& types) -{ - return 0; -} - //------------------------------------------------------------------ // PluginInterface protocol //------------------------------------------------------------------ diff --git a/source/Plugins/SymbolFile/Symtab/SymbolFileSymtab.h b/source/Plugins/SymbolFile/Symtab/SymbolFileSymtab.h index d606419..4648da4 100644 --- a/source/Plugins/SymbolFile/Symtab/SymbolFileSymtab.h +++ b/source/Plugins/SymbolFile/Symtab/SymbolFileSymtab.h @@ -10,14 +10,26 @@ #ifndef liblldb_SymbolFileSymtab_h_ #define liblldb_SymbolFileSymtab_h_ +// C Includes +// C++ Includes +#include <vector> + +// Other libraries and framework includes +// Project includes #include "lldb/Symbol/SymbolFile.h" #include "lldb/Symbol/Symtab.h" -#include <vector> class SymbolFileSymtab : public lldb_private::SymbolFile { public: //------------------------------------------------------------------ + // Constructors and Destructors + //------------------------------------------------------------------ + SymbolFileSymtab(lldb_private::ObjectFile* obj_file); + + ~SymbolFileSymtab() override; + + //------------------------------------------------------------------ // Static Functions //------------------------------------------------------------------ static void @@ -35,94 +47,71 @@ public: static lldb_private::SymbolFile* CreateInstance (lldb_private::ObjectFile* obj_file); - //------------------------------------------------------------------ - // Constructors and Destructors - //------------------------------------------------------------------ - SymbolFileSymtab(lldb_private::ObjectFile* obj_file); - - virtual - ~SymbolFileSymtab(); - - virtual uint32_t CalculateAbilities (); + uint32_t + CalculateAbilities() override; //------------------------------------------------------------------ // Compile Unit function calls //------------------------------------------------------------------ - virtual uint32_t - GetNumCompileUnits(); - - virtual lldb::CompUnitSP - ParseCompileUnitAtIndex(uint32_t index); - - virtual lldb::LanguageType - ParseCompileUnitLanguage (const lldb_private::SymbolContext& sc); - - virtual size_t - ParseCompileUnitFunctions (const lldb_private::SymbolContext& sc); - - virtual bool - ParseCompileUnitLineTable (const lldb_private::SymbolContext& sc); + uint32_t + GetNumCompileUnits() override; - virtual bool - ParseCompileUnitSupportFiles (const lldb_private::SymbolContext& sc, lldb_private::FileSpecList &support_files); - - virtual bool - ParseImportedModules (const lldb_private::SymbolContext &sc, std::vector<lldb_private::ConstString> &imported_modules); - - virtual size_t - ParseFunctionBlocks (const lldb_private::SymbolContext& sc); - - virtual size_t - ParseTypes (const lldb_private::SymbolContext& sc); + lldb::CompUnitSP + ParseCompileUnitAtIndex(uint32_t index) override; - virtual size_t - ParseVariablesForContext (const lldb_private::SymbolContext& sc); + lldb::LanguageType + ParseCompileUnitLanguage(const lldb_private::SymbolContext& sc) override; - virtual lldb_private::Type* - ResolveTypeUID(lldb::user_id_t type_uid); + size_t + ParseCompileUnitFunctions(const lldb_private::SymbolContext& sc) override; - virtual bool - ResolveClangOpaqueTypeDefinition (lldb_private::ClangASTType& clang_type); + bool + ParseCompileUnitLineTable(const lldb_private::SymbolContext& sc) override; - virtual uint32_t - ResolveSymbolContext (const lldb_private::Address& so_addr, uint32_t resolve_scope, lldb_private::SymbolContext& sc); + bool + ParseCompileUnitDebugMacros(const lldb_private::SymbolContext& sc) override; - virtual uint32_t - ResolveSymbolContext (const lldb_private::FileSpec& file_spec, uint32_t line, bool check_inlines, uint32_t resolve_scope, lldb_private::SymbolContextList& sc_list); + bool + ParseCompileUnitSupportFiles(const lldb_private::SymbolContext& sc, + lldb_private::FileSpecList &support_files) override; + + bool + ParseImportedModules(const lldb_private::SymbolContext &sc, + std::vector<lldb_private::ConstString> &imported_modules) override; - virtual uint32_t - FindGlobalVariables(const lldb_private::ConstString &name, const lldb_private::ClangNamespaceDecl *namespace_decl, bool append, uint32_t max_matches, lldb_private::VariableList& variables); + size_t + ParseFunctionBlocks(const lldb_private::SymbolContext& sc) override; - virtual uint32_t - FindGlobalVariables(const lldb_private::RegularExpression& regex, bool append, uint32_t max_matches, lldb_private::VariableList& variables); + size_t + ParseTypes(const lldb_private::SymbolContext& sc) override; - virtual uint32_t - FindFunctions(const lldb_private::ConstString &name, const lldb_private::ClangNamespaceDecl *namespace_decl, uint32_t name_type_mask, bool include_inlines, bool append, lldb_private::SymbolContextList& sc_list); + size_t + ParseVariablesForContext(const lldb_private::SymbolContext& sc) override; - virtual uint32_t - FindFunctions(const lldb_private::RegularExpression& regex, bool include_inlines, bool append, lldb_private::SymbolContextList& sc_list); + lldb_private::Type* + ResolveTypeUID(lldb::user_id_t type_uid) override; - virtual uint32_t - FindTypes (const lldb_private::SymbolContext& sc,const lldb_private::ConstString &name, const lldb_private::ClangNamespaceDecl *namespace_decl, bool append, uint32_t max_matches, lldb_private::TypeList& types); + bool + CompleteType(lldb_private::CompilerType& compiler_type) override; - virtual size_t - GetTypes (lldb_private::SymbolContextScope *sc_scope, - uint32_t type_mask, - lldb_private::TypeList &type_list); + uint32_t + ResolveSymbolContext(const lldb_private::Address& so_addr, + uint32_t resolve_scope, + lldb_private::SymbolContext& sc) override; - virtual lldb_private::ClangNamespaceDecl - FindNamespace (const lldb_private::SymbolContext& sc, - const lldb_private::ConstString &name, - const lldb_private::ClangNamespaceDecl *parent_namespace_decl); + size_t + GetTypes(lldb_private::SymbolContextScope *sc_scope, + uint32_t type_mask, + lldb_private::TypeList &type_list) override; //------------------------------------------------------------------ // PluginInterface protocol //------------------------------------------------------------------ - virtual lldb_private::ConstString - GetPluginName(); + lldb_private::ConstString + GetPluginName() override; - virtual uint32_t - GetPluginVersion(); + uint32_t + GetPluginVersion() override; protected: typedef std::map<lldb_private::ConstString, lldb::TypeSP> TypeMap; @@ -133,13 +122,9 @@ protected: lldb_private::Symtab::IndexCollection m_data_indexes; lldb_private::Symtab::NameToIndexMap m_objc_class_name_to_index; TypeMap m_objc_class_types; - - lldb_private::ClangASTContext & - GetClangASTContext (); private: DISALLOW_COPY_AND_ASSIGN (SymbolFileSymtab); }; - -#endif // liblldb_SymbolFileSymtab_h_ +#endif // liblldb_SymbolFileSymtab_h_ |