Cleanup bfd_close() cleanups.
authorAndrew Cagney <cagney@redhat.com>
Tue, 16 May 2000 02:43:39 +0000 (02:43 +0000)
committerAndrew Cagney <cagney@redhat.com>
Tue, 16 May 2000 02:43:39 +0000 (02:43 +0000)
gdb/ChangeLog
gdb/corelow.c
gdb/defs.h
gdb/remote-e7000.c
gdb/remote-udi.c
gdb/sparcl-tdep.c
gdb/symfile.c
gdb/utils.c

index f8342fa..085add8 100644 (file)
@@ -1,3 +1,13 @@
+Tue May 16 10:54:55 2000  Andrew Cagney  <cagney@b1.cygnus.com>
+
+       * defs.h (make_cleanup_bfd_close): Add declaration.
+       * utils.c (do_bfd_close_cleanup, make_cleanup_bfd_close): New
+       functions.
+
+       * symfile.c (generic_load), sparcl-tdep.c (download), remote-udi.c
+       (download), remote-e7000.c (e7000_load), corelow.c (core_open,
+       core_file_to_sym_file): Replace calls to make_cleanup.
+
 Mon May 15 16:50:45 2000  Andrew Cagney  <cagney@b1.cygnus.com>
 
        * TODO: Add notes on register cache.
index adcfe90..6cdf0d7 100644 (file)
@@ -295,7 +295,7 @@ core_open (filename, from_tty)
       /* FIXME: should be checking for errors from bfd_close (for one thing,
          on error it does not free all the storage associated with the
          bfd).  */
-      make_cleanup ((make_cleanup_func) bfd_close, temp_bfd);
+      make_cleanup_bfd_close (temp_bfd);
       error ("\"%s\" is not a core dump: %s",
             filename, bfd_errmsg (bfd_get_error ()));
     }
@@ -493,7 +493,7 @@ core_file_to_sym_file (core)
       /* FIXME: should be checking for errors from bfd_close (for one thing,
          on error it does not free all the storage associated with the
          bfd).  */
-      make_cleanup ((make_cleanup_func) bfd_close, temp_bfd);
+      make_cleanup_bfd_close (temp_bfd);
       error ("\"%s\" is not a core dump: %s",
             core, bfd_errmsg (bfd_get_error ()));
     }
index aa8987d..390da35 100644 (file)
@@ -332,6 +332,8 @@ extern struct cleanup *make_cleanup_freeargv (char **);
 struct ui_file;
 extern struct cleanup *make_cleanup_ui_file_delete (struct ui_file *);
 
+extern struct cleanup *make_cleanup_bfd_close (bfd *abfd);
+
 extern struct cleanup *make_final_cleanup (make_cleanup_ftype *, void *);
 
 extern struct cleanup *make_my_cleanup (struct cleanup **,
index c5ced87..608f116 100644 (file)
@@ -1580,7 +1580,7 @@ e7000_load (args, from_tty)
       perror_with_name (filename);
       return;
     }
-  old_chain = make_cleanup ((make_cleanup_func) bfd_close, pbfd);
+  old_chain = make_cleanup_bfd_close (pbfd);
 
   if (!bfd_check_format (pbfd, bfd_object))
     error ("\"%s\" is not an object file: %s", filename,
index 12590f8..9a377a0 100644 (file)
@@ -1162,7 +1162,7 @@ download (load_arg_string, from_tty)
   /* FIXME: should be checking for errors from bfd_close (for one thing,
      on error it does not free all the storage associated with the
      bfd).  */
-  make_cleanup ((make_cleanup_func) bfd_close, pbfd);
+  make_cleanup_bfd_close (pbfd);
 
   QUIT;
   immediate_quit++;
index b6ea064..91499af 100644 (file)
@@ -614,7 +614,7 @@ download (target_name, args, from_tty, write_routine, start_routine)
       perror_with_name (filename);
       return;
     }
-  old_chain = make_cleanup ((make_cleanup_func) bfd_close, pbfd);
+  old_chain = make_cleanup_bfd_close (pbfd);
 
   if (!bfd_check_format (pbfd, bfd_object))
     error ("\"%s\" is not an object file: %s", filename,
index b01fe33..8fc4fe7 100644 (file)
@@ -1230,7 +1230,7 @@ generic_load (char *args, int from_tty)
   /* FIXME: should be checking for errors from bfd_close (for one thing,
      on error it does not free all the storage associated with the
      bfd).  */
-  make_cleanup ((make_cleanup_func) bfd_close, loadfile_bfd);
+  make_cleanup_bfd_close (loadfile_bfd);
 
   if (!bfd_check_format (loadfile_bfd, bfd_object))
     {
index aa1fccd..3fd055c 100644 (file)
@@ -204,6 +204,18 @@ make_cleanup_freeargv (arg)
 }
 
 static void
+do_bfd_close_cleanup (void *arg)
+{
+  bfd_close (arg);
+}
+
+struct cleanup *
+make_cleanup_bfd_close (bfd *abfd)
+{
+  return make_cleanup (do_bfd_close_cleanup, abfd);
+}
+
+static void
 do_ui_file_delete (void *arg)
 {
   ui_file_delete (arg);