Change program_space::ebfd to a gdb_bfd_ref_ptr
authorTom Tromey <tom@tromey.com>
Thu, 29 Oct 2020 21:04:33 +0000 (15:04 -0600)
committerTom Tromey <tom@tromey.com>
Thu, 29 Oct 2020 21:04:37 +0000 (15:04 -0600)
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.

gdb/ChangeLog
gdb/exec.c
gdb/progspace.c
gdb/progspace.h

index 028329e7988aef61c8bbbadbd6d6ea1c8a50ee4b..06f42436d259c49f441de72350e6d8e408846f0c 100644 (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.
index 2c93391791f157865799753ac3f30b715e426c4c..684f4dfc04164f8d7e1eacfbe9e37efb0206fea3 100644 (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 ())
        {
index 57edc298da701477deaf7b77b1f7f0965a1dc656..52482ca8f6453e1527507634f4a1274a617dfaf4 100644 (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);
index 5e49083884a754bd9aaf0a41e73a61e8068cb245..8150d8a2a62090a9f4ce1897aecedc4f90b04e38 100644 (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