forked from OSchip/llvm-project
SymbolVendor: Make SectionAddressesChanged a passthrough
Summary: This moves the implementation of the function into the SymbolFile class, making it possible to excise the SymbolVendor passthrough functions in follow-up patches. Reviewers: clayborg, jingham, JDevlieghere Subscribers: lldb-commits Differential Revision: https://reviews.llvm.org/D65266 llvm-svn: 367231
This commit is contained in:
parent
d42289e291
commit
c2409baa66
|
@ -212,6 +212,7 @@ public:
|
|||
|
||||
ObjectFile *GetObjectFile() { return m_obj_file; }
|
||||
const ObjectFile *GetObjectFile() const { return m_obj_file; }
|
||||
ObjectFile *GetMainObjectFile();
|
||||
|
||||
virtual std::vector<CallEdge> ParseCallEdgesInFunction(UserID func_id) {
|
||||
return {};
|
||||
|
@ -221,7 +222,7 @@ public:
|
|||
|
||||
/// 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
|
||||
|
|
|
@ -31,6 +31,9 @@ void SymbolFile::PreloadSymbols() {
|
|||
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<SymbolFile> best_symfile_up;
|
||||
|
@ -206,7 +209,7 @@ Symtab *SymbolFile::GetSymtab() {
|
|||
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 @@ Symtab *SymbolFile::GetSymtab() {
|
|||
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);
|
||||
|
|
|
@ -390,19 +390,8 @@ Symtab *SymbolVendor::GetSymtab() {
|
|||
}
|
||||
|
||||
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
|
||||
|
|
Loading…
Reference in New Issue