From 63738bfdb96f654322794384993a6f5d8608aab9 Mon Sep 17 00:00:00 2001 From: Doug Evans Date: Fri, 24 Jul 2015 15:38:21 -0700 Subject: [PATCH] PerfTest::assemble functions return results. 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 | 12 +++++ gdb/testsuite/gdb.perf/backtrace.exp | 3 ++ gdb/testsuite/gdb.perf/disassemble.exp | 3 ++ gdb/testsuite/gdb.perf/single-step.exp | 2 + gdb/testsuite/gdb.perf/skip-prologue.exp | 2 + gdb/testsuite/gdb.perf/solib.exp | 2 + gdb/testsuite/lib/perftest.exp | 56 ++++++++++++++++-------- 7 files changed, 61 insertions(+), 19 deletions(-) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 6c7b9298df4..1c65cc2b820 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,15 @@ +2015-07-24 Doug Evans + + * 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 * lib/gdb.exp (clean_restart): Make executable optional. diff --git a/gdb/testsuite/gdb.perf/backtrace.exp b/gdb/testsuite/gdb.perf/backtrace.exp index a88064b4c12..0ae4b5b16fe 100644 --- a/gdb/testsuite/gdb.perf/backtrace.exp +++ b/gdb/testsuite/gdb.perf/backtrace.exp @@ -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 } diff --git a/gdb/testsuite/gdb.perf/disassemble.exp b/gdb/testsuite/gdb.perf/disassemble.exp index fe943d8f914..67e981539a0 100644 --- a/gdb/testsuite/gdb.perf/disassemble.exp +++ b/gdb/testsuite/gdb.perf/disassemble.exp @@ -52,6 +52,9 @@ PerfTest::assemble { if ![runto_main] { return -1 } + + return 0 } { gdb_test "python Disassemble\(\).run()" + return 0 } diff --git a/gdb/testsuite/gdb.perf/single-step.exp b/gdb/testsuite/gdb.perf/single-step.exp index 74c6de05a3d..d5aa7e2ea59 100644 --- a/gdb/testsuite/gdb.perf/single-step.exp +++ b/gdb/testsuite/gdb.perf/single-step.exp @@ -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 } diff --git a/gdb/testsuite/gdb.perf/skip-prologue.exp b/gdb/testsuite/gdb.perf/skip-prologue.exp index 35db047d8dc..03d666b7796 100644 --- a/gdb/testsuite/gdb.perf/skip-prologue.exp +++ b/gdb/testsuite/gdb.perf/skip-prologue.exp @@ -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 } diff --git a/gdb/testsuite/gdb.perf/solib.exp b/gdb/testsuite/gdb.perf/solib.exp index 4edc2ea6ddf..078a37290ac 100644 --- a/gdb/testsuite/gdb.perf/solib.exp +++ b/gdb/testsuite/gdb.perf/solib.exp @@ -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 } diff --git a/gdb/testsuite/lib/perftest.exp b/gdb/testsuite/lib/perftest.exp index 7c334ac52ad..e5398e3cca9 100644 --- a/gdb/testsuite/lib/perftest.exp +++ b/gdb/testsuite/lib/perftest.exp @@ -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 } -- 2.30.2