Use gdb_bfd_ref_ptr in target_bfd
authorTom Tromey <tom@tromey.com>
Fri, 4 May 2018 16:17:52 +0000 (10:17 -0600)
committerTom Tromey <tom@tromey.com>
Fri, 4 May 2018 18:10:43 +0000 (12:10 -0600)
I noticed that target_bfd was using manual reference counting for the
BFD it held.  This patch changes it to use gdb_bfd_ref_ptr instead.

Tested by the buildbot.

ChangeLog
2018-05-04  Tom Tromey  <tom@tromey.com>

* bfd-target.c (target_bfd::m_bfd): Now a gdb_bfd_ref_ptr.
(target_bfd::target_bfd, target_bfd::~target_bfd): Update.

gdb/ChangeLog
gdb/bfd-target.c

index 6005f54e4c1b3656c5a409a40f90810a16d6ec21..7f7c547024b0a7f3328c912cdb75eb096946318e 100644 (file)
@@ -1,3 +1,8 @@
+2018-05-04  Tom Tromey  <tom@tromey.com>
+
+       * bfd-target.c (target_bfd::m_bfd): Now a gdb_bfd_ref_ptr.
+       (target_bfd::target_bfd, target_bfd::~target_bfd): Update.
+
 2018-05-04  Ulrich Weigand  <uweigand@de.ibm.com>
 
        * spu-linux-nat.c (spu_linux_nat_target::wait): Fix syntax error.
index ba194d7b04b8de117a47426ef785ac5af91bd899..6138d450d967362135d8efdd9ddc4cae82298a59 100644 (file)
@@ -53,7 +53,7 @@ public:
 
 private:
   /* The BFD we're wrapping.  */
-  struct bfd *m_bfd;
+  gdb_bfd_ref_ptr m_bfd;
 
   /* The section table build from the ALLOC sections in BFD.  Note
      that we can't rely on extracting the BFD from a random section in
@@ -90,10 +90,9 @@ target_bfd::get_section_table ()
 }
 
 target_bfd::target_bfd (struct bfd *abfd)
+  : m_bfd (gdb_bfd_ref_ptr::new_reference (abfd))
 {
   this->to_stratum = file_stratum;
-  m_bfd = abfd;
-  gdb_bfd_ref (abfd);
   m_table.sections = NULL;
   m_table.sections_end = NULL;
   build_section_table (abfd, &m_table.sections, &m_table.sections_end);
@@ -101,7 +100,6 @@ target_bfd::target_bfd (struct bfd *abfd)
 
 target_bfd::~target_bfd ()
 {
-  gdb_bfd_unref (m_bfd);
   xfree (m_table.sections);
 }