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
This commit is contained in:
Hans-Peter Nilsson 2010-10-07 21:46:51 +00:00 committed by Hans-Peter Nilsson
parent 38851a969d
commit 599fdf0ca5
2 changed files with 22 additions and 7 deletions

View file

@ -1,5 +1,11 @@
2010-10-07 Hans-Peter Nilsson <hp@axis.com>
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.

View file

@ -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 <sys/types.h>"
@ -663,20 +666,26 @@ proc check_v3_target_fileio { } {
puts $f "#include <fcntl.h>"
puts $f "#include <unistd.h>"
puts $f "#include <errno.h>"
puts $f "#include <string.h>"
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 " }"