Set per_bfd->partial_symtabs earlier

dwarf2_build_psymtabs sets per_bfd->partial_symtabs at its end, in
order to facilitate sharing.

However, in order to diassociate partial symtabs from the objfile, we
want to change the DWARF reader to reference partial symtabs via the
per_bfd.  So, we want to set this reference before reading psymtabs.
This is safe to do because the assignment is done unconditionally.

gdb/ChangeLog
2021-03-20  Tom Tromey  <tom@tromey.com>

	* dwarf2/read.c (dwarf2_build_psymtabs): Set partial_symtabs
	earlier.
This commit is contained in:
Tom Tromey 2021-03-20 17:23:40 -06:00
parent 484b109063
commit 51962708bd
2 changed files with 11 additions and 6 deletions

View File

@ -1,3 +1,8 @@
2021-03-20 Tom Tromey <tom@tromey.com>
* dwarf2/read.c (dwarf2_build_psymtabs): Set partial_symtabs
earlier.
2021-03-20 Tom Tromey <tom@tromey.com>
* psympriv.h (psymtab_discarder): Take psymtab_storage parameter.

View File

@ -6137,6 +6137,12 @@ dwarf2_build_psymtabs (struct objfile *objfile)
return;
}
/* Set the local reference to partial symtabs, so that we don't try
to read them again if reading another objfile with the same BFD.
If we can't in fact share, this won't make a difference anyway as
the dwarf2_per_bfd object won't be shared. */
per_bfd->partial_symtabs = objfile->partial_symtabs;
try
{
/* This isn't really ideal: all the data we allocate on the
@ -6155,12 +6161,6 @@ dwarf2_build_psymtabs (struct objfile *objfile)
{
exception_print (gdb_stderr, except);
}
/* Finish by setting the local reference to partial symtabs, so that
we don't try to read them again if reading another objfile with the same
BFD. If we can't in fact share, this won't make a difference anyway as
the dwarf2_per_bfd object won't be shared. */
per_bfd->partial_symtabs = objfile->partial_symtabs;
}
/* Find the base address of the compilation unit for range lists and