diff options
author | Tom de Vries <tdevries@suse.de> | 2021-06-12 10:46:05 +0200 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2021-06-24 17:59:27 +0200 |
commit | ad5096892ca6a829f719533f94eaadecc0c5637d (patch) | |
tree | 3da373bbf1bcf08589d64b87f566aced8c8ea66e | |
parent | af7349863ca426ecf789047ca17b960d6f9bbee9 (diff) | |
download | gdb-users/vries/lazy-symtab-expansion.zip gdb-users/vries/lazy-symtab-expansion.tar.gz gdb-users/vries/lazy-symtab-expansion.tar.bz2 |
[gdb/symtab] Add reset_compunit_symtabusers/vries/lazy-symtab-expansion
Add a new function reset_compunit_symtab.
-rw-r--r-- | gdb/dwarf2/read.c | 14 | ||||
-rw-r--r-- | gdb/dwarf2/read.h | 1 | ||||
-rw-r--r-- | gdb/psympriv.h | 8 |
3 files changed, 22 insertions, 1 deletions
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. */ |