From patchwork Thu Oct 22 09:59:03 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pedro Alves X-Patchwork-Id: 9309 Received: (qmail 32754 invoked by alias); 22 Oct 2015 10:06:39 -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 32742 invoked by uid 89); 22 Oct 2015 10:06:38 -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 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; Thu, 22 Oct 2015 10:06:37 +0000 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (Postfix) with ESMTPS id 5AEC24D for ; Thu, 22 Oct 2015 09:59:11 +0000 (UTC) Received: from brno.lan (ovpn01.gateway.prod.ext.ams2.redhat.com [10.39.146.11]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id t9M9x5Fw014526 for ; Thu, 22 Oct 2015 05:59:10 -0400 From: Pedro Alves To: gdb-patches@sourceware.org Subject: [PATCH 5/6] List displays in ascending order Date: Thu, 22 Oct 2015 10:59:03 +0100 Message-Id: <1445507944-9197-6-git-send-email-palves@redhat.com> In-Reply-To: <1445507944-9197-1-git-send-email-palves@redhat.com> References: <1445507944-9197-1-git-send-email-palves@redhat.com> Before: (gdb) info display Auto-display expressions now in effect: Num Enb Expression 3: y 1 2: y 1 1: y 1 After: (gdb) info display Auto-display expressions now in effect: Num Enb Expression 1: y 1 2: y 1 3: y 1 gdb/ChangeLog: 2015-10-22 Pedro Alves PR 17539 * printcmd.c (display_command): Append new display at the end of the list. gdb/testsuite/ChangeLog: 2015-10-22 Pedro Alves PR 17539 * gdb.base/display.exp: Expect displays to be sorted in ascending order. Use multi_line. * gdb.base/solib-display.exp: Likewise. --- gdb/printcmd.c | 14 +++++++++++-- gdb/testsuite/gdb.base/display.exp | 35 +++++++++++++++++++++++++++----- gdb/testsuite/gdb.base/solib-display.exp | 19 ++++++++++++++--- 3 files changed, 58 insertions(+), 10 deletions(-) diff --git a/gdb/printcmd.c b/gdb/printcmd.c index 1744abd..c676fc7 100644 --- a/gdb/printcmd.c +++ b/gdb/printcmd.c @@ -1543,11 +1543,21 @@ display_command (char *arg, int from_tty) newobj->exp = expr; newobj->block = innermost_block; newobj->pspace = current_program_space; - newobj->next = display_chain; newobj->number = ++display_number; newobj->format = fmt; newobj->enabled_p = 1; - display_chain = newobj; + newobj->next = NULL; + + if (display_chain == NULL) + display_chain = newobj; + else + { + struct display *last; + + for (last = display_chain; last->next != NULL; last = last->next) + ; + last->next = newobj; + } if (from_tty) do_one_display (newobj); diff --git a/gdb/testsuite/gdb.base/display.exp b/gdb/testsuite/gdb.base/display.exp index 6e21d9e..1d02629 100644 --- a/gdb/testsuite/gdb.base/display.exp +++ b/gdb/testsuite/gdb.base/display.exp @@ -83,8 +83,23 @@ gdb_test "disp/s &sum" ".*5: x/s &sum $hex.*sum.:.*" "display/s &sum" # Hit the displays # -gdb_test "cont" ".*\[Ww\]atchpoint 3: sum.*\[1-9\]*: x/s &sum.*\[1-9\]*: /f f = 3.1415\r\n\[1-9\]*: x/i &k.*\r\n\[1-9\]*: /x j = 0x0\r\n\[1-9\]*: i = 0.*" "first disp" -gdb_test "cont" ".*\[Ww\]atchpoint 3: sum.*\[1-9\]*: x/s &sum.*\[1-9\]*: /f f = 4.1415\r\n\[1-9\]*: x/i &k.*\r\n\[1-9\]*: /x j = 0x0.*\[1-9\]*: i = 0.*" "second disp" +gdb_test "cont" [multi_line \ + ".*\[Ww\]atchpoint 3: sum.*" \ + "\[1-9\]*: i = 0.*" \ + "\[1-9\]*: /x j = 0x0" \ + "\[1-9\]*: x/i &k.*" \ + "\[1-9\]*: /f f = 3.1415" \ + "\[1-9\]*: x/s &sum.*" \ + ] "first disp" + +gdb_test "cont" [multi_line \ + ".*\[Ww\]atchpoint 3: sum.*" \ + "\[1-9\]*: i = 0.*" \ + "\[1-9\]*: /x j = 0x0.*" \ + "\[1-9\]*: x/i &k.*" \ + "\[1-9\]*: /f f = 4.1415" \ + "\[1-9\]*: x/s &sum.*" \ + ] "second disp" gdb_test "enab disp 6" ".*No display number 6..*" "catch err" gdb_test_no_output "disab disp 1" "disab disp 1" @@ -92,9 +107,19 @@ gdb_test_no_output "disab disp 2" "disab disp 2" gdb_test_no_output "enab disp 1" "re-enab" gdb_test_no_output "enab disp 1" "re-enab of enab" gdb_test_no_output "undisp 5" "undisp" -gdb_test "info disp" ".*Auto-display expressions now in effect.*y /f f.*y /1bi &k.*n /x j.*y i.*" "info disp" - -gdb_test "cont" ".*\[Ww\]atch.*5.1415.*.*i = 0.*" "next hit" +gdb_test "info disp" [multi_line \ + "Auto-display expressions now in effect.*" \ + ".*y i" \ + ".*n /x j" \ + ".*y /1bi &k" \ + ".*y /f f" \ + ] "info disp" + +gdb_test "cont" [multi_line \ + ".*\[Ww\]atch.*" \ + ".*i = 0" \ + ".*5.1415" \ + ] "next hit" gdb_test "undisp" \ "" \ diff --git a/gdb/testsuite/gdb.base/solib-display.exp b/gdb/testsuite/gdb.base/solib-display.exp index d1b2c65..b2070c9 100644 --- a/gdb/testsuite/gdb.base/solib-display.exp +++ b/gdb/testsuite/gdb.base/solib-display.exp @@ -86,7 +86,11 @@ foreach libsepdebug {NO IN SEP} { with_test_prefix "$libsepdebug" { continue } - gdb_test "" "3: c_global = 43\\r\\n2: b_global = 42\\r\\n1: a_global = 41" "after rerun" + gdb_test "" [multi_line \ + "1: a_global = 41" \ + "2: b_global = 42" \ + "3: c_global = 43" \ + ] "after rerun" # Now rebuild the library without b_global if { [gdb_compile_shlib ${srcfile_lib} ${binfile_lib} \ @@ -109,7 +113,12 @@ foreach libsepdebug {NO IN SEP} { with_test_prefix "$libsepdebug" { continue } - gdb_test "" "3: c_global = 43\\r\\nwarning: .*b_global.*\\r\\n1: a_global = 41" "after rerun (2)" + + gdb_test "" [multi_line \ + "1: a_global = 41" \ + "warning: .*b_global.*" \ + "3: c_global = 43" \ + ] "after rerun (2)" # Now verify that displays which are not in the shared library # are not cleared permaturely. @@ -130,5 +139,9 @@ foreach libsepdebug {NO IN SEP} { with_test_prefix "$libsepdebug" { gdb_test "" "6: a_static = 46\\r\\n4: main_global = 44\\r\\n.*" gdb_test "break [gdb_get_line_number "break here" ${testfile}.c]" \ ".*Breakpoint.* at .*" - gdb_test "continue" "6: a_static = 46\\r\\n5: a_local = 45\\r\\n4: main_global = 44\\r\\n.*" + gdb_test "continue" [multi_line \ + "4: main_global = 44" \ + "5: a_local = 45" \ + "6: a_static = 46" \ + ] }}