* symfile.c (reread_symbols): Include bfd_errmsg string in error
authorJim Kingdon <jkingdon@engr.sgi.com>
Sat, 15 Oct 1994 18:28:35 +0000 (18:28 +0000)
committerJim Kingdon <jkingdon@engr.sgi.com>
Sat, 15 Oct 1994 18:28:35 +0000 (18:28 +0000)
message if bfd_close fails.
* exec.c (exec_close), solib.c (clear_solib), corelow.c
(core_close), objfiles.c (free_objfile), irix5-nat.c
(clear_solib), osfsolib.c (clear_solib), remote-utils.c
(gr_load_image): Check for errors from bfd_close.
* solib.c (look_for_base), remote-utils.c (gr_load_image),
remote-udi.c (download), corelow.c (core_open), symfile.c
(symfile_bfd_open), symfile.c (generic_load): Add comment
regarding error from bfd_close.
* remote-udi.c (download), remote-utils.c (gr_load_image): Add
comment about bogus handling of errors from bfd_openr.
* exec.c (exec_close): Add comment regarding memory leak and
dangling reference to vp->name.

gdb/ChangeLog
gdb/corelow.c
gdb/irix5-nat.c
gdb/objfiles.c
gdb/osfsolib.c
gdb/remote-utils.c

index e6309872f853662374cc02568328b1c57467acf4..9ec1604e7e6d7e442fa4bde6a8a2d3336a90c5a2 100644 (file)
@@ -7,8 +7,8 @@ Fri Oct 14 10:29:08 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)
        message if bfd_close fails.
        * exec.c (exec_close), solib.c (clear_solib), corelow.c
        (core_close), objfiles.c (free_objfile), irix5-nat.c
-       (clear_solib), remote-utils.c (gr_load_image):
-       Check for errors from bfd_close.
+       (clear_solib), osfsolib.c (clear_solib), remote-utils.c
+       (gr_load_image): Check for errors from bfd_close.
        * solib.c (look_for_base), remote-utils.c (gr_load_image),
        remote-udi.c (download), corelow.c (core_open), symfile.c
        (symfile_bfd_open), symfile.c (generic_load): Add comment
index 7059358e40214269cfd0d9223e236b6e9cbc5ef7..842e2fe2e16444e7d3ceae4e359f0abad45a27e9 100644 (file)
@@ -54,11 +54,15 @@ static void
 core_close (quitting)
      int quitting;
 {
+  char *name;
   inferior_pid = 0;            /* Avoid confusion from thread stuff */
 
   if (core_bfd) {
-    free (bfd_get_filename (core_bfd));
-    bfd_close (core_bfd);
+    name = bfd_get_filename (core_bfd);
+    if (!bfd_close (core_bfd))
+      warning ("cannot close \"%s\": %s",
+              bfd_filename, bfd_errmsg (bfd_get_error ()));
+    free (name);
     core_bfd = NULL;
 #ifdef CLEAR_SOLIB
     CLEAR_SOLIB ();
@@ -154,6 +158,9 @@ core_open (filename, from_tty)
   if (!bfd_check_format (temp_bfd, bfd_core))
     {
       /* Do it after the err msg */
+      /* 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 (bfd_close, temp_bfd);
       error ("\"%s\" is not a core dump: %s", filename, bfd_errmsg(bfd_get_error ()));
     }
index f4137383b9195d75671e498fa1e361753d93c187..110af26c84de103e519ffb8f4cd74767e9f68c0b 100644 (file)
@@ -792,7 +792,9 @@ clear_solib()
       if (so_list_head -> abfd)
        {
          bfd_filename = bfd_get_filename (so_list_head -> abfd);
-         bfd_close (so_list_head -> abfd);
+         if (!bfd_close (so_list_head -> abfd))
+           warning ("cannot close \"%s\": %s",
+                    bfd_filename, bfd_errmsg (bfd_get_error ()));
        }
       else
        /* This happens for the executable on SVR4.  */
index 22c96ed27d78103379fdc5ce2096f2ff90cbe063..5cd01e5210e2223897d95c71882f0a079c5be7ac 100644 (file)
@@ -341,7 +341,9 @@ free_objfile (objfile)
   if (objfile -> obfd != NULL)
     {
       char *name = bfd_get_filename (objfile->obfd);
-      bfd_close (objfile -> obfd);
+      if (!bfd_close (objfile -> obfd))
+       warning ("cannot close \"%s\": %s",
+                name, bfd_errmsg (bfd_get_error ()));
       free (name);
     }
 
index e42dec32a0593658c3b2125d34f8292c3c6f9ef8..b7bb7aae74e910f3d0731d4d6d69d472b8cf1d53 100644 (file)
@@ -679,7 +679,9 @@ clear_solib()
       if (so_list_head -> abfd)
        {
          bfd_filename = bfd_get_filename (so_list_head -> abfd);
-         bfd_close (so_list_head -> abfd);
+         if (!bfd_close (so_list_head -> abfd))
+           warning ("cannot close \"%s\": %s",
+                    bfd_filename, bfd_errmsg (bfd_get_error ()));
        }
       else
        /* This happens for the executable on SVR4.  */
index ba7d29712d9fc7c14c8f443358bffbfc5e0200f7..f1e949a8b293ae81dcf3d09e16ab4c557506f7a7 100644 (file)
@@ -648,8 +648,13 @@ gr_load_image (args, fromtty)
   abfd = bfd_openr (args, (char *) 0);
 
   if (!abfd)
+    /* FIXME: should be using bfd_errmsg, not assuming it was
+       bfd_error_system_call.  */
     perror_with_name (args);
 
+  /* 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).  */
   old_cleanups = make_cleanup (bfd_close, abfd);
 
   QUIT;
@@ -682,7 +687,9 @@ gr_load_image (args, fromtty)
 
   free (buffer);
   write_pc (bfd_get_start_address (abfd));
-  bfd_close (abfd);
+  if (!bfd_close (abfd))
+    warning ("cannot close \"%s\": %s",
+            args, bfd_errmsg (bfd_get_error ()));
   discard_cleanups (old_cleanups);
 }