bfdtest1 loop check

Message ID Z3U3lLCWrB61VbHF@squeak.grove.modra.org
State New
Headers
Series bfdtest1 loop check |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_binutils_build--master-arm fail Patch failed to apply
linaro-tcwg-bot/tcwg_binutils_build--master-aarch64 fail Patch failed to apply

Commit Message

Alan Modra Jan. 1, 2025, 12:39 p.m. UTC
  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
  

Patch

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--;
     }