diff options
author | Alan Modra <amodra@gmail.com> | 2020-05-23 08:05:14 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2020-05-23 14:56:07 +0930 |
commit | 3f3c36087ec4667e285b487e668da73614993828 (patch) | |
tree | 0f0787a305a31d9ebc2cc11a03c554836390e549 /binutils | |
parent | a3d674e0226291747cbfac9c73250e5193c06a57 (diff) | |
download | gdb-3f3c36087ec4667e285b487e668da73614993828.zip gdb-3f3c36087ec4667e285b487e668da73614993828.tar.gz gdb-3f3c36087ec4667e285b487e668da73614993828.tar.bz2 |
ar many_files test
This tests for the issue fixed with git commit 0490dd41ae.
* testsuite/binutils-all/ar.exp (many_files): New test.
Diffstat (limited to 'binutils')
-rw-r--r-- | binutils/ChangeLog | 4 | ||||
-rw-r--r-- | binutils/testsuite/binutils-all/ar.exp | 56 |
2 files changed, 60 insertions, 0 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog index a6194bd..f607c63 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,7 @@ +2020-05-23 Alan Modra <amodra@gmail.com> + + * testsuite/binutils-all/ar.exp (many_files): New test. + 2020-05-21 Alan Modra <amodra@gmail.com> * 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 8d1f0aa..bf30b01 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 |