aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoug Evans <dje@google.com>2015-07-24 15:38:21 -0700
committerDoug Evans <dje@google.com>2015-07-24 15:38:21 -0700
commit63738bfdb96f654322794384993a6f5d8608aab9 (patch)
treed9b30758026e9f194828d32dec66c00f5a467743
parent7b606f95c9bcfa1b569fe5d33f7d2a73d39322f4 (diff)
downloadgdb-63738bfdb96f654322794384993a6f5d8608aab9.zip
gdb-63738bfdb96f654322794384993a6f5d8608aab9.tar.gz
gdb-63738bfdb96f654322794384993a6f5d8608aab9.tar.bz2
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.
-rw-r--r--gdb/testsuite/ChangeLog12
-rw-r--r--gdb/testsuite/gdb.perf/backtrace.exp3
-rw-r--r--gdb/testsuite/gdb.perf/disassemble.exp3
-rw-r--r--gdb/testsuite/gdb.perf/single-step.exp2
-rw-r--r--gdb/testsuite/gdb.perf/skip-prologue.exp2
-rw-r--r--gdb/testsuite/gdb.perf/solib.exp2
-rw-r--r--gdb/testsuite/lib/perftest.exp56
7 files changed, 61 insertions, 19 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 6c7b929..1c65cc2 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,5 +1,17 @@
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.
2015-07-24 Doug Evans <dje@google.com>
diff --git a/gdb/testsuite/gdb.perf/backtrace.exp b/gdb/testsuite/gdb.perf/backtrace.exp
index a88064b..0ae4b5b 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 fe943d8..67e9815 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 74c6de0..d5aa7e2 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 35db047..03d666b 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 4edc2ea..078a372 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 7c334ac..e5398e3 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
}