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.
This commit is contained in:
Doug Evans 2015-07-24 15:38:21 -07:00
parent 7b606f95c9
commit 63738bfdb9
7 changed files with 61 additions and 19 deletions

View 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.

View 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
}

View File

@ -52,6 +52,9 @@ PerfTest::assemble {
if ![runto_main] {
return -1
}
return 0
} {
gdb_test "python Disassemble\(\).run()"
return 0
}

View 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
}

View 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
}

View 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
}

View 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
return [uplevel 2 $body]
}
if { [info exists GDB_PERFTEST_MODE]
&& [string compare $GDB_PERFTEST_MODE "run"] } {
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
}
eval $startup
verbose -log "PerfTest::assemble, startup ..."
if [eval startup {$startup}] {
fail "startup"
return
}
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
}