From c5e10fb2eb81573f004aff454a81b2ef4f06a3ae Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Wed, 1 Jan 2025 22:51:44 +1030 Subject: 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 --- binutils/bfdtest1.c | 4 ++++ 1 file changed, 4 insertions(+) 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--; } -- cgit v1.1