jit.exp: Verify the exit status of the spawnee
authorDavid Malcolm <dmalcolm@redhat.com>
Mon, 1 Dec 2014 16:25:59 +0000 (16:25 +0000)
committerDavid Malcolm <dmalcolm@gcc.gnu.org>
Mon, 1 Dec 2014 16:25:59 +0000 (16:25 +0000)
gcc/testsuite/ChangeLog:
* jit.dg/jit.exp (verify_exit_status): New function.
(fixed_host_execute): Verify the exit status of the spawnee.

From-SVN: r218229

gcc/testsuite/ChangeLog
gcc/testsuite/jit.dg/jit.exp

index e2f2dfd4bc4233b2de01bae42a3e80c59ce246e0..737854270c5685d0cead66c3f3ae8ecb54efedf5 100644 (file)
@@ -1,3 +1,8 @@
+2014-12-01  David Malcolm  <dmalcolm@redhat.com>
+
+       * jit.dg/jit.exp (verify_exit_status): New function.
+       (fixed_host_execute): Verify the exit status of the spawnee.
+
 2014-12-01  David Malcolm  <dmalcolm@redhat.com>
 
        * jit.dg/jit.exp (fixed_host_execute): Fix timeout bug.
index 2edd0483a811c309eb334e617618e7da74832baf..a37ccc7ba1aae279f40a105d61589d8dfdf0593d 100644 (file)
@@ -65,6 +65,35 @@ proc parse_valgrind_logfile {name logfile} {
     close $f
 }
 
+# Given WRES, the result from "wait", issue a PASS
+# if the spawnee exited cleanly, or a FAIL for various kinds of
+# unexpected exits.
+
+proc verify_exit_status { executable wres } {
+    lassign $wres pid spawnid os_error_flag value
+    verbose "pid: $pid" 3
+    verbose "spawnid: $spawnid" 3
+    verbose "os_error_flag: $os_error_flag" 3
+    verbose "value: $value" 3
+
+    # Detect segfaults etc:
+    if { [llength $wres] > 4 } {
+       if { [lindex $wres 4] == "CHILDKILLED" } {
+           fail "$executable killed: $wres"
+           return
+       }
+    }
+    if { $os_error_flag != 0 } {
+       fail "$executable: OS error: $wres"
+       return
+    }
+    if { $value != 0 } {
+       fail "$executable: non-zero exit code: $wres"
+       return
+    }
+    pass "$executable exited cleanly"
+}
+
 # This is host_execute from dejagnu.exp commit
 #   126a089777158a7891ff975473939f08c0e31a1c
 # with the following patch applied, and renaming to "fixed_host_execute".
@@ -214,6 +243,7 @@ proc fixed_host_execute {args} {
 
     catch wait wres
     verbose "wres: $wres" 2
+    verify_exit_status $executable $wres
 
     if $run_under_valgrind {
        upvar 2 name name