aboutsummaryrefslogtreecommitdiff
path: root/gdb/rs6000-nat.c
diff options
context:
space:
mode:
authorJoel Brobecker <brobecker@gnat.com>2012-10-02 15:05:42 +0000
committerJoel Brobecker <brobecker@gnat.com>2012-10-02 15:05:42 +0000
commit8f0ee2eb7cf9df1a173b72f1542a9b555d7b5cb8 (patch)
tree0c0f339cb57aeaa6d9bee6b2df6e545dbac1a5c5 /gdb/rs6000-nat.c
parent547c8182c5cb80c3c3eebf854fd77542bf401e6e (diff)
downloadgdb-8f0ee2eb7cf9df1a173b72f1542a9b555d7b5cb8.zip
gdb-8f0ee2eb7cf9df1a173b72f1542a9b555d7b5cb8.tar.gz
gdb-8f0ee2eb7cf9df1a173b72f1542a9b555d7b5cb8.tar.bz2
gdb_bfd_unref failed assertion on AIX.
Trying to run any program on AIX triggers a failed assertion: (gdb) run Starting program: /[...]/simple_main /[...]/gdb_bfd.c:288: internal-error: gdb_bfd_unref: Assertion `gdata->refc >= 1' failed. A problem internal to GDB has been detected, further debugging may prove unreliable. Quit this debugging session? (y or n) What happens is that we have a loop where we forgot to update the value of "last", resulting in the loop unref'ing the same BFD over and over again. We bomb the second time around, when triggering an assertion on the ref counter. gdb/ChangeLog: * rs6000-nat.c (add_vmap): Set "last" to "next" after having unref'ed it.
Diffstat (limited to 'gdb/rs6000-nat.c')
-rw-r--r--gdb/rs6000-nat.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/gdb/rs6000-nat.c b/gdb/rs6000-nat.c
index 3eb2cd7..2d2df5b 100644
--- a/gdb/rs6000-nat.c
+++ b/gdb/rs6000-nat.c
@@ -771,6 +771,7 @@ add_vmap (LdInfo *ldi)
next = gdb_bfd_openr_next_archived_file (abfd, last);
gdb_bfd_unref (last);
+ last = next;
}
if (!last)