From patchwork Sun Oct 12 19:55:30 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Kratochvil X-Patchwork-Id: 3208 Received: (qmail 26611 invoked by alias); 12 Oct 2014 19:55:50 -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 26602 invoked by uid 89); 12 Oct 2014 19:55:50 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-4.0 required=5.0 tests=AWL, BAYES_00, SPF_HELO_PASS, T_RP_MATCHES_RCVD 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; Sun, 12 Oct 2014 19:55:48 +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 s9CJtiuS016287 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Sun, 12 Oct 2014 15:55:44 -0400 Received: from host2.jankratochvil.net (ovpn-116-34.ams2.redhat.com [10.36.116.34]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s9CJtUY9010151 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=NO); Sun, 12 Oct 2014 15:55:36 -0400 Date: Sun, 12 Oct 2014 21:55:30 +0200 From: Jan Kratochvil To: Yao Qi , Pedro Alves Cc: gdb-patches@sourceware.org, Miroslav Franc Subject: [commit] [patchv2 1/2] save breakpoints does not save disabled breakpoints correctly Message-ID: <20141012195530.GA18486@host2.jankratochvil.net> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <5437D199.8070003@redhat.com> <87ppe0pixl.fsf@codesourcery.com> User-Agent: Mutt/1.5.23 (2014-03-12) X-IsSubscribed: yes On Fri, 10 Oct 2014 07:55:50 +0200, Yao Qi wrote: > These two patches look right to me. Therefore checked them in. On Fri, 10 Oct 2014 14:31:21 +0200, Pedro Alves wrote: > In places were we want to avoid that, and we want to write a pattern > that spawns multiple lines, we build the regex with join. E.g., > gdb.btrace/instruction_history.exp: > > # test that we see the expected instructions > gdb_test "record instruction-history 3,7" [join [list \ > "3\t 0x\[0-9a-f\]+ :\tje 0x\[0-9a-f\]+ " \ > "4\t 0x\[0-9a-f\]+ :\tdec %eax" \ > "5\t 0x\[0-9a-f\]+ :\tjmp 0x\[0-9a-f\]+ " \ > "6\t 0x\[0-9a-f\]+ :\tcmp \\\$0x0,%eax" \ > "7\t 0x\[0-9a-f\]+ :\tje 0x\[0-9a-f\]+ \r" \ > ] "\r\n"] This looks more safe to me but the other was has been approved. Thanks, Jan But IMO it is a functionality regression as: * gdb_test_sequence permits arbitary number of lines of text between those lines being matched. Former regex string did not allow it. This may make a difference if GDB regresses by printing some unexpected line after the breakpoint info line (like a "silent" line). > * \[\r\n\]+ can be used to anchor the beginning of the pattern, in the sense > of Perl regex ^ /m match. At least I have found such cases in existing > *.exp files so I used that. Using ^ really does not work. > > But I am not aware how to do Perl regex $ /m match. Using $ really does > not work. But this means that for example the trailing > ( \\((host|target) evals\\))? > on the line > "\[\r\n\]+\[ \t\]+stop only if i == 1( \\((host|target) evals\\))?" > originally made sense there but now it can be removed as it has no longer > any functionality there - it will match now any trailing line garbage. by Yao Qi: In this test case, ( \\((host|target) evals\\))? isn't needed in the pattern. What we test here is to save breakpoints into file and restore them from file. The contents saved in file are: break save-bp.c:31 condition $bpnum i == 1 the information about the place where the condition is evaluated isn't saved, so we don't need to check. Breakpoint save and restore has nothing to do with where the condition is evaluated (host or target). I am fine to leave it here now. gdb/testsuite/ChangeLog 2014-10-09 Jan Kratochvil * gdb.base/save-bp.exp (info break): Use gdb_test_sequence. --- gdb/testsuite/ChangeLog | 4 ++++ gdb/testsuite/gdb.base/save-bp.exp | 15 +++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 348adff..fdd18d7 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2014-10-12 Jan Kratochvil + + * gdb.base/save-bp.exp (info break): Use gdb_test_sequence. + 2014-10-11 Yao Qi * gdb.server/server-kill.exp: Execute command diff --git a/gdb/testsuite/gdb.base/save-bp.exp b/gdb/testsuite/gdb.base/save-bp.exp index ba98633..61f647c 100644 --- a/gdb/testsuite/gdb.base/save-bp.exp +++ b/gdb/testsuite/gdb.base/save-bp.exp @@ -72,5 +72,16 @@ gdb_test "source $bps" "" "source bps" # Now, verify that all breakpoints have been created correctly... set bp_row_start "\[0-9\]+ +breakpoint +keep +y +0x\[0-9a-f\]+ +in" set dprintf_row_start "\[0-9\]+ +dprintf +keep +y +0x\[0-9a-f\]+ +in" -gdb_test "info break" \ - " *Num +Type +Disp +Enb +Address +What\r\n$bp_row_start break_me at .*$srcfile:\[0-9\]+\r\n$bp_row_start main at .*$srcfile:$loc_bp2\r\n$bp_row_start main at .*$srcfile:$loc_bp3 +thread 1\r\n\[ \t]+stop only in thread 1\r\n$bp_row_start main at .*$srcfile:$loc_bp4\r\n\[ \t\]+stop only if i == 1( \\((host|target) evals\\))?\r\n$bp_row_start main at .*$srcfile:$loc_bp5\r\n\[ \t\]+silent\r\n$dprintf_row_start main at .*$srcfile:$loc_bp5\r\n\[ \t\]+printf.*" +gdb_test_sequence "info break" "info break" [list \ + "\[\r\n\]+Num +Type +Disp +Enb +Address +What" \ + "\[\r\n\]+$bp_row_start break_me at \[^\r\n\]*$srcfile:\[0-9\]+" \ + "\[\r\n\]+$bp_row_start main at \[^\r\n\]*$srcfile:$loc_bp2" \ + "\[\r\n\]+$bp_row_start main at \[^\r\n\]*$srcfile:$loc_bp3 +thread 1" \ + "\[\r\n\]+\[ \t]+stop only in thread 1" \ + "\[\r\n\]+$bp_row_start main at \[^\r\n\]*$srcfile:$loc_bp4" \ + "\[\r\n\]+\[ \t\]+stop only if i == 1( \\((host|target) evals\\))?" \ + "\[\r\n\]+$bp_row_start main at \[^\r\n\]*$srcfile:$loc_bp5" \ + "\[\r\n\]+\[ \t\]+silent" \ + "\[\r\n\]+$dprintf_row_start main at \[^\r\n\]*$srcfile:$loc_bp5" \ + "\[\r\n\]+\[ \t\]+printf" \ +]