From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10790 invoked by alias); 12 Aug 2013 12:29:15 -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 10713 invoked by uid 89); 12 Aug 2013 12:29:14 -0000 X-Spam-SWARE-Status: No, score=-5.0 required=5.0 tests=AWL,BAYES_00,KAM_STOCKGEN,KHOP_RCVD_UNTRUST,KHOP_THREADED,RCVD_IN_DNSWL_MED,RCVD_IN_HOSTKARMA_W,RP_MATCHES_RCVD autolearn=ham version=3.3.2 Received: from mms2.broadcom.com (HELO mms2.broadcom.com) (216.31.210.18) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Mon, 12 Aug 2013 12:29:13 +0000 Received: from [10.9.208.55] by mms2.broadcom.com with ESMTP (Broadcom SMTP Relay (Email Firewall v6.5)); Mon, 12 Aug 2013 05:22:56 -0700 X-Server-Uuid: 4500596E-606A-40F9-852D-14843D8201B2 Received: from IRVEXCHSMTP1.corp.ad.broadcom.com (10.9.207.51) by IRVEXCHCAS07.corp.ad.broadcom.com (10.9.208.55) with Microsoft SMTP Server (TLS) id 14.1.438.0; Mon, 12 Aug 2013 05:29:05 -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; Mon, 12 Aug 2013 05:29:05 -0700 Received: from [10.177.73.61] (unknown [10.177.73.61]) by mail-irva-13.broadcom.com (Postfix) with ESMTP id 042ECF2D72 for ; Mon, 12 Aug 2013 05:29:04 -0700 (PDT) Message-ID: <5208D50F.8020109@broadcom.com> Date: Mon, 12 Aug 2013 12:29: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 Subject: [PATCH 08/12] Replace some value_optimized_out with value_entirely_available References: <5208D1DF.1090201@broadcom.com> In-Reply-To: <5208D1DF.1090201@broadcom.com> Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 7bit X-SW-Source: 2013-08/txt/msg00308.txt.bz2 A few places where we use value_optimized_out to check that the value is entirely available, this fails to take into account the unavailable status of the value. Fix by using value_entirely_available instead. OK to apply? thanks, Andrew gdb/ChangeLog 2013-08-09 Andrew Burgess * frame.c (frame_unwind_register_value): Use value_entirely_available rather than value_optimized_out. * infrun.c (insert_exception_resume_breakpoint): Likewise. * mips-tdep.c (mips_print_register): Likewise. * s390-tdep.c (s390_unwind_pseudo_register): Likewise. * stack.c (read_frame_arg): Likewise. * value.c (value_fetch_lazy): Likewise. diff --git a/gdb/frame.c b/gdb/frame.c index c5d85b4..edac6e7 100644 --- a/gdb/frame.c +++ b/gdb/frame.c @@ -44,6 +44,7 @@ #include "inline-frame.h" #include "tracepoint.h" #include "hashtab.h" +#include "valprint.h" static struct frame_info *get_prev_frame_1 (struct frame_info *this_frame); static struct frame_info *get_prev_frame_raw (struct frame_info *this_frame); @@ -1035,8 +1036,11 @@ frame_unwind_register_value (struct frame_info *frame, int regnum) if (frame_debug) { fprintf_unfiltered (gdb_stdlog, "->"); - if (value_optimized_out (value)) - fprintf_unfiltered (gdb_stdlog, " optimized out"); + if (!value_entirely_available (value)) + { + fprintf_unfiltered (gdb_stdlog, " "); + val_print_unavailability_reason (value, gdb_stdlog); + } else { if (VALUE_LVAL (value) == lval_register) diff --git a/gdb/infrun.c b/gdb/infrun.c index dc1036d..eaa85b5 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -5547,7 +5547,7 @@ insert_exception_resume_breakpoint (struct thread_info *tp, vsym = lookup_symbol (SYMBOL_LINKAGE_NAME (sym), b, VAR_DOMAIN, NULL); value = read_var_value (vsym, frame); /* If the value was optimized out, revert to the old behavior. */ - if (! value_optimized_out (value)) + if (value_entirely_available (value)) { handler = value_as_address (value); diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c index bcbdcc5..ba73501 100644 --- a/gdb/mips-tdep.c +++ b/gdb/mips-tdep.c @@ -6196,7 +6196,7 @@ mips_print_register (struct ui_file *file, struct frame_info *frame, } val = get_frame_register_value (frame, regnum); - if (value_optimized_out (val)) + if (!value_entirely_available (val)) { fprintf_filtered (file, "%s: [Invalid]", gdbarch_register_name (gdbarch, regnum)); diff --git a/gdb/s390-tdep.c b/gdb/s390-tdep.c index 72d5545..16b1779 100644 --- a/gdb/s390-tdep.c +++ b/gdb/s390-tdep.c @@ -1689,7 +1689,7 @@ s390_unwind_pseudo_register (struct frame_info *this_frame, int regnum) struct value *val; val = frame_unwind_register_value (this_frame, S390_PSWA_REGNUM); - if (!value_optimized_out (val)) + if (value_entirely_available (val)) { LONGEST pswa = value_as_long (val); @@ -1706,7 +1706,7 @@ s390_unwind_pseudo_register (struct frame_info *this_frame, int regnum) struct value *val; val = frame_unwind_register_value (this_frame, S390_PSWM_REGNUM); - if (!value_optimized_out (val)) + if (value_entirely_available (val)) { LONGEST pswm = value_as_long (val); @@ -1727,7 +1727,7 @@ s390_unwind_pseudo_register (struct frame_info *this_frame, int regnum) struct value *val; val = frame_unwind_register_value (this_frame, S390_R0_REGNUM + reg); - if (!value_optimized_out (val)) + if (value_entirely_available (val)) return value_cast (type, val); } diff --git a/gdb/stack.c b/gdb/stack.c index af05f84..cec5df5 100644 --- a/gdb/stack.c +++ b/gdb/stack.c @@ -353,7 +353,7 @@ read_frame_arg (struct symbol *sym, struct frame_info *frame, && SYMBOL_COMPUTED_OPS (sym)->read_variable_at_entry != NULL && print_entry_values != print_entry_values_no && (print_entry_values != print_entry_values_if_needed - || !val || value_optimized_out (val))) + || !val || !value_entirely_available (val))) { TRY_CATCH (except, RETURN_MASK_ERROR) { @@ -369,7 +369,7 @@ read_frame_arg (struct symbol *sym, struct frame_info *frame, } if (except.error == NO_ENTRY_VALUE_ERROR - || (entryval && value_optimized_out (entryval))) + || (entryval && !value_entirely_available (entryval))) { entryval = NULL; entryval_error = NULL; @@ -468,13 +468,13 @@ read_frame_arg (struct symbol *sym, struct frame_info *frame, if (print_entry_values == print_entry_values_only || print_entry_values == print_entry_values_both || (print_entry_values == print_entry_values_preferred - && (!val || value_optimized_out (val)))) + && (!val || !value_entirely_available (val)))) entryval = allocate_optimized_out_value (SYMBOL_TYPE (sym)); } if ((print_entry_values == print_entry_values_compact || print_entry_values == print_entry_values_if_needed || print_entry_values == print_entry_values_preferred) - && (!val || value_optimized_out (val)) && entryval != NULL) + && (!val || !value_entirely_available (val)) && entryval != NULL) { val = NULL; val_error = NULL; diff --git a/gdb/value.c b/gdb/value.c index b9f5709..19ba16c 100644 --- a/gdb/value.c +++ b/gdb/value.c @@ -3598,8 +3598,11 @@ value_fetch_lazy (struct value *val) user_reg_map_regnum_to_name (gdbarch, regnum)); fprintf_unfiltered (gdb_stdlog, "->"); - if (value_optimized_out (new_val)) - fprintf_unfiltered (gdb_stdlog, " optimized out"); + if (!value_entirely_available (new_val)) + { + fprintf_unfiltered (gdb_stdlog, " "); + val_print_unavailability_reason (new_val, gdb_stdlog); + } else { int i;