Introduce new_bfd_ref
authorTom Tromey <tom@tromey.com>
Sun, 15 Oct 2017 17:13:29 +0000 (11:13 -0600)
committerTom Tromey <tom@tromey.com>
Fri, 20 Oct 2017 15:01:03 +0000 (09:01 -0600)
This introduces a helper function, new_bfd_ref, that calls gdb_bfd_ref
and returns a gdb_bfd_ref_ptr.  Then it updates several places to use
this.

ChangeLog
2017-10-20  Tom Tromey  <tom@tromey.com>

* exec.c (exec_file_attach): Use new_bfd_ref.
* symfile-mem.c (symbol_file_add_from_memory): Use new_bfd_ref.
* gdb_bfd.c (gdb_bfd_open, gdb_bfd_fopen, gdb_bfd_openr)
(gdb_bfd_openw, gdb_bfd_openr_iovec, gdb_bfd_fdopenr): Use
new_bfd_ref.
* gdb_bfd.h (new_bfd_ref): New function.

gdb/ChangeLog
gdb/exec.c
gdb/gdb_bfd.c
gdb/gdb_bfd.h
gdb/symfile-mem.c

index a5107f7fb6533ff57925e66df6a2d80a72ad2287..81b70c15f7b847739164d4a32f88e945bb59497a 100644 (file)
@@ -1,3 +1,12 @@
+2017-10-20  Tom Tromey  <tom@tromey.com>
+
+       * exec.c (exec_file_attach): Use new_bfd_ref.
+       * symfile-mem.c (symbol_file_add_from_memory): Use new_bfd_ref.
+       * gdb_bfd.c (gdb_bfd_open, gdb_bfd_fopen, gdb_bfd_openr)
+       (gdb_bfd_openw, gdb_bfd_openr_iovec, gdb_bfd_fdopenr): Use
+       new_bfd_ref.
+       * gdb_bfd.h (new_bfd_ref): New function.
+
 2017-10-20  Pedro Alves  <palves@redhat.com>
 
        * main.c (captured_command_loop): Add attribute noinline.
index 2fa543b7a429f03aa140c781054959005c20a616..326cfffe4962b8a8b7ab7448514163e821c026a0 100644 (file)
@@ -248,8 +248,7 @@ exec_file_attach (const char *filename, int from_tty)
   /* First, acquire a reference to the current exec_bfd.  We release
      this at the end of the function; but acquiring it now lets the
      BFD cache return it if this call refers to the same file.  */
-  gdb_bfd_ref (exec_bfd);
-  gdb_bfd_ref_ptr exec_bfd_holder (exec_bfd);
+  gdb_bfd_ref_ptr exec_bfd_holder = new_bfd_ref (exec_bfd);
 
   /* Remove any previous exec file.  */
   exec_close ();
index 29080b852a5fde8eac783bcde1e2307139fabe52..5ba03c17df346129f2824aa63e88583df8c4cb5a 100644 (file)
@@ -427,8 +427,7 @@ gdb_bfd_open (const char *name, const char *target, int fd)
                            host_address_to_string (abfd),
                            bfd_get_filename (abfd));
       close (fd);
-      gdb_bfd_ref (abfd);
-      return gdb_bfd_ref_ptr (abfd);
+      return new_bfd_ref (abfd);
     }
 
   abfd = bfd_fopen (name, target, FOPEN_RB, fd);
@@ -448,8 +447,7 @@ gdb_bfd_open (const char *name, const char *target, int fd)
       *slot = abfd;
     }
 
-  gdb_bfd_ref (abfd);
-  return gdb_bfd_ref_ptr (abfd);
+  return new_bfd_ref (abfd);
 }
 
 /* A helper function that releases any section data attached to the
@@ -778,10 +776,7 @@ gdb_bfd_fopen (const char *filename, const char *target, const char *mode,
 {
   bfd *result = bfd_fopen (filename, target, mode, fd);
 
-  if (result)
-    gdb_bfd_ref (result);
-
-  return gdb_bfd_ref_ptr (result);
+  return new_bfd_ref (result);
 }
 
 /* See gdb_bfd.h.  */
@@ -791,10 +786,7 @@ gdb_bfd_openr (const char *filename, const char *target)
 {
   bfd *result = bfd_openr (filename, target);
 
-  if (result)
-    gdb_bfd_ref (result);
-
-  return gdb_bfd_ref_ptr (result);
+  return new_bfd_ref (result);
 }
 
 /* See gdb_bfd.h.  */
@@ -804,10 +796,7 @@ gdb_bfd_openw (const char *filename, const char *target)
 {
   bfd *result = bfd_openw (filename, target);
 
-  if (result)
-    gdb_bfd_ref (result);
-
-  return gdb_bfd_ref_ptr (result);
+  return new_bfd_ref (result);
 }
 
 /* See gdb_bfd.h.  */
@@ -832,10 +821,7 @@ gdb_bfd_openr_iovec (const char *filename, const char *target,
                                 open_func, open_closure,
                                 pread_func, close_func, stat_func);
 
-  if (result)
-    gdb_bfd_ref (result);
-
-  return gdb_bfd_ref_ptr (result);
+  return new_bfd_ref (result);
 }
 
 /* See gdb_bfd.h.  */
@@ -891,10 +877,7 @@ gdb_bfd_fdopenr (const char *filename, const char *target, int fd)
 {
   bfd *result = bfd_fdopenr (filename, target, fd);
 
-  if (result)
-    gdb_bfd_ref (result);
-
-  return gdb_bfd_ref_ptr (result);
+  return new_bfd_ref (result);
 }
 
 \f
index a36d7821b96ed53cc1be3840789ade7707b07aaa..b1ff857d6dcd553240c9349873fdd0e9ccc29f63 100644 (file)
@@ -68,6 +68,16 @@ struct gdb_bfd_ref_policy
 /* A gdb::ref_ptr that has been specialized for BFD objects.  */
 typedef gdb::ref_ptr<struct bfd, gdb_bfd_ref_policy> gdb_bfd_ref_ptr;
 
+/* A helper function that calls gdb_bfd_ref and returns a
+   gdb_bfd_ref_ptr.  */
+
+static inline gdb_bfd_ref_ptr
+new_bfd_ref (struct bfd *abfd)
+{
+  gdb_bfd_ref (abfd);
+  return gdb_bfd_ref_ptr (abfd);
+}
+
 /* Open a read-only (FOPEN_RB) BFD given arguments like bfd_fopen.
    If NAME starts with TARGET_SYSROOT_PREFIX then the BFD will be
    opened using target fileio operations if necessary.  Returns NULL
index 5338bdb174e3fdd0a275be999481ee79d25b9c27..4ce315d35e2cdb64fd74361d2dabc573a5619625 100644 (file)
@@ -101,9 +101,8 @@ symbol_file_add_from_memory (struct bfd *templ, CORE_ADDR addr,
   if (nbfd == NULL)
     error (_("Failed to read a valid object file image from memory."));
 
-  gdb_bfd_ref (nbfd);
   /* Manage the new reference for the duration of this function.  */
-  gdb_bfd_ref_ptr nbfd_holder (nbfd);
+  gdb_bfd_ref_ptr nbfd_holder = new_bfd_ref (nbfd);
 
   xfree (bfd_get_filename (nbfd));
   if (name == NULL)
This page took 0.055704 seconds and 4 git commands to generate.