From: Alan Modra Date: Wed, 1 Jan 2025 12:21:44 +0000 (+1030) Subject: bfdtest1 loop check X-Git-Tag: binutils-2_44~290 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c5e10fb2eb81573f004aff454a81b2ef4f06a3ae;p=thirdparty%2Fbinutils-gdb.git 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 --- diff --git a/binutils/bfdtest1.c b/binutils/bfdtest1.c index 9714998fa6b..ef68732e37f 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--; }