Author: labath Date: Fri Aug 2 01:16:35 2019 New Revision: 367664 URL: http://llvm.org/viewvc/llvm-project?rev=367664&view=rev Log: SymbolVendor: Introduce Module::GetSymbolFile
Summary: This is the next step in avoiding funneling all SymbolFile calls through the SymbolVendor. Right now, it is just a convenience function, but it allows us to update all calls to SymbolVendor functions to access the SymbolFile directly. Once all call sites have been updated, we can remove the GetSymbolVendor member function. This patch just updates the calls to GetSymbolVendor, which were calling it just so they could fetch the underlying symbol file. Other calls will be done in follow-ups. Reviewers: JDevlieghere, clayborg, jingham Subscribers: lldb-commits Differential Revision: https://reviews.llvm.org/D65435 Modified: lldb/trunk/include/lldb/Core/Module.h lldb/trunk/source/Commands/CommandObjectTarget.cpp lldb/trunk/source/Core/Module.cpp lldb/trunk/source/Expression/IRExecutionUnit.cpp lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp lldb/trunk/source/Symbol/Block.cpp lldb/trunk/source/Symbol/Function.cpp lldb/trunk/source/Symbol/UnwindTable.cpp Modified: lldb/trunk/include/lldb/Core/Module.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/Module.h?rev=367664&r1=367663&r2=367664&view=diff ============================================================================== --- lldb/trunk/include/lldb/Core/Module.h (original) +++ lldb/trunk/include/lldb/Core/Module.h Fri Aug 2 01:16:35 2019 @@ -653,6 +653,9 @@ public: GetSymbolVendor(bool can_create = true, lldb_private::Stream *feedback_strm = nullptr); + SymbolFile *GetSymbolFile(bool can_create = true, + Stream *feedback_strm = nullptr); + /// Get a reference to the UUID value contained in this object. /// /// If the executable image file doesn't not have a UUID value built into Modified: lldb/trunk/source/Commands/CommandObjectTarget.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectTarget.cpp?rev=367664&r1=367663&r2=367664&view=diff ============================================================================== --- lldb/trunk/source/Commands/CommandObjectTarget.cpp (original) +++ lldb/trunk/source/Commands/CommandObjectTarget.cpp Fri Aug 2 01:16:35 2019 @@ -2259,8 +2259,8 @@ protected: if (m_interpreter.WasInterrupted()) break; Module *m = target->GetImages().GetModulePointerAtIndex(image_idx); - SymbolFile *sf = m->GetSymbolVendor()->GetSymbolFile(); - sf->DumpClangAST(result.GetOutputStream()); + if (SymbolFile *sf = m->GetSymbolFile()) + sf->DumpClangAST(result.GetOutputStream()); } result.SetStatus(eReturnStatusSuccessFinishResult); return true; @@ -2285,8 +2285,8 @@ protected: if (m_interpreter.WasInterrupted()) break; Module *m = module_list.GetModulePointerAtIndex(i); - SymbolFile *sf = m->GetSymbolVendor()->GetSymbolFile(); - sf->DumpClangAST(result.GetOutputStream()); + if (SymbolFile *sf = m->GetSymbolFile()) + sf->DumpClangAST(result.GetOutputStream()); } } result.SetStatus(eReturnStatusSuccessFinishResult); @@ -3272,9 +3272,9 @@ protected: case 's': case 'S': { - const SymbolVendor *symbol_vendor = module->GetSymbolVendor(); - if (symbol_vendor) { - const FileSpec symfile_spec = symbol_vendor->GetMainFileSpec(); + if (const SymbolFile *symbol_file = module->GetSymbolFile()) { + const FileSpec symfile_spec = + symbol_file->GetObjectFile()->GetFileSpec(); if (format_char == 'S') { // Dump symbol file only if different from module file if (!symfile_spec || symfile_spec == module->GetFileSpec()) { @@ -4207,48 +4207,44 @@ protected: // decides to create it! module_sp->SetSymbolFileFileSpec(symbol_fspec); - SymbolVendor *symbol_vendor = - module_sp->GetSymbolVendor(true, &result.GetErrorStream()); - if (symbol_vendor) { - SymbolFile *symbol_file = symbol_vendor->GetSymbolFile(); - - if (symbol_file) { - ObjectFile *object_file = symbol_file->GetObjectFile(); - - if (object_file && object_file->GetFileSpec() == symbol_fspec) { - // Provide feedback that the symfile has been successfully added. - const FileSpec &module_fs = module_sp->GetFileSpec(); - result.AppendMessageWithFormat( - "symbol file '%s' has been added to '%s'\n", symfile_path, - module_fs.GetPath().c_str()); - - // Let clients know something changed in the module if it is - // currently loaded - ModuleList module_list; - module_list.Append(module_sp); - target->SymbolsDidLoad(module_list); - - // Make sure we load any scripting resources that may be embedded - // in the debug info files in case the platform supports that. - Status error; - StreamString feedback_stream; - module_sp->LoadScriptingResourceInTarget(target, error, - &feedback_stream); - if (error.Fail() && error.AsCString()) - result.AppendWarningWithFormat( - "unable to load scripting data for module %s - error " - "reported was %s", - module_sp->GetFileSpec() - .GetFileNameStrippingExtension() - .GetCString(), - error.AsCString()); - else if (feedback_stream.GetSize()) - result.AppendWarningWithFormat("%s", feedback_stream.GetData()); + SymbolFile *symbol_file = + module_sp->GetSymbolFile(true, &result.GetErrorStream()); + if (symbol_file) { + ObjectFile *object_file = symbol_file->GetObjectFile(); + + if (object_file && object_file->GetFileSpec() == symbol_fspec) { + // Provide feedback that the symfile has been successfully added. + const FileSpec &module_fs = module_sp->GetFileSpec(); + result.AppendMessageWithFormat( + "symbol file '%s' has been added to '%s'\n", symfile_path, + module_fs.GetPath().c_str()); + + // Let clients know something changed in the module if it is + // currently loaded + ModuleList module_list; + module_list.Append(module_sp); + target->SymbolsDidLoad(module_list); - flush = true; - result.SetStatus(eReturnStatusSuccessFinishResult); - return true; - } + // Make sure we load any scripting resources that may be embedded + // in the debug info files in case the platform supports that. + Status error; + StreamString feedback_stream; + module_sp->LoadScriptingResourceInTarget(target, error, + &feedback_stream); + if (error.Fail() && error.AsCString()) + result.AppendWarningWithFormat( + "unable to load scripting data for module %s - error " + "reported was %s", + module_sp->GetFileSpec() + .GetFileNameStrippingExtension() + .GetCString(), + error.AsCString()); + else if (feedback_stream.GetSize()) + result.AppendWarningWithFormat("%s", feedback_stream.GetData()); + + flush = true; + result.SetStatus(eReturnStatusSuccessFinishResult); + return true; } } // Clear the symbol file spec if anything went wrong Modified: lldb/trunk/source/Core/Module.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/Module.cpp?rev=367664&r1=367663&r2=367664&view=diff ============================================================================== --- lldb/trunk/source/Core/Module.cpp (original) +++ lldb/trunk/source/Core/Module.cpp Fri Aug 2 01:16:35 2019 @@ -366,7 +366,7 @@ void Module::ParseAllDebugSymbols() { SymbolContext sc; sc.module_sp = shared_from_this(); - SymbolVendor *symbols = GetSymbolVendor(); + SymbolFile *symbols = GetSymbolFile(); for (size_t cu_idx = 0; cu_idx < num_comp_units; cu_idx++) { sc.comp_unit = symbols->GetCompileUnitAtIndex(cu_idx).get(); @@ -406,8 +406,7 @@ size_t Module::GetNumCompileUnits() { static Timer::Category func_cat(LLVM_PRETTY_FUNCTION); Timer scoped_timer(func_cat, "Module::GetNumCompileUnits (module = %p)", static_cast<void *>(this)); - SymbolVendor *symbols = GetSymbolVendor(); - if (symbols) + if (SymbolFile *symbols = GetSymbolFile()) return symbols->GetNumCompileUnits(); return 0; } @@ -418,8 +417,7 @@ CompUnitSP Module::GetCompileUnitAtIndex CompUnitSP cu_sp; if (index < num_comp_units) { - SymbolVendor *symbols = GetSymbolVendor(); - if (symbols) + if (SymbolFile *symbols = GetSymbolFile()) cu_sp = symbols->GetCompileUnitAtIndex(index); } return cu_sp; @@ -457,8 +455,8 @@ uint32_t Module::ResolveSymbolContextFor sc.module_sp = shared_from_this(); resolved_flags |= eSymbolContextModule; - SymbolVendor *sym_vendor = GetSymbolVendor(); - if (!sym_vendor) + SymbolFile *symfile = GetSymbolFile(); + if (!symfile) return resolved_flags; // Resolve the compile unit, function, block, line table or line entry if @@ -469,14 +467,14 @@ uint32_t Module::ResolveSymbolContextFor resolve_scope & eSymbolContextLineEntry || resolve_scope & eSymbolContextVariable) { resolved_flags |= - sym_vendor->ResolveSymbolContext(so_addr, resolve_scope, sc); + symfile->ResolveSymbolContext(so_addr, resolve_scope, sc); } // Resolve the symbol if requested, but don't re-look it up if we've // already found it. if (resolve_scope & eSymbolContextSymbol && !(resolved_flags & eSymbolContextSymbol)) { - Symtab *symtab = sym_vendor->GetSymtab(); + Symtab *symtab = symfile->GetSymtab(); if (symtab && so_addr.IsSectionOffset()) { Symbol *matching_symbol = nullptr; @@ -509,18 +507,15 @@ uint32_t Module::ResolveSymbolContextFor // files on MacOSX have an unstripped symbol table inside of them. ObjectFile *symtab_objfile = symtab->GetObjectFile(); if (symtab_objfile && symtab_objfile->IsStripped()) { - SymbolFile *symfile = sym_vendor->GetSymbolFile(); - if (symfile) { - ObjectFile *symfile_objfile = symfile->GetObjectFile(); - if (symfile_objfile != symtab_objfile) { - Symtab *symfile_symtab = symfile_objfile->GetSymtab(); - if (symfile_symtab) { - Symbol *symbol = - symfile_symtab->FindSymbolContainingFileAddress( - so_addr.GetFileAddress()); - if (symbol && !symbol->IsSynthetic()) { - sc.symbol = symbol; - } + ObjectFile *symfile_objfile = symfile->GetObjectFile(); + if (symfile_objfile != symtab_objfile) { + Symtab *symfile_symtab = symfile_objfile->GetSymtab(); + if (symfile_symtab) { + Symbol *symbol = + symfile_symtab->FindSymbolContainingFileAddress( + so_addr.GetFileAddress()); + if (symbol && !symbol->IsSynthetic()) { + sc.symbol = symbol; } } } @@ -592,8 +587,7 @@ uint32_t Module::ResolveSymbolContextsFo const uint32_t initial_count = sc_list.GetSize(); - SymbolVendor *symbols = GetSymbolVendor(); - if (symbols) + if (SymbolFile *symbols = GetSymbolFile()) symbols->ResolveSymbolContext(file_spec, line, check_inlines, resolve_scope, sc_list); @@ -604,8 +598,7 @@ size_t Module::FindGlobalVariables(Const const CompilerDeclContext *parent_decl_ctx, size_t max_matches, VariableList &variables) { - SymbolVendor *symbols = GetSymbolVendor(); - if (symbols) + if (SymbolFile *symbols = GetSymbolFile()) return symbols->FindGlobalVariables(name, parent_decl_ctx, max_matches, variables); return 0; @@ -614,7 +607,7 @@ size_t Module::FindGlobalVariables(Const size_t Module::FindGlobalVariables(const RegularExpression ®ex, size_t max_matches, VariableList &variables) { - SymbolVendor *symbols = GetSymbolVendor(); + SymbolFile *symbols = GetSymbolFile(); if (symbols) return symbols->FindGlobalVariables(regex, max_matches, variables); return 0; @@ -811,7 +804,7 @@ size_t Module::FindFunctions(ConstString const size_t old_size = sc_list.GetSize(); // Find all the functions (not symbols, but debug information functions... - SymbolVendor *symbols = GetSymbolVendor(); + SymbolFile *symbols = GetSymbolFile(); if (name_type_mask & eFunctionNameTypeAuto) { LookupInfo lookup_info(name, name_type_mask, eLanguageTypeUnknown); @@ -861,8 +854,7 @@ size_t Module::FindFunctions(const Regul const size_t start_size = sc_list.GetSize(); - SymbolVendor *symbols = GetSymbolVendor(); - if (symbols) { + if (SymbolFile *symbols = GetSymbolFile()) { symbols->FindFunctions(regex, include_inlines, append, sc_list); // Now check our symbol table for symbols that are code symbols if @@ -954,8 +946,7 @@ size_t Module::FindTypes_Impl( TypeMap &types) { static Timer::Category func_cat(LLVM_PRETTY_FUNCTION); Timer scoped_timer(func_cat, LLVM_PRETTY_FUNCTION); - SymbolVendor *symbols = GetSymbolVendor(); - if (symbols) + if (SymbolFile *symbols = GetSymbolFile()) return symbols->FindTypes(name, parent_decl_ctx, append, max_matches, searched_symbol_files, types); return 0; @@ -1064,6 +1055,12 @@ SymbolVendor *Module::GetSymbolVendor(bo return m_symfile_up.get(); } +SymbolFile *Module::GetSymbolFile(bool can_create, Stream *feedback_strm) { + if (SymbolVendor *vendor = GetSymbolVendor(can_create, feedback_strm)) + return vendor->GetSymbolFile(); + return nullptr; +} + void Module::SetFileSpecAndObjectName(const FileSpec &file, ConstString object_name) { // Container objects whose paths do not specify a file directly can call this @@ -1290,9 +1287,8 @@ void Module::SectionFileAddressesChanged ObjectFile *obj_file = GetObjectFile(); if (obj_file) obj_file->SectionFileAddressesChanged(); - SymbolVendor *sym_vendor = GetSymbolVendor(); - if (sym_vendor != nullptr) - sym_vendor->SectionFileAddressesChanged(); + if (SymbolFile *symbols = GetSymbolFile()) + symbols->SectionFileAddressesChanged(); } UnwindTable &Module::GetUnwindTable() { @@ -1407,18 +1403,16 @@ size_t Module::FindSymbolsMatchingRegExA void Module::PreloadSymbols() { std::lock_guard<std::recursive_mutex> guard(m_mutex); - SymbolVendor * sym_vendor = GetSymbolVendor(); - if (!sym_vendor) { + SymbolFile *sym_file = GetSymbolFile(); + if (!sym_file) return; - } + // Prime the symbol file first, since it adds symbols to the symbol table. - if (SymbolFile *symbol_file = sym_vendor->GetSymbolFile()) { - symbol_file->PreloadSymbols(); - } + sym_file->PreloadSymbols(); + // Now we can prime the symbol table. - if (Symtab * symtab = sym_vendor->GetSymtab()) { + if (Symtab *symtab = sym_file->GetSymtab()) symtab->PreloadSymbols(); - } } void Module::SetSymbolFileFileSpec(const FileSpec &file) { @@ -1428,7 +1422,7 @@ void Module::SetSymbolFileFileSpec(const // Remove any sections in the unified section list that come from the // current symbol vendor. SectionList *section_list = GetSectionList(); - SymbolFile *symbol_file = m_symfile_up->GetSymbolFile(); + SymbolFile *symbol_file = GetSymbolFile(); if (section_list && symbol_file) { ObjectFile *obj_file = symbol_file->GetObjectFile(); // Make sure we have an object file and that the symbol vendor's objfile Modified: lldb/trunk/source/Expression/IRExecutionUnit.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/IRExecutionUnit.cpp?rev=367664&r1=367663&r2=367664&view=diff ============================================================================== --- lldb/trunk/source/Expression/IRExecutionUnit.cpp (original) +++ lldb/trunk/source/Expression/IRExecutionUnit.cpp Fri Aug 2 01:16:35 2019 @@ -658,11 +658,7 @@ FindBestAlternateMangledName(ConstString if (!sym_ctx.module_sp) return ConstString(); - SymbolVendor *sym_vendor = sym_ctx.module_sp->GetSymbolVendor(); - if (!sym_vendor) - return ConstString(); - - lldb_private::SymbolFile *sym_file = sym_vendor->GetSymbolFile(); + lldb_private::SymbolFile *sym_file = sym_ctx.module_sp->GetSymbolFile(); if (!sym_file) return ConstString(); Modified: lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp?rev=367664&r1=367663&r2=367664&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp (original) +++ lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp Fri Aug 2 01:16:35 2019 @@ -72,112 +72,106 @@ FileSpecList PlatformDarwin::LocateExecu FileSpec module_spec = module.GetFileSpec(); if (module_spec) { - SymbolVendor *symbols = module.GetSymbolVendor(); - if (symbols) { - SymbolFile *symfile = symbols->GetSymbolFile(); - if (symfile) { - ObjectFile *objfile = symfile->GetObjectFile(); - if (objfile) { - FileSpec symfile_spec(objfile->GetFileSpec()); - if (symfile_spec && - strcasestr (symfile_spec.GetPath().c_str(), - ".dSYM/Contents/Resources/DWARF") != nullptr && - FileSystem::Instance().Exists(symfile_spec)) { - while (module_spec.GetFilename()) { - std::string module_basename( - module_spec.GetFilename().GetCString()); - std::string original_module_basename(module_basename); - - bool was_keyword = false; - - // FIXME: for Python, we cannot allow certain characters in - // module - // filenames we import. Theoretically, different scripting - // languages may have different sets of forbidden tokens in - // filenames, and that should be dealt with by each - // ScriptInterpreter. For now, we just replace dots with - // underscores, but if we ever support anything other than - // Python we will need to rework this - std::replace(module_basename.begin(), module_basename.end(), - '.', '_'); - std::replace(module_basename.begin(), module_basename.end(), - ' ', '_'); - std::replace(module_basename.begin(), module_basename.end(), - '-', '_'); - ScriptInterpreter *script_interpreter = - target->GetDebugger().GetScriptInterpreter(); - if (script_interpreter && - script_interpreter->IsReservedWord( - module_basename.c_str())) { - module_basename.insert(module_basename.begin(), '_'); - was_keyword = true; - } + if (SymbolFile *symfile = module.GetSymbolFile()) { + ObjectFile *objfile = symfile->GetObjectFile(); + if (objfile) { + FileSpec symfile_spec(objfile->GetFileSpec()); + if (symfile_spec && + strcasestr(symfile_spec.GetPath().c_str(), + ".dSYM/Contents/Resources/DWARF") != nullptr && + FileSystem::Instance().Exists(symfile_spec)) { + while (module_spec.GetFilename()) { + std::string module_basename( + module_spec.GetFilename().GetCString()); + std::string original_module_basename(module_basename); + + bool was_keyword = false; + + // FIXME: for Python, we cannot allow certain characters in + // module + // filenames we import. Theoretically, different scripting + // languages may have different sets of forbidden tokens in + // filenames, and that should be dealt with by each + // ScriptInterpreter. For now, we just replace dots with + // underscores, but if we ever support anything other than + // Python we will need to rework this + std::replace(module_basename.begin(), module_basename.end(), '.', + '_'); + std::replace(module_basename.begin(), module_basename.end(), ' ', + '_'); + std::replace(module_basename.begin(), module_basename.end(), '-', + '_'); + ScriptInterpreter *script_interpreter = + target->GetDebugger().GetScriptInterpreter(); + if (script_interpreter && + script_interpreter->IsReservedWord(module_basename.c_str())) { + module_basename.insert(module_basename.begin(), '_'); + was_keyword = true; + } - StreamString path_string; - StreamString original_path_string; - // for OSX we are going to be in - // .dSYM/Contents/Resources/DWARF/<basename> let us go to - // .dSYM/Contents/Resources/Python/<basename>.py and see if the - // file exists - path_string.Printf("%s/../Python/%s.py", - symfile_spec.GetDirectory().GetCString(), - module_basename.c_str()); - original_path_string.Printf( - "%s/../Python/%s.py", - symfile_spec.GetDirectory().GetCString(), - original_module_basename.c_str()); - FileSpec script_fspec(path_string.GetString()); - FileSystem::Instance().Resolve(script_fspec); - FileSpec orig_script_fspec(original_path_string.GetString()); - FileSystem::Instance().Resolve(orig_script_fspec); - - // if we did some replacements of reserved characters, and a - // file with the untampered name exists, then warn the user - // that the file as-is shall not be loaded - if (feedback_stream) { - if (module_basename != original_module_basename && - FileSystem::Instance().Exists(orig_script_fspec)) { - const char *reason_for_complaint = - was_keyword ? "conflicts with a keyword" - : "contains reserved characters"; - if (FileSystem::Instance().Exists(script_fspec)) - feedback_stream->Printf( - "warning: the symbol file '%s' contains a debug " - "script. However, its name" - " '%s' %s and as such cannot be loaded. LLDB will" - " load '%s' instead. Consider removing the file with " - "the malformed name to" - " eliminate this warning.\n", - symfile_spec.GetPath().c_str(), - original_path_string.GetData(), reason_for_complaint, - path_string.GetData()); - else - feedback_stream->Printf( - "warning: the symbol file '%s' contains a debug " - "script. However, its name" - " %s and as such cannot be loaded. If you intend" - " to have this script loaded, please rename '%s' to " - "'%s' and retry.\n", - symfile_spec.GetPath().c_str(), reason_for_complaint, - original_path_string.GetData(), - path_string.GetData()); - } + StreamString path_string; + StreamString original_path_string; + // for OSX we are going to be in + // .dSYM/Contents/Resources/DWARF/<basename> let us go to + // .dSYM/Contents/Resources/Python/<basename>.py and see if the + // file exists + path_string.Printf("%s/../Python/%s.py", + symfile_spec.GetDirectory().GetCString(), + module_basename.c_str()); + original_path_string.Printf( + "%s/../Python/%s.py", + symfile_spec.GetDirectory().GetCString(), + original_module_basename.c_str()); + FileSpec script_fspec(path_string.GetString()); + FileSystem::Instance().Resolve(script_fspec); + FileSpec orig_script_fspec(original_path_string.GetString()); + FileSystem::Instance().Resolve(orig_script_fspec); + + // if we did some replacements of reserved characters, and a + // file with the untampered name exists, then warn the user + // that the file as-is shall not be loaded + if (feedback_stream) { + if (module_basename != original_module_basename && + FileSystem::Instance().Exists(orig_script_fspec)) { + const char *reason_for_complaint = + was_keyword ? "conflicts with a keyword" + : "contains reserved characters"; + if (FileSystem::Instance().Exists(script_fspec)) + feedback_stream->Printf( + "warning: the symbol file '%s' contains a debug " + "script. However, its name" + " '%s' %s and as such cannot be loaded. LLDB will" + " load '%s' instead. Consider removing the file with " + "the malformed name to" + " eliminate this warning.\n", + symfile_spec.GetPath().c_str(), + original_path_string.GetData(), reason_for_complaint, + path_string.GetData()); + else + feedback_stream->Printf( + "warning: the symbol file '%s' contains a debug " + "script. However, its name" + " %s and as such cannot be loaded. If you intend" + " to have this script loaded, please rename '%s' to " + "'%s' and retry.\n", + symfile_spec.GetPath().c_str(), reason_for_complaint, + original_path_string.GetData(), path_string.GetData()); } + } - if (FileSystem::Instance().Exists(script_fspec)) { - file_list.Append(script_fspec); - break; - } + if (FileSystem::Instance().Exists(script_fspec)) { + file_list.Append(script_fspec); + break; + } - // If we didn't find the python file, then keep stripping the - // extensions and try again - ConstString filename_no_extension( - module_spec.GetFileNameStrippingExtension()); - if (module_spec.GetFilename() == filename_no_extension) - break; + // If we didn't find the python file, then keep stripping the + // extensions and try again + ConstString filename_no_extension( + module_spec.GetFileNameStrippingExtension()); + if (module_spec.GetFilename() == filename_no_extension) + break; - module_spec.GetFilename() = filename_no_extension; - } + module_spec.GetFilename() = filename_no_extension; } } } Modified: lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp?rev=367664&r1=367663&r2=367664&view=diff ============================================================================== --- lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp (original) +++ lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp Fri Aug 2 01:16:35 2019 @@ -3749,10 +3749,8 @@ SymbolFileDWARFDebugMap *SymbolFileDWARF if (m_debug_map_symfile == nullptr && !m_debug_map_module_wp.expired()) { lldb::ModuleSP module_sp(m_debug_map_module_wp.lock()); if (module_sp) { - SymbolVendor *sym_vendor = module_sp->GetSymbolVendor(); - if (sym_vendor) - m_debug_map_symfile = - (SymbolFileDWARFDebugMap *)sym_vendor->GetSymbolFile(); + m_debug_map_symfile = + (SymbolFileDWARFDebugMap *)module_sp->GetSymbolFile(); } } return m_debug_map_symfile; Modified: lldb/trunk/source/Symbol/Block.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/Block.cpp?rev=367664&r1=367663&r2=367664&view=diff ============================================================================== --- lldb/trunk/source/Symbol/Block.cpp (original) +++ lldb/trunk/source/Symbol/Block.cpp Fri Aug 2 01:16:35 2019 @@ -464,8 +464,7 @@ uint32_t Block::AppendVariables(bool can SymbolFile *Block::GetSymbolFile() { if (ModuleSP module_sp = CalculateSymbolContextModule()) - if (SymbolVendor *sym_vendor = module_sp->GetSymbolVendor()) - return sym_vendor->GetSymbolFile(); + return module_sp->GetSymbolFile(); return nullptr; } Modified: lldb/trunk/source/Symbol/Function.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/Function.cpp?rev=367664&r1=367663&r2=367664&view=diff ============================================================================== --- lldb/trunk/source/Symbol/Function.cpp (original) +++ lldb/trunk/source/Symbol/Function.cpp Fri Aug 2 01:16:35 2019 @@ -428,14 +428,8 @@ CompilerDeclContext Function::GetDeclCon ModuleSP module_sp = CalculateSymbolContextModule(); if (module_sp) { - SymbolVendor *sym_vendor = module_sp->GetSymbolVendor(); - - if (sym_vendor) { - SymbolFile *sym_file = sym_vendor->GetSymbolFile(); - - if (sym_file) - return sym_file->GetDeclContextForUID(GetID()); - } + if (SymbolFile *sym_file = module_sp->GetSymbolFile()) + return sym_file->GetDeclContextForUID(GetID()); } return CompilerDeclContext(); } @@ -449,12 +443,7 @@ Type *Function::GetType() { if (!sc.module_sp) return nullptr; - SymbolVendor *sym_vendor = sc.module_sp->GetSymbolVendor(); - - if (sym_vendor == nullptr) - return nullptr; - - SymbolFile *sym_file = sym_vendor->GetSymbolFile(); + SymbolFile *sym_file = sc.module_sp->GetSymbolFile(); if (sym_file == nullptr) return nullptr; Modified: lldb/trunk/source/Symbol/UnwindTable.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/UnwindTable.cpp?rev=367664&r1=367663&r2=367664&view=diff ============================================================================== --- lldb/trunk/source/Symbol/UnwindTable.cpp (original) +++ lldb/trunk/source/Symbol/UnwindTable.cpp Fri Aug 2 01:16:35 2019 @@ -182,11 +182,7 @@ ArmUnwindInfo *UnwindTable::GetArmUnwind return m_arm_unwind_up.get(); } -SymbolFile *UnwindTable::GetSymbolFile() { - if (SymbolVendor *vendor = m_module.GetSymbolVendor()) - return vendor->GetSymbolFile(); - return nullptr; -} +SymbolFile *UnwindTable::GetSymbolFile() { return m_module.GetSymbolFile(); } ArchSpec UnwindTable::GetArchitecture() { return m_module.GetArchitecture(); } _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits