aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2020-10-29 15:04:33 -0600
committerTom Tromey <tom@tromey.com>2020-10-29 15:04:37 -0600
commit19f6550ebbc922f88026c5c7ebeb04019d47cac2 (patch)
treef91c94262757e994e4074118d041bae0a687e94b
parent7e10abd146dbd17dc1b4e9701210e5724df2b2b0 (diff)
downloadgdb-19f6550ebbc922f88026c5c7ebeb04019d47cac2.zip
gdb-19f6550ebbc922f88026c5c7ebeb04019d47cac2.tar.gz
gdb-19f6550ebbc922f88026c5c7ebeb04019d47cac2.tar.bz2
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.
-rw-r--r--gdb/ChangeLog9
-rw-r--r--gdb/exec.c2
-rw-r--r--gdb/progspace.c6
-rw-r--r--gdb/progspace.h8
4 files changed, 16 insertions, 9 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 028329e..06f4243 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,14 @@
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.
* symfile.c (reread_symbols): Update.
* symfile-mem.c (add_symbol_file_from_memory_command)
diff --git a/gdb/exec.c b/gdb/exec.c
index 2c93391..684f4df 100644
--- a/gdb/exec.c
+++ b/gdb/exec.c
@@ -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 ())
{
diff --git a/gdb/progspace.c b/gdb/progspace.c
index 57edc29..52482ca 100644
--- a/gdb/progspace.c
+++ b/gdb/progspace.c
@@ -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);
diff --git a/gdb/progspace.h b/gdb/progspace.h
index 5e49083..8150d8a 100644
--- a/gdb/progspace.h
+++ b/gdb/progspace.h
@@ -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