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> 2020-10-29 Tom Tromey <tom@tromey.com>
* windows-tdep.c (windows_solib_create_inferior_hook): Update. * 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); FOPEN_RUB, scratch_chan);
else else
temp = gdb_bfd_open (canonical_pathname, gnutarget, scratch_chan); 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 ()) if (!current_program_space->exec_bfd ())
{ {

View file

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

View file

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