Index: lldb/trunk/include/lldb/Symbol/SymbolFile.h =================================================================== --- lldb/trunk/include/lldb/Symbol/SymbolFile.h +++ lldb/trunk/include/lldb/Symbol/SymbolFile.h @@ -212,6 +212,7 @@ ObjectFile *GetObjectFile() { return m_obj_file; } const ObjectFile *GetObjectFile() const { return m_obj_file; } + ObjectFile *GetMainObjectFile(); virtual std::vector ParseCallEdgesInFunction(UserID func_id) { return {}; @@ -221,7 +222,7 @@ /// Notify the SymbolFile that the file addresses in the Sections /// for this module have been changed. - virtual void SectionFileAddressesChanged() {} + virtual void SectionFileAddressesChanged(); struct RegisterInfoResolver { virtual ~RegisterInfoResolver(); // anchor Index: lldb/trunk/source/Symbol/SymbolFile.cpp =================================================================== --- lldb/trunk/source/Symbol/SymbolFile.cpp +++ lldb/trunk/source/Symbol/SymbolFile.cpp @@ -31,6 +31,9 @@ std::recursive_mutex &SymbolFile::GetModuleMutex() const { return GetObjectFile()->GetModule()->GetMutex(); } +ObjectFile *SymbolFile::GetMainObjectFile() { + return m_obj_file->GetModule()->GetObjectFile(); +} SymbolFile *SymbolFile::FindPlugin(ObjectFile *obj_file) { std::unique_ptr best_symfile_up; @@ -206,7 +209,7 @@ return m_symtab; // Fetch the symtab from the main object file. - m_symtab = m_obj_file->GetModule()->GetObjectFile()->GetSymtab(); + m_symtab = GetMainObjectFile()->GetSymtab(); // Then add our symbols to it. if (m_symtab) @@ -215,6 +218,15 @@ return m_symtab; } +void SymbolFile::SectionFileAddressesChanged() { + ObjectFile *module_objfile = GetMainObjectFile(); + ObjectFile *symfile_objfile = GetObjectFile(); + if (symfile_objfile != module_objfile) + symfile_objfile->SectionFileAddressesChanged(); + if (m_symtab) + m_symtab->SectionFileAddressesChanged(); +} + void SymbolFile::Dump(Stream &s) { s.PutCString("Types:\n"); m_type_list.Dump(&s, /*show_context*/ false); Index: lldb/trunk/source/Symbol/SymbolVendor.cpp =================================================================== --- lldb/trunk/source/Symbol/SymbolVendor.cpp +++ lldb/trunk/source/Symbol/SymbolVendor.cpp @@ -390,19 +390,8 @@ } void SymbolVendor::SectionFileAddressesChanged() { - ModuleSP module_sp(GetModule()); - if (module_sp) { - ObjectFile *module_objfile = module_sp->GetObjectFile(); - if (m_sym_file_up) { - ObjectFile *symfile_objfile = m_sym_file_up->GetObjectFile(); - if (symfile_objfile != module_objfile) - symfile_objfile->SectionFileAddressesChanged(); - } - Symtab *symtab = GetSymtab(); - if (symtab) { - symtab->SectionFileAddressesChanged(); - } - } + if (m_sym_file_up) + m_sym_file_up->SectionFileAddressesChanged(); } // PluginInterface protocol