aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2025-01-01 22:51:44 +1030
committerAlan Modra <amodra@gmail.com>2025-01-01 22:51:44 +1030
commitc5e10fb2eb81573f004aff454a81b2ef4f06a3ae (patch)
tree9aa2101699682e4325bd7cba65ea6a680862d02b
parentbc67f5df706ff54348b386669cadd686cdae0e71 (diff)
downloadgdb-c5e10fb2eb81573f004aff454a81b2ef4f06a3ae.zip
gdb-c5e10fb2eb81573f004aff454a81b2ef4f06a3ae.tar.gz
gdb-c5e10fb2eb81573f004aff454a81b2ef4f06a3ae.tar.bz2
bfdtest1 loop check
Add a check that next_archived_file doesn't return the same element. Seen with the following, which I think shows a bug with "ar r" and thin archives as you get two copies of artest.a in artest2.a. $ rm tmpdir/artest* $ ./ar rc tmpdir/artest.a tmpdir/bintest.o $ ./ar rcT tmpdir/artest2.a tmpdir/artest.a $ ./bfdtest1 tmpdir/artest.a $ ./bfdtest1 tmpdir/artest2.a $ ./ar rcT tmpdir/artest2.a tmpdir/artest.a $ ./bfdtest1 tmpdir/artest2.a oops: next_archived_file
-rw-r--r--binutils/bfdtest1.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/binutils/bfdtest1.c b/binutils/bfdtest1.c
index 9714998..ef68732 100644
--- a/binutils/bfdtest1.c
+++ b/binutils/bfdtest1.c
@@ -53,6 +53,8 @@ main (int argc, char **argv)
last = next)
{
next = bfd_openr_next_archived_file (archive, last);
+ if (next == last)
+ die ("next_archived_file");
bfd_close (last);
count++;
}
@@ -62,6 +64,8 @@ main (int argc, char **argv)
last = next)
{
next = bfd_openr_next_archived_file (archive, last);
+ if (next == last)
+ die ("next_archived_file");
bfd_close (last);
count--;
}