diff options
author | Tom Tromey <tom@tromey.com> | 2021-03-20 17:23:40 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2021-03-20 17:23:42 -0600 |
commit | 484b1090630d273dfb70ee96b152ec6b527a1b65 (patch) | |
tree | 0e0a8a9a6e33be2fb7d4dbca9ca632ef9735cca5 /gdb | |
parent | 7e9c0476a7085cbebdc818d163d5c3bd46da6388 (diff) | |
download | fsf-binutils-gdb-484b1090630d273dfb70ee96b152ec6b527a1b65.zip fsf-binutils-gdb-484b1090630d273dfb70ee96b152ec6b527a1b65.tar.gz fsf-binutils-gdb-484b1090630d273dfb70ee96b152ec6b527a1b65.tar.bz2 |
Do not pass objfile to psymtab_discarder
This changes the psymtab_discarder to not assume that partial symtabs
are attached to the objfile. Instead, a psymtab_storage object is
passed directly to it.
gdb/ChangeLog
2021-03-20 Tom Tromey <tom@tromey.com>
* psympriv.h (psymtab_discarder): Take psymtab_storage parameter.
(~psymtab_discarder, keep): Update.
<m_objfile>: Remove.
<m_partial_symtabs>: New member.
* dwarf2/read.c (dwarf2_build_psymtabs): Update.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 8 | ||||
-rw-r--r-- | gdb/dwarf2/read.c | 2 | ||||
-rw-r--r-- | gdb/psympriv.h | 17 |
3 files changed, 17 insertions, 10 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 491ddd5..7bb862e 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,13 @@ 2021-03-20 Tom Tromey <tom@tromey.com> + * psympriv.h (psymtab_discarder): Take psymtab_storage parameter. + (~psymtab_discarder, keep): Update. + <m_objfile>: Remove. + <m_partial_symtabs>: New member. + * dwarf2/read.c (dwarf2_build_psymtabs): Update. + +2021-03-20 Tom Tromey <tom@tromey.com> + * xcoffread.c (xcoff_end_psymtab): Add partial_symtabs parameter. (xcoff_end_psymtab): Update. (scan_xcoff_symtab): Add partial_symtabs parameter. diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index 19e5cdb..aad25f7 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -6142,7 +6142,7 @@ dwarf2_build_psymtabs (struct objfile *objfile) /* This isn't really ideal: all the data we allocate on the objfile's obstack is still uselessly kept around. However, freeing it seems unsafe. */ - psymtab_discarder psymtabs (objfile); + psymtab_discarder psymtabs (objfile->partial_symtabs.get ()); dwarf2_build_psymtabs_hard (per_objfile); psymtabs.keep (); diff --git a/gdb/psympriv.h b/gdb/psympriv.h index 73f00a5..0f24c10 100644 --- a/gdb/psympriv.h +++ b/gdb/psympriv.h @@ -446,29 +446,28 @@ class psymtab_discarder { public: - psymtab_discarder (struct objfile *objfile) - : m_objfile (objfile), - m_psymtab (objfile->partial_symtabs->psymtabs) + psymtab_discarder (psymtab_storage *partial_symtabs) + : m_partial_symtabs (partial_symtabs), + m_psymtab (partial_symtabs->psymtabs) { } ~psymtab_discarder () { - if (m_objfile != NULL) - m_objfile->partial_symtabs->discard_psymtabs_to (m_psymtab); + if (m_partial_symtabs != nullptr) + m_partial_symtabs->discard_psymtabs_to (m_psymtab); } /* Keep any partial symbol tables that were built. */ void keep () { - m_objfile = NULL; + m_partial_symtabs = nullptr; } private: - /* The objfile. If NULL this serves as a sentinel to indicate that - the psymtabs should be kept. */ - struct objfile *m_objfile; + /* The partial symbol storage object. */ + psymtab_storage *m_partial_symtabs; /* How far back to free. */ struct partial_symtab *m_psymtab; }; |