From 599fdf0ca5a98ac256321e68ab5af11950263fea Mon Sep 17 00:00:00 2001 From: Hans-Peter Nilsson Date: Thu, 7 Oct 2010 21:46:51 +0000 Subject: [PATCH] re PR libstdc++/45841 (r164529 cris-elf libstdc++ 27_io/basic_filebuf/seekoff/char/2-io.cc) PR libstdc++/45841 * testsuite/lib/libstdc++.exp (check_v3_target_fileio): Rewrite to use an actual testsuite file and machinery, not ".". Specifically check that incorrectly seeking backwards from 0 yields an error, and that reading, seeking backwards and reading again works. From-SVN: r165136 --- libstdc++-v3/ChangeLog | 6 ++++++ libstdc++-v3/testsuite/lib/libstdc++.exp | 23 ++++++++++++++++------- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 99c840d532c..10939d8f0dc 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,11 @@ 2010-10-07 Hans-Peter Nilsson + PR libstdc++/45841 + * testsuite/lib/libstdc++.exp (check_v3_target_fileio): Rewrite to + use an actual testsuite file and machinery, not ".". Specifically + check that incorrectly seeking backwards from 0 yields an error, + and that reading, seeking backwards and reading again works. + * testsuite/libstdc++-dg/conformance.exp: Apply check_v3_target_fileio as a gate for tests in subdirectories matching the substring _filebuf. diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/lib/libstdc++.exp index 41f593b6e25..a0279a55485 100644 --- a/libstdc++-v3/testsuite/lib/libstdc++.exp +++ b/libstdc++-v3/testsuite/lib/libstdc++.exp @@ -631,6 +631,7 @@ proc check_v3_target_fileio { } { global et_fileio_saved global et_fileio_target_name global tool + global srcdir if { ![info exists et_fileio_target_name] } { set et_fileio_target_name "" @@ -656,6 +657,8 @@ proc check_v3_target_fileio { } { # the file functions set src fileio[pid].cc set exe fileio[pid].x + set testfile "cin_unget-1.txt" + v3-copy-files "$srcdir/data/$testfile" set f [open $src "w"] puts $f "#include " @@ -663,20 +666,26 @@ proc check_v3_target_fileio { } { puts $f "#include " puts $f "#include " puts $f "#include " + puts $f "#include " puts $f "using namespace std;" puts $f "int main ()" puts $f "{" - puts $f " int fd = open (\".\", O_RDONLY);" + puts $f " int fd = open (\"$testfile\", O_RDONLY);" puts $f " int ret = 0;" + puts $f " char buf\[10\];" puts $f " if (fd == -1)" - puts $f " {" - puts $f " int err = errno;" - puts $f " if (err == EIO || err == ENOSYS)" - puts $f " ret = 1;" - puts $f " }" + puts $f " ret = 1;" puts $f " else" puts $f " {" - puts $f " if (lseek (fd, 0, SEEK_CUR) == -1)" + puts $f " if (lseek (fd, -1, SEEK_CUR) != -1 || errno != EINVAL)" + puts $f " ret = 1;" + puts $f " errno = 0;" + puts $f " if (lseek (fd, 0, SEEK_CUR) != 0" + puts $f " || read (fd, buf, 4) != 4" + puts $f " || memcmp (buf, \"1234\", 4) != 0" + puts $f " || lseek (fd, -2, SEEK_CUR) != 2" + puts $f " || read (fd, buf, 2) != 2" + puts $f " || memcmp (buf, \"34\", 2) != 0)" puts $f " ret = 1;" puts $f " close (fd);" puts $f " }"