From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14300 invoked by alias); 28 Aug 2013 15:26:27 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 14291 invoked by uid 89); 28 Aug 2013 15:26:27 -0000 Received: from mms2.broadcom.com (HELO mms2.broadcom.com) (216.31.210.18) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 28 Aug 2013 15:26:27 +0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,KHOP_THREADED,RDNS_NONE autolearn=no version=3.3.2 X-HELO: mms2.broadcom.com Received: from [10.9.208.55] by mms2.broadcom.com with ESMTP (Broadcom SMTP Relay (Email Firewall v6.5)); Wed, 28 Aug 2013 08:20:02 -0700 X-Server-Uuid: 4500596E-606A-40F9-852D-14843D8201B2 Received: from IRVEXCHSMTP2.corp.ad.broadcom.com (10.9.207.52) by IRVEXCHCAS07.corp.ad.broadcom.com (10.9.208.55) with Microsoft SMTP Server (TLS) id 14.1.438.0; Wed, 28 Aug 2013 08:26:18 -0700 Received: from mail-irva-13.broadcom.com (10.10.10.20) by IRVEXCHSMTP2.corp.ad.broadcom.com (10.9.207.52) with Microsoft SMTP Server id 14.1.438.0; Wed, 28 Aug 2013 08:26:18 -0700 Received: from [10.177.73.74] (unknown [10.177.73.74]) by mail-irva-13.broadcom.com (Postfix) with ESMTP id 73CAFF2D79; Wed, 28 Aug 2013 08:26:14 -0700 (PDT) Message-ID: <521E1695.1040200@broadcom.com> Date: Wed, 28 Aug 2013 15:26:00 -0000 From: "Andrew Burgess" User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20130801 Thunderbird/17.0.8 MIME-Version: 1.0 To: gdb-patches@sourceware.org cc: "Mark Kettenis" Subject: Re: PING: [PATCH] Print for unavailable registers References: <5200F594.3050402@broadcom.com> In-Reply-To: <5200F594.3050402@broadcom.com> Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 7bit X-SW-Source: 2013-08/txt/msg00833.txt.bz2 On 06/08/2013 2:09 PM, Andrew Burgess wrote: > Following on from (but unrelated to) this mail: > http://sourceware.org/ml/gdb-patches/2013-08/msg00170.html > > Printing "*value not available*" for unavailable values within > "info registers" seems inconsistent to me, if we just print an > unavailable register we'll get "". > > The patch below makes "info registers" print "". The original patch was supposed to be applied after [1], however I never managed to get [1] accepted. I've flipped the ordering, so that this patch can be applied first, if this gets merged I'll post a revised version of [1] later, just for the record. To my reading, Mark seems to imply in this mail: http://sourceware.org/ml/gdb-patches/2013-08/msg00322.html that he does not disagree with displaying registers as "", so I feel it's acceptable to push this patch forward. After this patch "info registers" will display unavailable (for example, not collected by tracing) as , while optimized out register values will still be displayed using the old "*value not available*" string. The previous version of this patch included some sh64 changes, I've removed them from this patch to try and increase the chance of acceptance. [1] http://sourceware.org/ml/gdb-patches/2013-08/msg00170.html OK? Andrew gdb/ChangeLog 2013-08-19 Andrew Burgess * infcmd.c (default_print_one_register_info): use val_print_unavailable for unavailable register values, continue as before for optimized out register values. (default_print_registers_info): Switch to using get_frame_register_value. gdb/testsuite/ChangeLog 2013-08-19 Andrew Burgess * gdb.trace/unavailable.exp (gdb_unavailable_registers_test): Change expected pattern for unavailable registers to . diff --git a/gdb/infcmd.c b/gdb/infcmd.c index 154cde2..83e0323 100644 --- a/gdb/infcmd.c +++ b/gdb/infcmd.c @@ -2030,6 +2030,12 @@ default_print_one_register_info (struct ui_file *file, if (!value_entirely_available (val)) { + val_print_unavailable (file); + fprintf_filtered (file, "\n"); + return; + } + else if (value_optimized_out (val)) + { fprintf_filtered (file, "*value not available*\n"); return; } @@ -2107,9 +2113,6 @@ default_print_registers_info (struct gdbarch *gdbarch, for (i = 0; i < numregs; i++) { - struct type *regtype; - struct value *val; - /* Decide between printing all regs, non-float / vector regs, or specific reg. */ if (regnum == -1) @@ -2137,16 +2140,9 @@ default_print_registers_info (struct gdbarch *gdbarch, || *(gdbarch_register_name (gdbarch, i)) == '\0') continue; - regtype = register_type (gdbarch, i); - val = allocate_value (regtype); - - /* Get the data in raw format. */ - if (! deprecated_frame_register_read (frame, i, value_contents_raw (val))) - mark_value_bytes_unavailable (val, 0, TYPE_LENGTH (value_type (val))); - default_print_one_register_info (file, gdbarch_register_name (gdbarch, i), - val); + get_frame_register_value (frame, i)); } } diff --git a/gdb/testsuite/gdb.trace/unavailable.exp b/gdb/testsuite/gdb.trace/unavailable.exp index 8e2e105..ed14798 100644 --- a/gdb/testsuite/gdb.trace/unavailable.exp +++ b/gdb/testsuite/gdb.trace/unavailable.exp @@ -297,11 +297,11 @@ proc gdb_unavailable_registers_test { } { test_register "\$pc" gdb_test "info registers" \ - "\\*value not available\\*.*\\*value not available\\*" \ + ".*" \ "info registers, multiple registers not available" gdb_test "info registers \$$spreg" \ - "\\*value not available\\*" \ + "" \ "info registers \$$spreg reports not available" gdb_test "tfind none" "#0 end .*" "cease trace debugging"