From 49163945f761efce440545cdbb927fe6a692a227 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Mon, 14 Apr 1997 16:37:29 +0000 Subject: [PATCH] * binutils-all/ar.exp (long_filenames): Check for a file system with a 14 character file name length limit. --- binutils/testsuite/binutils-all/ar.exp | 171 +++++++++++++++++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100644 binutils/testsuite/binutils-all/ar.exp diff --git a/binutils/testsuite/binutils-all/ar.exp b/binutils/testsuite/binutils-all/ar.exp new file mode 100644 index 0000000..b4f3013 --- /dev/null +++ b/binutils/testsuite/binutils-all/ar.exp @@ -0,0 +1,171 @@ +# Copyright (C) 1995, 1997 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Please email any bugs, comments, and/or additions to this file to: +# bug-dejagnu@prep.ai.mit.edu + +# Written by Ian Lance Taylor + +if {[which $AR] == 0} then { + perror "$AR does not exist" + return +} + +# send_user "Version [binutil_version $AR]" + +# Test long file name support + +proc long_filenames { } { + global AR + global host_triplet + + set testname "ar long file names" + + set n1 "abcdefghijklmnopqrstuvwxyz1" + set n2 "abcdefghijklmnopqrstuvwxyz2" + + binutils_remove tmpdir/$n1 + set status [catch "set f [open tmpdir/$n1 w]" errs] + if { $status != 0 } { + verbose -log "open tmpdir/$n1 returned $errs" + unsupported $testname + return + } + puts $f "first" + close $f + + binutils_remove tmpdir/$n2 + set status [catch "set f [open tmpdir/$n2 w]" errs] + if { $status != 0 } { + verbose -log "open tmpdir/$n2 returned $errs" + unsupported $testname + return + } + puts $f "second" + close $f + + # Some file systems truncate file names at 14 characters, which + # makes it impossible to run this test. Check for that now. + set f [open tmpdir/$n1 r] + gets $f string + close $f + if ![string match "first" $string] { + verbose -log "reading tmpdir/$n1 returned $string" + unsupported $testname + return + } + + binutils_remove tmpdir/artest.a + set got [binutils_run $AR "rc tmpdir/artest.a tmpdir/$n1 tmpdir/$n2"] + if ![string match "" $got] { + fail $testname + return + } + + binutils_remove tmpdir/$n1 + binutils_remove tmpdir/$n2 + + set got [binutils_run $AR "t tmpdir/artest.a"] + if ![string match "$n1*$n2" $got] { + fail $testname + return + } + + verbose -log "cd tmpdir; $AR x artest.a" + catch "exec /bin/sh -c \"cd tmpdir; $AR x artest.a\"" exec_output + set exec_output [prune_warnings $exec_output] + if ![string match "" $exec_output] { + verbose -log $exec_output + fail $testname + return + } + + if ![file exists tmpdir/$n1] { + verbose -log "tmpdir/$n1 does not exist" + fail $testname + return + } + if ![file exists tmpdir/$n2] { + verbose -log "tmpdir/$n2 does not exist" + fail $testname + return + } + + set f [open tmpdir/$n1 r] + if { [gets $f line] == -1 || $line != "first" } { + verbose -log "tmpdir/$n1 contents:" + verbose -log "$line" + close $f + fail $testname + return + } + close $f + + set f [open tmpdir/$n2 r] + if { [gets $f line] == -1 || $line != "second" } { + verbose -log "tmpdir/$n2 contents:" + verbose -log "$line" + close $f + fail $testname + return + } + close $f + + pass $testname +} + +# Test building the symbol table. + +proc symbol_table { } { + global AR + global AS + global NM + global srcdir + global subdir + + set testname "ar symbol table" + + if ![binutils_assemble $AS $srcdir/$subdir/bintest.s tmpdir/bintest.o] { + unresolved $testname + return + } + + binutils_remove tmpdir/artest.a + + set got [binutils_run $AR "rc tmpdir/artest.a tmpdir/bintest.o"] + if ![string match "" $got] { + fail $testname + return + } + + set got [binutils_run $NM "--print-armap tmpdir/artest.a"] + if { ![string match "*text_symbol in bintest.o*" $got] \ + || ![string match "*data_symbol in bintest.o*" $got] \ + || ![string match "*common_symbol in bintest.o*" $got] \ + || [string match "*static_text_symbol in bintest.o*" $got] \ + || [string match "*static_data_symbol in bintest.o*" $got] \ + || [string match "*external_symbol in bintest.o*" $got] } { + fail $testname + return + } + + pass $testname +} + +# Run the tests. + +long_filenames +symbol_table -- 2.7.4