diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2017-01-02 19:26:05 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2017-01-02 19:26:05 +0000 |
commit | 14f1b3e8826ce43b978db93a62d1166055db5394 (patch) | |
tree | 0a00ad8d3498783fe0193f3b656bca17c4c8697d /source/Symbol/SymbolFile.cpp | |
parent | 4ee8c119c71a06dcad1e0fecc8c675e480e59337 (diff) | |
download | src-14f1b3e8826ce43b978db93a62d1166055db5394.tar.gz src-14f1b3e8826ce43b978db93a62d1166055db5394.zip |
Vendor import of lldb trunk r290819:vendor/lldb/lldb-trunk-r290819
Notes
Notes:
svn path=/vendor/lldb/dist/; revision=311128
svn path=/vendor/lldb/lldb-trunk-r290819/; revision=311129; tag=vendor/lldb/lldb-trunk-r290819
Diffstat (limited to 'source/Symbol/SymbolFile.cpp')
-rw-r--r-- | source/Symbol/SymbolFile.cpp | 218 |
1 files changed, 106 insertions, 112 deletions
diff --git a/source/Symbol/SymbolFile.cpp b/source/Symbol/SymbolFile.cpp index 808dfd3d06d6..8d8b606b5729 100644 --- a/source/Symbol/SymbolFile.cpp +++ b/source/Symbol/SymbolFile.cpp @@ -9,7 +9,6 @@ #include "lldb/Symbol/SymbolFile.h" -#include "lldb/lldb-private.h" #include "lldb/Core/Log.h" #include "lldb/Core/Module.h" #include "lldb/Core/PluginManager.h" @@ -18,141 +17,136 @@ #include "lldb/Symbol/TypeMap.h" #include "lldb/Symbol/TypeSystem.h" #include "lldb/Symbol/VariableList.h" +#include "lldb/lldb-private.h" using namespace lldb_private; -SymbolFile* -SymbolFile::FindPlugin (ObjectFile* obj_file) -{ - std::unique_ptr<SymbolFile> best_symfile_ap; - if (obj_file != nullptr) - { - - // We need to test the abilities of this section list. So create what it would - // be with this new obj_file. - lldb::ModuleSP module_sp(obj_file->GetModule()); - if (module_sp) - { - // Default to the main module section list. - ObjectFile *module_obj_file = module_sp->GetObjectFile(); - if (module_obj_file != obj_file) - { - // Make sure the main object file's sections are created - module_obj_file->GetSectionList(); - obj_file->CreateSections (*module_sp->GetUnifiedSectionList()); - } - } +SymbolFile *SymbolFile::FindPlugin(ObjectFile *obj_file) { + std::unique_ptr<SymbolFile> best_symfile_ap; + if (obj_file != nullptr) { + + // We need to test the abilities of this section list. So create what it + // would + // be with this new obj_file. + lldb::ModuleSP module_sp(obj_file->GetModule()); + if (module_sp) { + // Default to the main module section list. + ObjectFile *module_obj_file = module_sp->GetObjectFile(); + if (module_obj_file != obj_file) { + // Make sure the main object file's sections are created + module_obj_file->GetSectionList(); + obj_file->CreateSections(*module_sp->GetUnifiedSectionList()); + } + } - // TODO: Load any plug-ins in the appropriate plug-in search paths and - // iterate over all of them to find the best one for the job. - - uint32_t best_symfile_abilities = 0; - - SymbolFileCreateInstance create_callback; - for (uint32_t idx = 0; (create_callback = PluginManager::GetSymbolFileCreateCallbackAtIndex(idx)) != nullptr; ++idx) - { - std::unique_ptr<SymbolFile> curr_symfile_ap(create_callback(obj_file)); - - if (curr_symfile_ap.get()) - { - const uint32_t sym_file_abilities = curr_symfile_ap->GetAbilities(); - if (sym_file_abilities > best_symfile_abilities) - { - best_symfile_abilities = sym_file_abilities; - best_symfile_ap.reset (curr_symfile_ap.release()); - // If any symbol file parser has all of the abilities, then - // we should just stop looking. - if ((kAllAbilities & sym_file_abilities) == kAllAbilities) - break; - } - } - } - if (best_symfile_ap.get()) - { - // Let the winning symbol file parser initialize itself more - // completely now that it has been chosen - best_symfile_ap->InitializeObject(); + // TODO: Load any plug-ins in the appropriate plug-in search paths and + // iterate over all of them to find the best one for the job. + + uint32_t best_symfile_abilities = 0; + + SymbolFileCreateInstance create_callback; + for (uint32_t idx = 0; + (create_callback = PluginManager::GetSymbolFileCreateCallbackAtIndex( + idx)) != nullptr; + ++idx) { + std::unique_ptr<SymbolFile> curr_symfile_ap(create_callback(obj_file)); + + if (curr_symfile_ap.get()) { + const uint32_t sym_file_abilities = curr_symfile_ap->GetAbilities(); + if (sym_file_abilities > best_symfile_abilities) { + best_symfile_abilities = sym_file_abilities; + best_symfile_ap.reset(curr_symfile_ap.release()); + // If any symbol file parser has all of the abilities, then + // we should just stop looking. + if ((kAllAbilities & sym_file_abilities) == kAllAbilities) + break; } + } } - return best_symfile_ap.release(); + if (best_symfile_ap.get()) { + // Let the winning symbol file parser initialize itself more + // completely now that it has been chosen + best_symfile_ap->InitializeObject(); + } + } + return best_symfile_ap.release(); } -TypeList * -SymbolFile::GetTypeList () -{ - if (m_obj_file) - return m_obj_file->GetModule()->GetTypeList(); - return nullptr; +TypeList *SymbolFile::GetTypeList() { + if (m_obj_file) + return m_obj_file->GetModule()->GetTypeList(); + return nullptr; } -TypeSystem * -SymbolFile::GetTypeSystemForLanguage (lldb::LanguageType language) -{ - TypeSystem *type_system = m_obj_file->GetModule()->GetTypeSystemForLanguage(language); - if (type_system) - type_system->SetSymbolFile(this); - return type_system; +TypeSystem *SymbolFile::GetTypeSystemForLanguage(lldb::LanguageType language) { + TypeSystem *type_system = + m_obj_file->GetModule()->GetTypeSystemForLanguage(language); + if (type_system) + type_system->SetSymbolFile(this); + return type_system; } -uint32_t -SymbolFile::ResolveSymbolContext (const FileSpec& file_spec, uint32_t line, bool check_inlines, uint32_t resolve_scope, SymbolContextList& sc_list) -{ - return 0; +uint32_t SymbolFile::ResolveSymbolContext(const FileSpec &file_spec, + uint32_t line, bool check_inlines, + uint32_t resolve_scope, + SymbolContextList &sc_list) { + return 0; } - -uint32_t -SymbolFile::FindGlobalVariables (const ConstString &name, const CompilerDeclContext *parent_decl_ctx, bool append, uint32_t max_matches, VariableList& variables) -{ - if (!append) - variables.Clear(); - return 0; +uint32_t SymbolFile::FindGlobalVariables( + const ConstString &name, const CompilerDeclContext *parent_decl_ctx, + bool append, uint32_t max_matches, VariableList &variables) { + if (!append) + variables.Clear(); + return 0; } - -uint32_t -SymbolFile::FindGlobalVariables (const RegularExpression& regex, bool append, uint32_t max_matches, VariableList& variables) -{ - if (!append) - variables.Clear(); - return 0; +uint32_t SymbolFile::FindGlobalVariables(const RegularExpression ®ex, + bool append, uint32_t max_matches, + VariableList &variables) { + if (!append) + variables.Clear(); + return 0; } -uint32_t -SymbolFile::FindFunctions (const ConstString &name, const CompilerDeclContext *parent_decl_ctx, uint32_t name_type_mask, bool include_inlines, bool append, SymbolContextList& sc_list) -{ - if (!append) - sc_list.Clear(); - return 0; +uint32_t SymbolFile::FindFunctions(const ConstString &name, + const CompilerDeclContext *parent_decl_ctx, + uint32_t name_type_mask, + bool include_inlines, bool append, + SymbolContextList &sc_list) { + if (!append) + sc_list.Clear(); + return 0; } -uint32_t -SymbolFile::FindFunctions (const RegularExpression& regex, bool include_inlines, bool append, SymbolContextList& sc_list) -{ - if (!append) - sc_list.Clear(); - return 0; +uint32_t SymbolFile::FindFunctions(const RegularExpression ®ex, + bool include_inlines, bool append, + SymbolContextList &sc_list) { + if (!append) + sc_list.Clear(); + return 0; } -void -SymbolFile::GetMangledNamesForFunction(const std::string &scope_qualified_name, std::vector<ConstString> &mangled_names) -{ - return; +void SymbolFile::GetMangledNamesForFunction( + const std::string &scope_qualified_name, + std::vector<ConstString> &mangled_names) { + return; } -uint32_t -SymbolFile::FindTypes (const SymbolContext& sc, const ConstString &name, const CompilerDeclContext *parent_decl_ctx, bool append, uint32_t max_matches, llvm::DenseSet<lldb_private::SymbolFile *> &searched_symbol_files, TypeMap& types) -{ - if (!append) - types.Clear(); - return 0; +uint32_t SymbolFile::FindTypes( + const SymbolContext &sc, const ConstString &name, + const CompilerDeclContext *parent_decl_ctx, bool append, + uint32_t max_matches, + llvm::DenseSet<lldb_private::SymbolFile *> &searched_symbol_files, + TypeMap &types) { + if (!append) + types.Clear(); + return 0; } - -size_t -SymbolFile::FindTypes (const std::vector<CompilerContext> &context, bool append, TypeMap& types) -{ - if (!append) - types.Clear(); - return 0; +size_t SymbolFile::FindTypes(const std::vector<CompilerContext> &context, + bool append, TypeMap &types) { + if (!append) + types.Clear(); + return 0; } |