aboutsummaryrefslogtreecommitdiff
path: root/gdb/exec.c
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2012-07-23 18:54:26 +0000
committerTom Tromey <tromey@redhat.com>2012-07-23 18:54:26 +0000
commitda1cc82f30edcf2d49dd89911fc471a5e07d3d94 (patch)
treece59f0809b5855b933aa977cad83177573e01bec /gdb/exec.c
parent6c18f3e0f4d7e0399b39a0d554b5152af71a94e2 (diff)
downloadgdb-da1cc82f30edcf2d49dd89911fc471a5e07d3d94.zip
gdb-da1cc82f30edcf2d49dd89911fc471a5e07d3d94.tar.gz
gdb-da1cc82f30edcf2d49dd89911fc471a5e07d3d94.tar.bz2
* rs6000-nat.c (add_vmap): Rewrite archive loop. Fix reference
counting. * exec.c (exec_close_1): Unconditionally release vmap's BFD. (map_vmap): Acquire a reference to the BFD.
Diffstat (limited to 'gdb/exec.c')
-rw-r--r--gdb/exec.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/gdb/exec.c b/gdb/exec.c
index 9b95e02..e076609 100644
--- a/gdb/exec.c
+++ b/gdb/exec.c
@@ -127,16 +127,13 @@ exec_close_1 (int quitting)
vp = nxt;
nxt = vp->nxt;
- /* if there is an objfile associated with this bfd,
- free_objfile() will do proper cleanup of objfile *and* bfd. */
-
if (vp->objfile)
{
free_objfile (vp->objfile);
need_symtab_cleanup = 1;
}
- else if (vp->bfd != exec_bfd)
- gdb_bfd_unref (vp->bfd);
+
+ gdb_bfd_unref (vp->bfd);
xfree (vp);
}
@@ -548,6 +545,7 @@ map_vmap (bfd *abfd, bfd *arch)
memset ((char *) vp, '\0', sizeof (*vp));
vp->nxt = 0;
vp->bfd = abfd;
+ gdb_bfd_ref (abfd);
vp->name = bfd_get_filename (arch ? arch : abfd);
vp->member = arch ? bfd_get_filename (abfd) : "";