From patchwork Tue Jul 15 16:42:46 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pedro Alves X-Patchwork-Id: 2064 Received: (qmail 6617 invoked by alias); 15 Jul 2014 16:42:52 -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 6603 invoked by uid 89); 15 Jul 2014 16:42:52 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL, BAYES_00, RP_MATCHES_RCVD, SPF_HELO_PASS, SPF_PASS autolearn=ham version=3.3.2 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Tue, 15 Jul 2014 16:42:50 +0000 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s6FGgm56008934 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Tue, 15 Jul 2014 12:42:49 -0400 Received: from brno.lan (ovpn01.gateway.prod.ext.ams2.redhat.com [10.39.146.11]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s6FGgkaK007984 for ; Tue, 15 Jul 2014 12:42:47 -0400 From: Pedro Alves To: gdb-patches@sourceware.org Subject: [OB/PUSHED PATCH] gdb.base/reread.exp: Really restart GDB Date: Tue, 15 Jul 2014 17:42:46 +0100 Message-Id: <1405442566-7924-1-git-send-email-palves@redhat.com> The other day I noticed that default_gdb_start reuses the GDB process if it has been spawned already: proc default_gdb_start { } { ... if [info exists gdb_spawn_id] { return 0 } I was a bit surprised, and so I hacked in an error to check whether anything is relying on it: + if [info exists gdb_spawn_id] { + error "GDB already spawned" + } And lo, that tripped on a funny buglet (see below). The comment in reread.exp says "Restart GDB entirely", but in reality, due to the above, that's not what is happening, as a gdb_exit call is missing. The test is proceeding with the previous GDB process... I don't really want to go hunt for whether there's an odd setup out there that assumes this in its board file or something, so for now, I'm taking the simple route of just making the test do what it says it does. I think this much makes it an obvious fix. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (gdb) PASS: gdb.base/reread.exp: run to foo() second time ERROR: tcl error sourcing ../src/gdb/testsuite/gdb.base/reread.exp. ERROR: GDB already spawned while executing "error "GDB already spawned"" invoked from within "if [info exists gdb_spawn_id] { error "GDB already spawned" }" (procedure "default_gdb_start" line 22) invoked from within "default_gdb_start" (procedure "gdb_start" line 2) invoked from within "gdb_start" invoked from within "if [is_remote target] { unsupported "second pass: GDB should check for changes before running" } else { # Put the older executable back in pl..." (file "../src/gdb/testsuite/gdb.base/reread.exp" line 114) invoked from within "source ../src/gdb/testsuite/gdb.base/reread.exp" ("uplevel" body line 1) invoked from within "uplevel #0 source ../src/gdb/testsuite/gdb.base/reread.exp" invoked from within "catch "uplevel #0 source $test_file_name"" testcase ../src/gdb/testsuite/gdb.base/reread.exp completed in 1 seconds ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ gdb/testsuite/ 2014-07-15 Pedro Alves * gdb.base/reread.exp: Use clean_restart. --- gdb/testsuite/ChangeLog | 4 ++++ gdb/testsuite/gdb.base/reread.exp | 4 +--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 38357ea..151edf7 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2014-07-15 Pedro Alves + + * gdb.base/reread.exp: Use clean_restart. + 2014-07-15 Pierre Langlois * gdb.arch/avr-flash-qualifer.c: New. diff --git a/gdb/testsuite/gdb.base/reread.exp b/gdb/testsuite/gdb.base/reread.exp index 8462279..88abb17 100644 --- a/gdb/testsuite/gdb.base/reread.exp +++ b/gdb/testsuite/gdb.base/reread.exp @@ -120,9 +120,7 @@ if [is_remote target] { gdb_rename_execfile ${binfile1} ${binfile} # Restart GDB entirely. - gdb_start - gdb_reinitialize_dir $srcdir/$subdir - gdb_load ${binfile} + clean_restart ${binfile} # Set a breakpoint on foo and run to it. gdb_test "break foo" \