From ad5096892ca6a829f719533f94eaadecc0c5637d Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Sat, 12 Jun 2021 10:46:05 +0200 Subject: [gdb/symtab] Add reset_compunit_symtab Add a new function reset_compunit_symtab. --- gdb/dwarf2/read.c | 14 +++++++++++++- gdb/dwarf2/read.h | 1 + gdb/psympriv.h | 8 ++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index cf6dc08..2a2edf5 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -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. */ diff --git a/gdb/dwarf2/read.h b/gdb/dwarf2/read.h index e341bbd..043956e 100644 --- a/gdb/dwarf2/read.h +++ b/gdb/dwarf2/read.h @@ -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; }; diff --git a/gdb/psympriv.h b/gdb/psympriv.h index 0d1507b..64ae72f 100644 --- a/gdb/psympriv.h +++ b/gdb/psympriv.h @@ -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. */ -- cgit v1.1