Author: davide Date: Fri Nov 2 14:59:14 2018 New Revision: 346045 URL: http://llvm.org/viewvc/llvm-project?rev=346045&view=rev Log: Revert "[Symbol] Search symbols with name and type in a symbol file"
It broke MacOS buildbots. Modified: lldb/trunk/include/lldb/Symbol/SymbolFile.h lldb/trunk/include/lldb/Symbol/SymbolVendor.h lldb/trunk/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp lldb/trunk/source/Plugins/ObjectFile/JIT/ObjectFileJIT.cpp lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp lldb/trunk/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp lldb/trunk/source/Plugins/SymbolFile/PDB/SymbolFilePDB.cpp lldb/trunk/source/Plugins/SymbolFile/PDB/SymbolFilePDB.h lldb/trunk/source/Symbol/SymbolVendor.cpp lldb/trunk/unittests/SymbolFile/PDB/SymbolFilePDBTests.cpp Modified: lldb/trunk/include/lldb/Symbol/SymbolFile.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/SymbolFile.h?rev=346045&r1=346044&r2=346045&view=diff ============================================================================== --- lldb/trunk/include/lldb/Symbol/SymbolFile.h (original) +++ lldb/trunk/include/lldb/Symbol/SymbolFile.h Fri Nov 2 14:59:14 2018 @@ -214,8 +214,6 @@ public: return {}; } - virtual void AddSymbols(Symtab &symtab) {} - //------------------------------------------------------------------ /// Notify the SymbolFile that the file addresses in the Sections /// for this module have been changed. Modified: lldb/trunk/include/lldb/Symbol/SymbolVendor.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/SymbolVendor.h?rev=346045&r1=346044&r2=346045&view=diff ============================================================================== --- lldb/trunk/include/lldb/Symbol/SymbolVendor.h (original) +++ lldb/trunk/include/lldb/Symbol/SymbolVendor.h Fri Nov 2 14:59:14 2018 @@ -165,8 +165,6 @@ protected: // file) std::unique_ptr<SymbolFile> m_sym_file_ap; // A single symbol file. Subclasses // can add more of these if needed. - Symtab *m_symtab; // Save a symtab once to not pass it through `AddSymbols` of - // the symbol file each time when it is needed private: //------------------------------------------------------------------ Modified: lldb/trunk/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp?rev=346045&r1=346044&r2=346045&view=diff ============================================================================== --- lldb/trunk/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp (original) +++ lldb/trunk/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp Fri Nov 2 14:59:14 2018 @@ -2876,6 +2876,8 @@ Symtab *ObjectFileELF::GetSymtab() { // do the section lookup next time. if (m_symtab_ap == nullptr) m_symtab_ap.reset(new Symtab(this)); + + m_symtab_ap->CalculateSymbolSizes(); } return m_symtab_ap.get(); Modified: lldb/trunk/source/Plugins/ObjectFile/JIT/ObjectFileJIT.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ObjectFile/JIT/ObjectFileJIT.cpp?rev=346045&r1=346044&r2=346045&view=diff ============================================================================== --- lldb/trunk/source/Plugins/ObjectFile/JIT/ObjectFileJIT.cpp (original) +++ lldb/trunk/source/Plugins/ObjectFile/JIT/ObjectFileJIT.cpp Fri Nov 2 14:59:14 2018 @@ -124,6 +124,7 @@ Symtab *ObjectFileJIT::GetSymtab() { if (delegate_sp) delegate_sp->PopulateSymtab(this, *m_symtab_ap); // TODO: get symbols from delegate + m_symtab_ap->Finalize(); } } return m_symtab_ap.get(); Modified: lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp?rev=346045&r1=346044&r2=346045&view=diff ============================================================================== --- lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp (original) +++ lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp Fri Nov 2 14:59:14 2018 @@ -1315,6 +1315,7 @@ Symtab *ObjectFileMachO::GetSymtab() { std::lock_guard<std::recursive_mutex> symtab_guard( m_symtab_ap->GetMutex()); ParseSymtab(); + m_symtab_ap->Finalize(); } } return m_symtab_ap.get(); @@ -4806,6 +4807,16 @@ size_t ObjectFileMachO::ParseSymtab() { } } + // StreamFile s(stdout, false); + // s.Printf ("Symbol table before CalculateSymbolSizes():\n"); + // symtab->Dump(&s, NULL, eSortOrderNone); + // Set symbol byte sizes correctly since mach-o nlist entries don't have + // sizes + symtab->CalculateSymbolSizes(); + + // s.Printf ("Symbol table after CalculateSymbolSizes():\n"); + // symtab->Dump(&s, NULL, eSortOrderNone); + return symtab->GetNumSymbols(); } return 0; Modified: lldb/trunk/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp?rev=346045&r1=346044&r2=346045&view=diff ============================================================================== --- lldb/trunk/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp (original) +++ lldb/trunk/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp Fri Nov 2 14:59:14 2018 @@ -651,6 +651,7 @@ Symtab *ObjectFilePECOFF::GetSymtab() { symbols[i].SetDebug(true); } } + m_symtab_ap->CalculateSymbolSizes(); } } return m_symtab_ap.get(); Modified: lldb/trunk/source/Plugins/SymbolFile/PDB/SymbolFilePDB.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolFile/PDB/SymbolFilePDB.cpp?rev=346045&r1=346044&r2=346045&view=diff ============================================================================== --- lldb/trunk/source/Plugins/SymbolFile/PDB/SymbolFilePDB.cpp (original) +++ lldb/trunk/source/Plugins/SymbolFile/PDB/SymbolFilePDB.cpp Fri Nov 2 14:59:14 2018 @@ -1331,55 +1331,6 @@ void SymbolFilePDB::GetMangledNamesForFu const std::string &scope_qualified_name, std::vector<lldb_private::ConstString> &mangled_names) {} -void SymbolFilePDB::AddSymbols(lldb_private::Symtab &symtab) { - std::set<lldb::addr_t> sym_addresses; - for (size_t i = 0; i < symtab.GetNumSymbols(); i++) - sym_addresses.insert(symtab.SymbolAtIndex(i)->GetFileAddress()); - - auto results = m_global_scope_up->findAllChildren<PDBSymbolPublicSymbol>(); - if (!results) - return; - - auto section_list = m_obj_file->GetSectionList(); - if (!section_list) - return; - - while (auto pub_symbol = results->getNext()) { - auto section_idx = pub_symbol->getAddressSection() - 1; - if (section_idx >= section_list->GetSize()) - continue; - - auto section = section_list->GetSectionAtIndex(section_idx); - if (!section) - continue; - - auto offset = pub_symbol->getAddressOffset(); - - auto file_addr = section->GetFileAddress() + offset; - if (sym_addresses.find(file_addr) != sym_addresses.end()) - continue; - sym_addresses.insert(file_addr); - - auto size = pub_symbol->getLength(); - symtab.AddSymbol( - Symbol(pub_symbol->getSymIndexId(), // symID - pub_symbol->getName().c_str(), // name - true, // name_is_mangled - pub_symbol->isCode() ? eSymbolTypeCode : eSymbolTypeData, // type - true, // external - false, // is_debug - false, // is_trampoline - false, // is_artificial - section, // section_sp - offset, // value - size, // size - size != 0, // size_is_valid - false, // contains_linker_annotations - 0 // flags - )); - } -} - uint32_t SymbolFilePDB::FindTypes( const lldb_private::SymbolContext &sc, const lldb_private::ConstString &name, Modified: lldb/trunk/source/Plugins/SymbolFile/PDB/SymbolFilePDB.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolFile/PDB/SymbolFilePDB.h?rev=346045&r1=346044&r2=346045&view=diff ============================================================================== --- lldb/trunk/source/Plugins/SymbolFile/PDB/SymbolFilePDB.h (original) +++ lldb/trunk/source/Plugins/SymbolFile/PDB/SymbolFilePDB.h Fri Nov 2 14:59:14 2018 @@ -133,8 +133,6 @@ public: const std::string &scope_qualified_name, std::vector<lldb_private::ConstString> &mangled_names) override; - void AddSymbols(lldb_private::Symtab &symtab) override; - uint32_t FindTypes(const lldb_private::SymbolContext &sc, const lldb_private::ConstString &name, Modified: lldb/trunk/source/Symbol/SymbolVendor.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/SymbolVendor.cpp?rev=346045&r1=346044&r2=346045&view=diff ============================================================================== --- lldb/trunk/source/Symbol/SymbolVendor.cpp (original) +++ lldb/trunk/source/Symbol/SymbolVendor.cpp Fri Nov 2 14:59:14 2018 @@ -61,7 +61,7 @@ SymbolVendor *SymbolVendor::FindPlugin(c //---------------------------------------------------------------------- SymbolVendor::SymbolVendor(const lldb::ModuleSP &module_sp) : ModuleChild(module_sp), m_type_list(), m_compile_units(), - m_sym_file_ap(), m_symtab() {} + m_sym_file_ap() {} //---------------------------------------------------------------------- // Destructor @@ -438,26 +438,14 @@ FileSpec SymbolVendor::GetMainFileSpec() Symtab *SymbolVendor::GetSymtab() { ModuleSP module_sp(GetModule()); - if (!module_sp) - return nullptr; - - std::lock_guard<std::recursive_mutex> guard(module_sp->GetMutex()); - - if (m_symtab) - return m_symtab; - - ObjectFile *objfile = module_sp->GetObjectFile(); - if (!objfile) - return nullptr; - - m_symtab = objfile->GetSymtab(); - if (m_symtab && m_sym_file_ap) - m_sym_file_ap->AddSymbols(*m_symtab); - - m_symtab->CalculateSymbolSizes(); - m_symtab->Finalize(); - - return m_symtab; + if (module_sp) { + ObjectFile *objfile = module_sp->GetObjectFile(); + if (objfile) { + // Get symbol table from unified section list. + return objfile->GetSymtab(); + } + } + return nullptr; } void SymbolVendor::ClearSymtab() { Modified: lldb/trunk/unittests/SymbolFile/PDB/SymbolFilePDBTests.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/SymbolFile/PDB/SymbolFilePDBTests.cpp?rev=346045&r1=346044&r2=346045&view=diff ============================================================================== --- lldb/trunk/unittests/SymbolFile/PDB/SymbolFilePDBTests.cpp (original) +++ lldb/trunk/unittests/SymbolFile/PDB/SymbolFilePDBTests.cpp Fri Nov 2 14:59:14 2018 @@ -621,20 +621,3 @@ TEST_F(SymbolFilePDBTests, TestNullName) EXPECT_EQ(0u, num_results); EXPECT_EQ(0u, results.GetSize()); } - -TEST_F(SymbolFilePDBTests, TestFindSymbolsWithNameAndType) { - FileSpec fspec(m_pdb_test_exe.c_str(), false); - ArchSpec aspec("i686-pc-windows"); - lldb::ModuleSP module = std::make_shared<Module>(fspec, aspec); - - SymbolContextList sc_list; - EXPECT_EQ(1u, - module->FindSymbolsWithNameAndType(ConstString("?foo@@YAHH@Z"), - lldb::eSymbolTypeAny, sc_list)); - EXPECT_EQ(1u, sc_list.GetSize()); - - SymbolContext sc; - EXPECT_TRUE(sc_list.GetContextAtIndex(0, sc)); - EXPECT_STREQ("int foo(int)", - sc.GetFunctionName(Mangled::ePreferDemangled).AsCString()); -} _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits