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:
parent
7b606f95c9
commit
63738bfdb9
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -52,6 +52,9 @@ PerfTest::assemble {
|
|||
if ![runto_main] {
|
||||
return -1
|
||||
}
|
||||
|
||||
return 0
|
||||
} {
|
||||
gdb_test "python Disassemble\(\).run()"
|
||||
return 0
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue