From patchwork Tue Jul 21 13:55:07 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Doug Evans X-Patchwork-Id: 7777 Received: (qmail 13509 invoked by alias); 21 Jul 2015 13:55:12 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 13499 invoked by uid 89); 21 Jul 2015 13:55:11 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.2 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_LOW, RP_MATCHES_RCVD, SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-pa0-f73.google.com Received: from mail-pa0-f73.google.com (HELO mail-pa0-f73.google.com) (209.85.220.73) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Tue, 21 Jul 2015 13:55:09 +0000 Received: by pacum4 with SMTP id um4so5924713pac.1 for ; Tue, 21 Jul 2015 06:55:07 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:message-id:date:subject:from:to :content-type; bh=7J7VHltgrgjJM3fDHqZUVU1Imwx22ax4O1eoSJzEitE=; b=e42idznSWyZt4Bz8bAKeXyL/o7IB6XGihN/1bGW7Re6Ce8TwHn1Wm0xija0KoKFSJQ b7r+b1Uqhx0lbFVvpFExEVn8k4FJ9q7di4G3arFllBQIn6A/QKolYl6gGqmKvcwiHDcB uYNK7N6bTetZzi2obIbrhE1AZ/o3n9+p+8g8G1MUc1Qlgn2SrdiA2qt7lVP+nsynlYyp g2KmUDdZ85o3i1aFPDs55c2cvXPgOVWTdFffIGpxY6fP7Ih7ww9UzQ4p4LSij35fsb7w 2PXU97SSX9QU6D4mK9kekqWhhgcAaSnzi9xJGorRb19sUGCzXO6w6/uVGI1/uy17p/ky 7htQ== X-Gm-Message-State: ALoCoQl4L2Kt7jX3DzFXIP+PppKMGQ5gUBYjg1B5JYs3mQ2MqdZGduOpQIpSxKvDwvvF7Ybn5DLVKM0i7SfjjqlstkgC/vbuDTIopNFXeBxDmSgEyQk5NaC2k1kIGYzyCQBeFw4xiBLHMmOR0cxNyJBgUQZjYCnvjXWn0dy67r21QKIXCaUzU2w= MIME-Version: 1.0 X-Received: by 10.66.160.34 with SMTP id xh2mr37865236pab.27.1437486907879; Tue, 21 Jul 2015 06:55:07 -0700 (PDT) Message-ID: <047d7bacb37e83b5d5051b63006f@google.com> Date: Tue, 21 Jul 2015 13:55:07 +0000 Subject: [PATCH 6/8] gen-pert-test: assemble functions return results From: Doug Evans To: gdb-patches@sourceware.org X-IsSubscribed: yes Hi. This patch changes PerfTest::assemble so that each function provided to it returns a success/fail result. At the moment PerfTest::assemble sometimes returns a result and sometimes doesn't. [btw, the entire patch set has been regression tested on amd64-linux] 2015-07-20 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. 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 }