PerfTest::assemble functions return results.
authorDoug Evans <dje@google.com>
Fri, 24 Jul 2015 22:38:21 +0000 (15:38 -0700)
committerDoug Evans <dje@google.com>
Fri, 24 Jul 2015 22:38:21 +0000 (15:38 -0700)
gdb/testsuite/ChangeLog:

* lib/perftest.exp (PerfTest::compile): Unconditionally call body.
(PerfTest::startup): New function.
(PerfTest::run): Return result of calling body.
(PerfTest::assemble): Rewrite.
* gdb.perf/backtrace.exp (PerfTest::assemble): Update function result.
* gdb.perf/disassemble.exp (PerfTest::assemble): Ditto.
* gdb.perf/single-step.exp (PerfTest::assemble): Ditto.
* gdb.perf/skip-prologue.exp (PerfTest::assemble): Ditto.
* gdb.perf/solib.exp (PerfTest::assemble): Ditto.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.perf/backtrace.exp
gdb/testsuite/gdb.perf/disassemble.exp
gdb/testsuite/gdb.perf/single-step.exp
gdb/testsuite/gdb.perf/skip-prologue.exp
gdb/testsuite/gdb.perf/solib.exp
gdb/testsuite/lib/perftest.exp

index 6c7b9298df4ab63f7fd4b86c92b594fcb5c10738..1c65cc2b820ecbf2e3d8fae8625cc4fd22320285 100644 (file)
@@ -1,3 +1,15 @@
+2015-07-24  Doug Evans  <dje@google.com>
+
+       * lib/perftest.exp (PerfTest::compile): Unconditionally call body.
+       (PerfTest::startup): New function.
+       (PerfTest::run): Return result of calling body.
+       (PerfTest::assemble): Rewrite.
+       * gdb.perf/backtrace.exp (PerfTest::assemble): Update function result.
+       * gdb.perf/disassemble.exp (PerfTest::assemble): Ditto.
+       * gdb.perf/single-step.exp (PerfTest::assemble): Ditto.
+       * gdb.perf/skip-prologue.exp (PerfTest::assemble): Ditto.
+       * gdb.perf/solib.exp (PerfTest::assemble): Ditto.
+
 2015-07-24  Doug Evans  <dje@google.com>
 
        * lib/gdb.exp (clean_restart): Make executable optional.
index a88064b4c12f8c0163410dc1a9b0e53f18a10c61..0ae4b5b16fee33cec18e7aa8308219b18eb2796b 100644 (file)
@@ -58,9 +58,12 @@ PerfTest::assemble {
 
     gdb_breakpoint "fun2"
     gdb_continue_to_breakpoint "fun2"
+
+    return 0
 } {
     global BACKTRACE_DEPTH
 
     gdb_test "python BackTrace\($BACKTRACE_DEPTH\).run()"
 
+    return 0
 }
index fe943d8f9149ec77c40a58d97cf1c976da7f9116..67e981539a05f78d8ca23b17341549b1119d37bb 100644 (file)
@@ -52,6 +52,9 @@ PerfTest::assemble {
     if ![runto_main] {
        return -1
     }
+
+    return 0
 } {
     gdb_test "python Disassemble\(\).run()"
+    return 0
 }
index 74c6de05a3d4c0c4a74dc5e405704f2104386fa6..d5aa7e2ea598ed0fb762d17ddd8d0d265875aea3 100644 (file)
@@ -47,10 +47,12 @@ PerfTest::assemble {
        fail "Can't run to main"
        return -1
     }
+    return 0
 } {
     global SINGLE_STEP_COUNT
 
     gdb_test_no_output "python SingleStep\(${SINGLE_STEP_COUNT}\).run()"
     # Terminate the loop.
     gdb_test "set variable flag = 0"
+    return 0
 }
index 35db047d8dc50824b9336ad33ae55ce534b8a120..03d666b7796d3a3ee2383791998dc796b4cb7f64 100644 (file)
@@ -52,6 +52,7 @@ PerfTest::assemble {
        fail "Can't run to main"
        return -1
     }
+    return 0
 } {
     global SKIP_PROLOGUE_COUNT
 
@@ -66,4 +67,5 @@ PerfTest::assemble {
            pass $test
        }
     }
