* objfiles.h (gdb_bfd_close_or_warn): Declare.
authorPedro Alves <palves@redhat.com>
Wed, 14 Apr 2010 17:26:11 +0000 (17:26 +0000)
committerPedro Alves <palves@redhat.com>
Wed, 14 Apr 2010 17:26:11 +0000 (17:26 +0000)
* objfiles.c (gdb_bfd_close_or_warn): New.
* corelow.c: Include objfiles.h
(core_close): Use gdb_bfd_close_or_warn.
* elfread.c (build_id_verify): Ditto.
* exec.c (exec_close, exec_close_1): Ditto.

gdb/ChangeLog
gdb/corelow.c
gdb/elfread.c
gdb/exec.c
gdb/objfiles.c
gdb/objfiles.h

index 6a6dd9f66fc2142bb27c8df8c2959e0050928211..7749adfd4aad6c571f5f72308b62b0091981e12d 100644 (file)
@@ -1,3 +1,12 @@
+2010-04-14  Pedro Alves  <pedro@codesourcery.com>
+
+       * objfiles.h (gdb_bfd_close_or_warn): Declare.
+       * objfiles.c (gdb_bfd_close_or_warn): New.
+       * corelow.c: Include objfiles.h
+       (core_close): Use gdb_bfd_close_or_warn.
+       * elfread.c (build_id_verify): Ditto.
+       * exec.c (exec_close, exec_close_1): Ditto.
+
 2010-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
            Pedro Alves  <pedro@codesourcery.com>
 
index 039573fa1105e04d8c04eadaa33243ab124f8e57..ead2377e89e8148402b84d13cac6c9616eb88af0 100644 (file)
@@ -46,6 +46,7 @@
 #include "solib.h"
 #include "filenames.h"
 #include "progspace.h"
+#include "objfiles.h"
 
 
 #ifndef O_LARGEFILE
@@ -221,9 +222,7 @@ core_close (int quitting)
       core_has_fake_pid = 0;
 
       name = bfd_get_filename (core_bfd);
-      if (!bfd_close (core_bfd))
-       warning (_("cannot close \"%s\": %s"),
-                name, bfd_errmsg (bfd_get_error ()));
+      gdb_bfd_close_or_warn (core_bfd);
       xfree (name);
       core_bfd = NULL;
     }
index 38b6208d28677002979732475c473f2ecd6eee8d..42a1b738e33a0338b3eb36d90ba0e562c4346a5b 100644 (file)
@@ -618,9 +618,7 @@ build_id_verify (const char *filename, struct build_id *check)
   else
     retval = 1;
 
-  if (!bfd_close (abfd))
-    warning (_("cannot close \"%s\": %s"), filename,
-            bfd_errmsg (bfd_get_error ()));
+  gdb_bfd_close_or_warn (abfd);
 
   xfree (found);
 
index 51b33a5512a1bd2ca353f04fe6992184530ec618..89511bd296d1c2a2dec29b515d73fa259661707f 100644 (file)
@@ -101,9 +101,7 @@ exec_close (void)
       bfd *abfd = exec_bfd;
       char *name = bfd_get_filename (abfd);
 
-      if (!bfd_close (abfd))
-       warning (_("cannot close \"%s\": %s"),
-                name, bfd_errmsg (bfd_get_error ()));
+      gdb_bfd_close_or_warn (abfd);
       xfree (name);
 
       /* Removing target sections may close the exec_ops target.
@@ -141,9 +139,7 @@ exec_close_1 (int quitting)
        }
       else if (vp->bfd != exec_bfd)
        /* FIXME-leak: We should be freeing vp->name too, I think.  */
-       if (!bfd_close (vp->bfd))
-         warning (_("cannot close \"%s\": %s"),
-                  vp->name, bfd_errmsg (bfd_get_error ()));
+       gdb_bfd_close_or_warn (vp->bfd);
 
       xfree (vp);
     }
index 82ef45c934714499c8ac30ce2cb2587a5456f508..5be5c6a46ff398bed16da604ea8074715b462afd 100644 (file)
@@ -1471,6 +1471,23 @@ objfiles_changed (void)
   get_objfile_pspace_data (current_program_space)->objfiles_changed_p = 1;
 }
 
+/* Close ABFD, and warn if that fails.  */
+
+int
+gdb_bfd_close_or_warn (struct bfd *abfd)
+{
+  int ret;
+  char *name = bfd_get_filename (abfd);
+
+  ret = bfd_close (abfd);
+
+  if (!ret)
+    warning (_("cannot close \"%s\": %s"),
+            name, bfd_errmsg (bfd_get_error ()));
+
+  return ret;
+}
+
 /* Add reference to ABFD.  Returns ABFD.  */
 struct bfd *
 gdb_bfd_ref (struct bfd *abfd)
@@ -1519,9 +1536,7 @@ gdb_bfd_unref (struct bfd *abfd)
   bfd_usrdata (abfd) = NULL;  /* Paranoia.  */
 
   name = bfd_get_filename (abfd);
-  if (!bfd_close (abfd))
-    warning (_("cannot close \"%s\": %s"),
-            name, bfd_errmsg (bfd_get_error ()));
+  gdb_bfd_close_or_warn (abfd);
   xfree (name);
 }
 
index df78c6dc761606198bd72b9c26e5562a220e99e0..76410fd447cde02c0dac691eb143ddfc05f9b052 100644 (file)
@@ -533,6 +533,7 @@ extern void *objfile_data (struct objfile *objfile,
 
 extern struct bfd *gdb_bfd_ref (struct bfd *abfd);
 extern void gdb_bfd_unref (struct bfd *abfd);
+extern int gdb_bfd_close_or_warn (struct bfd *abfd);
 \f
 
 /* Traverse all object files in the current program space.
This page took 0.032387 seconds and 4 git commands to generate.