diff options
Diffstat (limited to 'libstdc++-v3/testsuite/lib')
-rw-r--r-- | libstdc++-v3/testsuite/lib/dg-options.exp | 18 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/lib/libstdc++.exp | 127 |
2 files changed, 145 insertions, 0 deletions
diff --git a/libstdc++-v3/testsuite/lib/dg-options.exp b/libstdc++-v3/testsuite/lib/dg-options.exp index e8e740492fb..ccc3fb69e31 100644 --- a/libstdc++-v3/testsuite/lib/dg-options.exp +++ b/libstdc++-v3/testsuite/lib/dg-options.exp @@ -26,6 +26,24 @@ proc dg-require-namedlocale { args } { return } +proc dg-require-fileio { args } { + if { ![ check_v3_target_fileio ] } { + upvar dg-do-what dg-do-what + set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] + return + } + return +} + +proc dg-require-time { args } { + if { ![ check_v3_target_time ] } { + upvar dg-do-what dg-do-what + set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] + return + } + return +} + proc dg-require-sharedlib { args } { if { ![ check_v3_target_sharedlib ] } { upvar dg-do-what dg-do-what diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/lib/libstdc++.exp index f69481a11ef..bd79f4bfbc2 100644 --- a/libstdc++-v3/testsuite/lib/libstdc++.exp +++ b/libstdc++-v3/testsuite/lib/libstdc++.exp @@ -495,11 +495,138 @@ proc v3-build_support { } { } } +proc check_v3_target_fileio { } { + global et_fileio_saved + global et_fileio_target_name + global tool + + if { ![info exists et_fileio_target_name] } { + set et_fileio_target_name "" + } + + # If the target has changed since we set the cached value, clear it. + set current_target [current_target_name] + if { $current_target != $et_fileio_target_name } { + verbose "check_v3_target_fileio: `$et_fileio_target_name'" 2 + set et_fileio_target_name $current_target + if [info exists et_fileio_saved] { + verbose "check_v3_target_fileio: removing cached result" 2 + unset et_fileio_saved + } + } + + if [info exists et_fileio_saved] { + verbose "check_v3_target_fileio: using cached result" 2 + } else { + set et_fileio_saved 0 + + # Set up, compile, and execute a C++ test program that tries to use + # the file functions + set src fileio[pid].cc + set exe fileio[pid].x + + set f [open $src "w"] + puts $f "#include <sys/types.h>" + puts $f "#include <sys/stat.h>" + puts $f "#include <fcntl.h>" + puts $f "#include <unistd.h>" + puts $f "#include <errno.h>" + puts $f "using namespace std;" + puts $f "int main ()" + puts $f "{" + puts $f " int fd = open (\".\", O_RDONLY);" + puts $f " if (fd == -1)" + puts $f " {" + puts $f " int err = errno;" + puts $f " if (err == EIO || err == ENOSYS)" + puts $f " return 1;" + puts $f " }" + puts $f " else" + puts $f " close (fd);" + puts $f " return 0;" + puts $f "}" + close $f + + set lines [v3_target_compile $src $exe executable ""] + file delete $src + + if [string match "" $lines] { + # No error message, compilation succeeded. + set result [${tool}_load "./$exe" "" ""] + set status [lindex $result 0] + remote_file build delete $exe + + verbose "check_v3_target_fileio: status is <$status>" 2 + + if { $status == "pass" } { + set et_fileio_saved 1 + } + } else { + verbose "check_v3_target_fileio: compilation failed" 2 + } + } + return $et_fileio_saved +} + proc check_v3_target_sharedlib { } { global v3-sharedlib return ${v3-sharedlib} } +proc check_v3_target_time { } { + global et_time_saved + global et_time_target_name + global tool + + if { ![info exists et_time_target_name] } { + set et_time_target_name "" + } + + # If the target has changed since we set the cached value, clear it. + set current_target [current_target_name] + if { $current_target != $et_time_target_name } { + verbose "check_v3_target_time: `$et_time_target_name'" 2 + set et_time_target_name $current_target + if [info exists et_time_saved] { + verbose "check_v3_target_time: removing cached result" 2 + unset et_time_saved + } + } + + if [info exists et_time_saved] { + verbose "check_v3_target_time: using cached result" 2 + } else { + set et_time_saved 0 + + # Set up and compile a C++ test program that tries to use + # the time function + set src time[pid].cc + set exe time[pid].x + + set f [open $src "w"] + puts $f "#include <time.h>" + puts $f "using namespace std;" + puts $f "int main ()" + puts $f "{" + puts $f " time (0);" + puts $f "}" + close $f + + set lines [v3_target_compile $src $exe executable ""] + file delete $src + + if [string match "" $lines] { + # No error message, compilation succeeded. + verbose "check_v3_target_time: compilation succeeded" 2 + remote_file build delete $exe + set et_time_saved 1 + } else { + verbose "check_v3_target_time: compilation failed" 2 + } + } + return $et_time_saved +} + proc check_v3_target_namedlocale { } { global et_namedlocale_saved global et_namedlocale_target_name |