aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Kingdon <jkingdon@engr.sgi.com>1994-10-15 18:28:35 +0000
committerJim Kingdon <jkingdon@engr.sgi.com>1994-10-15 18:28:35 +0000
commit9de0904cce9f2bd32549eade2917c1d2b7256e14 (patch)
tree4751bae933df4c23dcb7e4ce628244dcb45ef532
parente080a68fce6b8e73c9869a6016d726f820dee7fc (diff)
downloadfsf-binutils-gdb-9de0904cce9f2bd32549eade2917c1d2b7256e14.zip
fsf-binutils-gdb-9de0904cce9f2bd32549eade2917c1d2b7256e14.tar.gz
fsf-binutils-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/ChangeLog4
-rw-r--r--gdb/corelow.c11
-rw-r--r--gdb/irix5-nat.c4
-rw-r--r--gdb/objfiles.c4
-rw-r--r--gdb/osfsolib.c4
-rw-r--r--gdb/remote-utils.c9
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);
}