From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 417 invoked by alias); 6 Aug 2013 13:09:03 -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 390 invoked by uid 89); 6 Aug 2013 13:09:02 -0000 X-Spam-SWARE-Status: No, score=-3.1 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,RCVD_IN_DNSWL_MED,RCVD_IN_HOSTKARMA_W,RDNS_NONE autolearn=ham version=3.3.1 Received: from Unknown (HELO mms2.broadcom.com) (216.31.210.18) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Tue, 06 Aug 2013 13:09:01 +0000 Received: from [10.9.208.57] by mms2.broadcom.com with ESMTP (Broadcom SMTP Relay (Email Firewall v6.5)); Tue, 06 Aug 2013 06:02:41 -0700 X-Server-Uuid: 4500596E-606A-40F9-852D-14843D8201B2 Received: from IRVEXCHSMTP1.corp.ad.broadcom.com (10.9.207.51) by IRVEXCHCAS08.corp.ad.broadcom.com (10.9.208.57) with Microsoft SMTP Server (TLS) id 14.1.438.0; Tue, 6 Aug 2013 06:08:48 -0700 Received: from mail-irva-13.broadcom.com (10.10.10.20) by IRVEXCHSMTP1.corp.ad.broadcom.com (10.9.207.51) with Microsoft SMTP Server id 14.1.438.0; Tue, 6 Aug 2013 06:08:47 -0700 Received: from [10.177.73.61] (unknown [10.177.73.61]) by mail-irva-13.broadcom.com (Postfix) with ESMTP id 7B382F2D73 for ; Tue, 6 Aug 2013 06:08:47 -0700 (PDT) Message-ID: <5200F55E.2050308@broadcom.com> Date: Tue, 06 Aug 2013 13:09:00 -0000 From: "Andrew Burgess" User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20130620 Thunderbird/17.0.7 MIME-Version: 1.0 To: "gdb-patches@sourceware.org" Subject: [PATCH] Consistent display of "" Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 7bit X-SW-Source: 2013-08/txt/msg00170.txt.bz2 In some cases we report optimized out registers as "*value not available*" rather than "", the patch below makes this more consistent in the case I've spotted. Here's an example: (gdb) up #1 0x0000000000400800 in first_frame () at dw2-reg-undefined.c:27 27 in dw2-reg-undefined.c (gdb) info registers rax rax *value not available* (gdb) p/x $rax $1 = After the patch the behaviour is now: (gdb) up #1 0x0000000000400800 in first_frame () at dw2-reg-undefined.c:27 27 in dw2-reg-undefined.c (gdb) info registers rax rax (gdb) p/x $rax $1 = The behaviour for values that are unavailable is currently unchanged, though I have a follow up patch for this too. OK to apply? Thanks, Andrew gdb/ChangeLog 2013-08-06 Andrew Burgess * infcmd.c (default_print_one_register_info): Add detection of optimized out values. (default_print_registers_info): Switch to using get_frame_register_value. gdb/testsuite/ChangeLog 2013-08-06 Andrew Burgess * gdb.dwarf2/dw2-reg-undefined.exp: Change pattern for info register to "", and also print the registers. diff --git a/gdb/infcmd.c b/gdb/infcmd.c index 154cde2..f6a5290 100644 --- a/gdb/infcmd.c +++ b/gdb/infcmd.c @@ -2033,6 +2033,12 @@ default_print_one_register_info (struct ui_file *file, fprintf_filtered (file, "*value not available*\n"); return; } + else if (value_optimized_out (val)) + { + val_print_optimized_out (file); + fprintf_filtered (file, "\n"); + return; + } /* If virtual format is floating, print it that way, and in raw hex. */ @@ -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.dwarf2/dw2-reg-undefined.exp b/gdb/testsuite/gdb.dwarf2/dw2-reg-undefined.exp index 7b7b4d1..4686648 100644 --- a/gdb/testsuite/gdb.dwarf2/dw2-reg-undefined.exp +++ b/gdb/testsuite/gdb.dwarf2/dw2-reg-undefined.exp @@ -38,22 +38,34 @@ if ![runto stop_frame] { gdb_test "bt" "#0 (0x\[0-9a-f\]+ in )?stop_frame \[^\r\n\]*\r\n#1 \[^\r\n\]*first_frame \[^\r\n\]*\r\n#2 \[^\r\n\]*main\[^\r\n\]*" \ "backtrace from stop_frame" -set value_pattern "0x\[0-9a-f\]+\\s+\[0-9\]+" -set opt_out_pattern "\\*value not available\\*" - for {set f 0} {$f < 3} {incr f} { if {${f} == 0} { - set pattern_rax_rbx_rcx ${value_pattern} - set pattern_r8_r9 ${value_pattern} + set pattern_rax_rbx_rcx_print "$hex" + set pattern_rax_rbx_rcx_info "$hex\\s+$decimal" + set pattern_r8_r9_print "$hex" + set pattern_r8_r9_info "$hex\\s+$decimal" } else { - set pattern_rax_rbx_rcx ${opt_out_pattern} - set pattern_r8_r9 ${value_pattern} + set pattern_rax_rbx_rcx_print "" + set pattern_rax_rbx_rcx_info "" + set pattern_r8_r9_print "$hex" + set pattern_r8_r9_info "$hex\\s+$decimal" } # Select frame. gdb_test "frame ${f}" "#${f}.*" "Switch to frame ${f}" + gdb_test "p/x \$rax" ".*$pattern_rax_rbx_rcx_print.*" \ + "print \$rax in frame ${f}" + gdb_test "p/x \$rbx" "$pattern_rax_rbx_rcx_print" \ + "print \$rbx in frame ${f}" + gdb_test "p/x \$rcx" "$pattern_rax_rbx_rcx_print" \ + "print \$rcx in frame ${f}" + + gdb_test "p/x \$r8" "$pattern_r8_r9_print" "print \$r8 in frame ${f}" + gdb_test "p/x \$r9" "$pattern_r8_r9_print" "print \$r9 in frame ${f}" + + # Display register values. - gdb_test "info registers rax rbx rcx r8 r9" "rax\\s+${pattern_rax_rbx_rcx}\\s*\r\nrbx\\s+${pattern_rax_rbx_rcx}\\s*\r\nrcx\\s+${pattern_rax_rbx_rcx}\\s*\r\nr8\\s+${pattern_r8_r9}\\s*\r\nr9\\s+${pattern_r8_r9}\\s*" \ + gdb_test "info registers rax rbx rcx r8 r9" "rax\\s+${pattern_rax_rbx_rcx_info}\\s*\r\nrbx\\s+${pattern_rax_rbx_rcx_info}\\s*\r\nrcx\\s+${pattern_rax_rbx_rcx_info}\\s*\r\nr8\\s+${pattern_r8_r9_info}\\s*\r\nr9\\s+${pattern_r8_r9_info}\\s*" \ "Check values of rax, rbx, rcx, r8, r9 in frame ${f}" }