[gdb/symtab] Add reset_compunit_symtab

Add a new function reset_compunit_symtab.
This commit is contained in:
Tom de Vries 2021-06-12 10:46:05 +02:00
parent af7349863c
commit ad5096892c
3 changed files with 22 additions and 1 deletions

View File

@ -1729,7 +1729,8 @@ dwarf2_per_objfile::set_symtab (const dwarf2_per_cu_data *per_cu,
compunit_symtab *symtab)
{
gdb_assert (per_cu->index < this->m_symtabs.size ());
gdb_assert (this->m_symtabs[per_cu->index] == nullptr);
gdb_assert (this->m_symtabs[per_cu->index] == nullptr
|| symtab == nullptr);
this->m_symtabs[per_cu->index] = symtab;
}
@ -5674,6 +5675,10 @@ struct dwarf2_include_psymtab : public partial_symtab
return nullptr;
}
void reset_compunit_symtab (struct objfile *objfile) override
{
}
private:
partial_symtab *includer () const
{
@ -8587,6 +8592,13 @@ dwarf2_psymtab::get_compunit_symtab (struct objfile *objfile) const
return per_objfile->get_symtab (per_cu_data);
}
void
dwarf2_psymtab::reset_compunit_symtab (struct objfile *objfile)
{
dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
per_objfile->set_symtab (per_cu_data, nullptr);
}
/* Trivial hash function for die_info: the hash value of a DIE
is its offset in .debug_info for this objfile. */

View File

@ -626,6 +626,7 @@ struct dwarf2_psymtab : public partial_symtab
void expand_psymtab (struct objfile *) override;
bool readin_p (struct objfile *) const override;
compunit_symtab *get_compunit_symtab (struct objfile *) const override;
void reset_compunit_symtab (struct objfile *) override;
struct dwarf2_per_cu_data *per_cu_data;
};

View File

@ -173,6 +173,9 @@ struct partial_symtab
virtual struct compunit_symtab *get_compunit_symtab
(struct objfile *) const = 0;
virtual void reset_compunit_symtab
(struct objfile *) = 0;
/* Return the raw low text address of this partial_symtab. */
CORE_ADDR raw_text_low () const
{
@ -428,6 +431,11 @@ struct standard_psymtab : public partial_symtab
return compunit_symtab;
}
void reset_compunit_symtab (struct objfile *) override
{
compunit_symtab = nullptr;
}
/* True if the symtab corresponding to this psymtab has been
readin. */