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.
This commit is contained in:
parent
7e9c0476a7
commit
484b109063
@ -1,3 +1,11 @@
|
|||||||
|
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>
|
2021-03-20 Tom Tromey <tom@tromey.com>
|
||||||
|
|
||||||
* xcoffread.c (xcoff_end_psymtab): Add partial_symtabs parameter.
|
* xcoffread.c (xcoff_end_psymtab): Add partial_symtabs parameter.
|
||||||
|
@ -6142,7 +6142,7 @@ dwarf2_build_psymtabs (struct objfile *objfile)
|
|||||||
/* This isn't really ideal: all the data we allocate on the
|
/* This isn't really ideal: all the data we allocate on the
|
||||||
objfile's obstack is still uselessly kept around. However,
|
objfile's obstack is still uselessly kept around. However,
|
||||||
freeing it seems unsafe. */
|
freeing it seems unsafe. */
|
||||||
psymtab_discarder psymtabs (objfile);
|
psymtab_discarder psymtabs (objfile->partial_symtabs.get ());
|
||||||
dwarf2_build_psymtabs_hard (per_objfile);
|
dwarf2_build_psymtabs_hard (per_objfile);
|
||||||
psymtabs.keep ();
|
psymtabs.keep ();
|
||||||
|
|
||||||
|
@ -446,29 +446,28 @@ class psymtab_discarder
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
psymtab_discarder (struct objfile *objfile)
|
psymtab_discarder (psymtab_storage *partial_symtabs)
|
||||||
: m_objfile (objfile),
|
: m_partial_symtabs (partial_symtabs),
|
||||||
m_psymtab (objfile->partial_symtabs->psymtabs)
|
m_psymtab (partial_symtabs->psymtabs)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
~psymtab_discarder ()
|
~psymtab_discarder ()
|
||||||
{
|
{
|
||||||
if (m_objfile != NULL)
|
if (m_partial_symtabs != nullptr)
|
||||||
m_objfile->partial_symtabs->discard_psymtabs_to (m_psymtab);
|
m_partial_symtabs->discard_psymtabs_to (m_psymtab);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Keep any partial symbol tables that were built. */
|
/* Keep any partial symbol tables that were built. */
|
||||||
void keep ()
|
void keep ()
|
||||||
{
|
{
|
||||||
m_objfile = NULL;
|
m_partial_symtabs = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
/* The objfile. If NULL this serves as a sentinel to indicate that
|
/* The partial symbol storage object. */
|
||||||
the psymtabs should be kept. */
|
psymtab_storage *m_partial_symtabs;
|
||||||
struct objfile *m_objfile;
|
|
||||||
/* How far back to free. */
|
/* How far back to free. */
|
||||||
struct partial_symtab *m_psymtab;
|
struct partial_symtab *m_psymtab;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user