From 3f3c36087ec4667e285b487e668da73614993828 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Sat, 23 May 2020 08:05:14 +0930 Subject: ar many_files test This tests for the issue fixed with git commit 0490dd41ae. * testsuite/binutils-all/ar.exp (many_files): New test. --- binutils/ChangeLog | 4 +++ binutils/testsuite/binutils-all/ar.exp | 56 ++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/binutils/ChangeLog b/binutils/ChangeLog index a6194bda0d2..f607c6369c8 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,7 @@ +2020-05-23 Alan Modra + + * testsuite/binutils-all/ar.exp (many_files): New test. + 2020-05-21 Alan Modra * addr2line.c: Replace "if (x) free (x)" with "free (x)" throughout. diff --git a/binutils/testsuite/binutils-all/ar.exp b/binutils/testsuite/binutils-all/ar.exp index 8d1f0aabea1..bf30b016c7b 100644 --- a/binutils/testsuite/binutils-all/ar.exp +++ b/binutils/testsuite/binutils-all/ar.exp @@ -649,6 +649,61 @@ proc extract_an_element { } { pass $testname } +proc many_files { } { + global AR + global AS + global srcdir + global subdir + + set testname "ar many files" + + set ofiles {} + set max_file 150 + for { set i 0 } { $i < $max_file } { incr i } { + set sfile "tmpdir/d-$i.s" + if [catch { set ofd [open $sfile w] } x] { + perror "$x" + unresolved $testname + return + } + + puts $ofd " .globl data_sym$i" + puts $ofd " .data" + puts $ofd "data_sym$i:" + puts $ofd " .long $i" + close $ofd + + set ofile "tmpdir/d-$i.o" + if ![binutils_assemble $sfile $ofile] { + unresolved $testname + return + } + + set objfile $ofile + if [is_remote host] { + remote_file host delete $sfile + set objfile [remote_download host $ofile] + remote_file build delete $ofile + } + remote_file build delete $sfile + lappend ofiles $objfile + } + + set archive tmpdir/many.a + remote_file host delete $archive + + set got [binutils_run $AR "cr $archive $ofiles"] + if ![string match "" $got] { + fail $testname + return + } + + remote_file host delete $archive + eval remote_file host delete $ofiles + + pass $testname +} + # Run the tests. # Only run the bfdtest checks if the programs exist. Since these @@ -670,6 +725,7 @@ delete_an_element move_an_element empty_archive extract_an_element +many_files if { [is_elf_format] && [supports_gnu_unique] } { unique_symbol -- cgit v1.2.1