+    return 0
 }
index 4edc2ea6ddf538fc50a711e4e018cdf83c3ebe54..078a37290ac5a2d7954fff8246591047e9cd197e 100644 (file)
@@ -80,8 +80,10 @@ PerfTest::assemble {
        fail "Can't run to main"
        return -1
     }
+    return 0
 } {
     global SOLIB_COUNT
 
     gdb_test_no_output "python SolibLoadUnload\($SOLIB_COUNT\).run()"
+    return 0
 }
index 7c334ac52ad4ee0b06dee94265463f5adcc5cd9c..e5398e3cca9a3e1fcf161652877e9188c303156f 100644 (file)
@@ -42,14 +42,13 @@ namespace eval PerfTest {
     # actual compilation.  Return zero if compilation is successful,
     # otherwise return non-zero.
     proc compile {body} {
-       global GDB_PERFTEST_MODE
-
-       if { [info exists GDB_PERFTEST_MODE]
-            && [string compare $GDB_PERFTEST_MODE "run"] } {
-           return [uplevel 2 $body]
-       }
+       return [uplevel 2 $body]
+    }
 
-       return 0
+    # Run the startup code.  Return zero if startup is successful,
+    # otherwise return non-zero.
+    proc startup {body} {
+       return [uplevel 2 $body]
     }
 
     # Start up GDB.
@@ -57,7 +56,8 @@ namespace eval PerfTest {
        uplevel 2 $body
     }
 
-    # Run the performance test.
+    # Run the performance test.  Return zero if the run is successful,
+    # otherwise return non-zero.
     proc run {body} {
        global timeout
        global GDB_PERFTEST_TIMEOUT
@@ -68,36 +68,56 @@ namespace eval PerfTest {
        } else {
            set timeout 3000
        }
-       uplevel 2 $body
+       set result [uplevel 2 $body]
 
        set timeout $oldtimeout
+       return $result
     }
 
     # The top-level interface to PerfTest.
     # COMPILE is the tcl code to generate and compile source files.
-    # Return zero if compilation is successful,  otherwise return
-    # non-zero.
     # STARTUP is the tcl code to start up GDB.
     # RUN is the tcl code to drive GDB to do some operations.
+    # Each of COMPILE, STARTUP, and RUN return zero if successful, and
+    # non-zero if there's a failure.
+
     proc assemble {compile startup run} {
        global GDB_PERFTEST_MODE
 
-       if { [eval compile {$compile}] } {
-           untested "Could not compile source files."
+       if ![info exists GDB_PERFTEST_MODE] {
            return
        }
 
+       if { [string compare $GDB_PERFTEST_MODE "run"] != 0 } {
+           if { [eval compile {$compile}] } {
+               untested "Could not compile source files."
+               return
+           }
+       }
+
        # Don't execute the run if GDB_PERFTEST_MODE=compile.
-       if { [info exists GDB_PERFTEST_MODE]
-            && [string compare $GDB_PERFTEST_MODE "compile"] == 0} {
+       if { [string compare $GDB_PERFTEST_MODE "compile"] == 0} {
+           return
+       }
+
+       verbose -log "PerfTest::assemble, startup ..."
+
+       if [eval startup {$startup}] {
+           fail "startup"
            return
        }
 
-       eval $startup
+       verbose -log "PerfTest::assemble, done startup"
 
        _setup_perftest
 
-       eval run {$run}
+       verbose -log "PerfTest::assemble, run ..."
+
+       if [eval run {$run}] {
+           fail "run"
+       }
+
+       verbose -log "PerfTest::assemble, run complete."
 
        _teardown_perftest
     }
@@ -109,11 +129,9 @@ proc skip_perf_tests { } {
     global GDB_PERFTEST_MODE
 
     if [info exists GDB_PERFTEST_MODE] {
-
        if { "$GDB_PERFTEST_MODE" != "compile"
             && "$GDB_PERFTEST_MODE" != "run"
             && "$GDB_PERFTEST_MODE" != "both" } {
-           # GDB_PERFTEST_MODE=compile|run|both is allowed.
            error "Unknown value of GDB_PERFTEST_MODE."
            return 1
        }