diff options
author | Jim Kingdon <jkingdon@engr.sgi.com> | 1994-10-15 18:28:35 +0000 |
---|---|---|
committer | Jim Kingdon <jkingdon@engr.sgi.com> | 1994-10-15 18:28:35 +0000 |
commit | 9de0904cce9f2bd32549eade2917c1d2b7256e14 (patch) | |
tree | 4751bae933df4c23dcb7e4ce628244dcb45ef532 | |
parent | e080a68fce6b8e73c9869a6016d726f820dee7fc (diff) | |
download | gdb-9de0904cce9f2bd32549eade2917c1d2b7256e14.zip gdb-9de0904cce9f2bd32549eade2917c1d2b7256e14.tar.gz gdb-9de0904cce9f2bd32549eade2917c1d2b7256e14.tar.bz2 |
* symfile.c (reread_symbols): Include bfd_errmsg string in error
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.
-rw-r--r-- | gdb/ChangeLog | 4 | ||||
-rw-r--r-- | gdb/corelow.c | 11 | ||||
-rw-r--r-- | gdb/irix5-nat.c | 4 | ||||
-rw-r--r-- | gdb/objfiles.c | 4 | ||||
-rw-r--r-- | gdb/osfsolib.c | 4 | ||||
-rw-r--r-- | gdb/remote-utils.c | 9 |
6 files changed, 28 insertions, 8 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index e630987..9ec1604 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -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 diff --git a/gdb/corelow.c b/gdb/corelow.c index 7059358..842e2fe2 100644 --- a/gdb/corelow.c +++ b/gdb/corelow.c @@ -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 ())); } diff --git a/gdb/irix5-nat.c b/gdb/irix5-nat.c index f413738..110af26 100644 --- a/gdb/irix5-nat.c +++ b/gdb/irix5-nat.c @@ -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. */ diff --git a/gdb/objfiles.c b/gdb/objfiles.c index 22c96ed..5cd01e5 100644 --- a/gdb/objfiles.c +++ b/gdb/objfiles.c @@ -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); } diff --git a/gdb/osfsolib.c b/gdb/osfsolib.c index e42dec3..b7bb7aa 100644 --- a/gdb/osfsolib.c +++ b/gdb/osfsolib.c @@ -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. */ diff --git a/gdb/remote-utils.c b/gdb/remote-utils.c index ba7d2971..f1e949a 100644 --- a/gdb/remote-utils.c +++ b/gdb/remote-utils.c @@ -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); } |