From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id MZFjBv/vxF8VKAAAWB0awg (envelope-from ) for ; Mon, 30 Nov 2020 08:13:35 -0500 Received: by simark.ca (Postfix, from userid 112) id 0D09B1F0AB; Mon, 30 Nov 2020 08:13:35 -0500 (EST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=MAILING_LIST_MULTI, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 5A6A01E58E for ; Mon, 30 Nov 2020 08:13:34 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id CED25386F81D; Mon, 30 Nov 2020 13:13:33 +0000 (GMT) Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) by sourceware.org (Postfix) with ESMTPS id B5201386F81D for ; Mon, 30 Nov 2020 13:13:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org B5201386F81D Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=tdevries@suse.de X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id C7F11ABD2 for ; Mon, 30 Nov 2020 13:13:29 +0000 (UTC) Date: Mon, 30 Nov 2020 14:13:28 +0100 From: Tom de Vries To: gdb-patches@sourceware.org Subject: [PATCH][gdb/testsuite] Fix control-flow in gdb.reverse/insn-reverse.exp Message-ID: <20201130131327.GA9125@delia> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.10.1 (2018-07-13) X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces@sourceware.org Sender: "Gdb-patches" Hi, In gdb.reverse/insn-reverse.exp, we have loop containing a call to gdb_test_multiple, which itself contains a break: ... for {} {$count < 500} {incr count} { ... gdb_test_multiple "x/i \$pc" "" { ... break } ... On SLE-11 with: ... $ runtest --version Expect version is 5.44.1.11 Tcl version is 8.5 Framework version is 1.4.4 ... the break doesn't seem to have the effect of breaking out of the loop. The break does have the effect of terminating evaluation of the expect clause, which means we don't set insn_array, after which we run into: ... ERROR: tcl error sourcing src/gdb/testsuite/gdb.reverse/insn-reverse.exp. ERROR: can't read "insn_array(5)": no such element in array ... Any comments? Thanks, - Tom [gdb/testsuite] Fix control-flow in gdb.reverse/insn-reverse.exp gdb/testsuite/ChangeLog: 2020-11-30 Tom de Vries * gdb.reverse/insn-reverse.exp: Don't break inside gdb_test_multiple clause. --- gdb/testsuite/gdb.reverse/insn-reverse.exp | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/gdb/testsuite/gdb.reverse/insn-reverse.exp b/gdb/testsuite/gdb.reverse/insn-reverse.exp index 39e276964f..d1fdebf75f 100644 --- a/gdb/testsuite/gdb.reverse/insn-reverse.exp +++ b/gdb/testsuite/gdb.reverse/insn-reverse.exp @@ -79,23 +79,27 @@ proc test { func testcase_nr } { set count 0 set insn_addr "" for {} {$count < 500} {incr count} { + set prev_insn_addr $insn_addr + set insn_addr "" gdb_test_multiple "x/i \$pc" "" { -re ".* ($hex) <.*>:\[ \t\]*(.*)\r\n$gdb_prompt $" { - set prev_insn_addr $insn_addr set insn_addr $expect_out(1,string) + set insn_array($count) $expect_out(2,string) + } + } - if [expr {$last_insn == $insn_addr}] { - break - } + if [expr {$insn_addr == ""}] { + break + } - if [expr {$prev_insn_addr == $insn_addr}] { - # Failed to make progress, might have run into SIGILL. - unsupported "no progress at: $expect_out(2,string)" - break - } + if [expr {$last_insn == $insn_addr}] { + break + } - set insn_array($count) $expect_out(2,string) - } + if [expr {$prev_insn_addr == $insn_addr}] { + # Failed to make progress, might have run into SIGILL. + unsupported "no progress at: $expect_out(2,string)" + break } set pre_regs($count) [capture_command_output "info all-registers" ""]