OSDN Git Service

* testsuite/lib/libstdc++.exp (check_v3_target_fileio,
[pf3gnuchains/gcc-fork.git] / libstdc++-v3 / testsuite / lib / libstdc++.exp
index f69481a..bd79f4b 100644 (file)
@@ -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