From: Pedro Alves Date: Wed, 14 Apr 2010 17:26:11 +0000 (+0000) Subject: * objfiles.h (gdb_bfd_close_or_warn): Declare. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=516ba659387ce98c4ff28b88a7f00f5003cac9eb;p=binutils-gdb.git * 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. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 6a6dd9f66fc..7749adfd4aa 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,12 @@ +2010-04-14 Pedro Alves + + * 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 Pedro Alves diff --git a/gdb/corelow.c b/gdb/corelow.c index 039573fa110..ead2377e89e 100644 --- a/gdb/corelow.c +++ b/gdb/corelow.c @@ -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; } diff --git a/gdb/elfread.c b/gdb/elfread.c index 38b6208d286..42a1b738e33 100644 --- a/gdb/elfread.c +++ b/gdb/elfread.c @@ -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); diff --git a/gdb/exec.c b/gdb/exec.c index 51b33a5512a..89511bd296d 100644 --- a/gdb/exec.c +++ b/gdb/exec.c @@ -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); } diff --git a/gdb/objfiles.c b/gdb/objfiles.c index 82ef45c9347..5be5c6a46ff 100644 --- a/gdb/objfiles.c +++ b/gdb/objfiles.c @@ -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); } diff --git a/gdb/objfiles.h b/gdb/objfiles.h index df78c6dc761..76410fd447c 100644 --- a/gdb/objfiles.h +++ b/gdb/objfiles.h @@ -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); /* Traverse all object files in the current program space.