Change program_space::ebfd to a gdb_bfd_ref_ptr

This changes program_space::ebfd to a gdb_bfd_ref_ptr, removing some
manual management.

gdb/ChangeLog
2020-10-29  Tom Tromey  <tom@tromey.com>

	* exec.c (exec_file_attach): Update.
	* progspace.c (program_space::exec_close): Update.
	* progspace.h (struct program_space) <ebfd>: Now a
	gdb_bfd_ref_ptr.
	<set_exec_bfd>: Change argument type.
	<exec_bfd>: Update.
This commit is contained in:
Tom Tromey 2020-10-29 15:04:33 -06:00
parent 7e10abd146
commit 19f6550ebb
4 changed files with 16 additions and 9 deletions

View File

@ -1,3 +1,12 @@
2020-10-29 Tom Tromey <tom@tromey.com>
* exec.c (exec_file_attach): Update.
* progspace.c (program_space::exec_close): Update.
* progspace.h (struct program_space) <ebfd>: Now a
gdb_bfd_ref_ptr.
<set_exec_bfd>: Change argument type.
<exec_bfd>: Update.
2020-10-29 Tom Tromey <tom@tromey.com>
* windows-tdep.c (windows_solib_create_inferior_hook): Update.

View File

@ -453,7 +453,7 @@ exec_file_attach (const char *filename, int from_tty)
FOPEN_RUB, scratch_chan);
else
temp = gdb_bfd_open (canonical_pathname, gnutarget, scratch_chan);
current_program_space->set_exec_bfd (temp.release ());
current_program_space->set_exec_bfd (std::move (temp));
if (!current_program_space->exec_bfd ())
{

View File

@ -228,13 +228,11 @@ program_space::solibs () const
void
program_space::exec_close ()
{
if (ebfd)
if (ebfd != nullptr)
{
gdb_bfd_unref (ebfd);
/* Removing target sections may close the exec_ops target.
Clear ebfd before doing so to prevent recursion. */
ebfd = NULL;
ebfd.reset (nullptr);
ebfd_mtime = 0;
remove_target_sections (&ebfd);

View File

@ -279,13 +279,13 @@ struct program_space
/* Return the exec BFD for this program space. */
bfd *exec_bfd () const
{
return ebfd;
return ebfd.get ();
}
/* Set the exec BFD for this program space to ABFD. */
void set_exec_bfd (bfd *abfd)
void set_exec_bfd (gdb_bfd_ref_ptr &&abfd)
{
ebfd = abfd;
ebfd = std::move (abfd);
}
/* Unique ID number. */
@ -295,7 +295,7 @@ struct program_space
managed by the exec target. */
/* The BFD handle for the main executable. */
bfd *ebfd = NULL;
gdb_bfd_ref_ptr ebfd;
/* The last-modified time, from when the exec was brought in. */
long ebfd_mtime = 0;
/* Similar to bfd_get_filename (exec_bfd) but in original form given