From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14288 invoked by alias); 29 Nov 2013 20:16:02 -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 14201 invoked by uid 89); 29 Nov 2013 20:16:01 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=0.3 required=5.0 tests=AWL,BAYES_50,RDNS_NONE,SPF_HELO_PASS,SPF_PASS,URIBL_BLOCKED autolearn=no version=3.3.2 X-HELO: mx1.redhat.com Received: from Unknown (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 29 Nov 2013 20:16:00 +0000 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id rATKFqLj004421 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Fri, 29 Nov 2013 15:15:52 -0500 Received: from brno.lan (ovpn01.gateway.prod.ext.ams2.redhat.com [10.39.146.11]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id rATKForA013247 for ; Fri, 29 Nov 2013 15:15:51 -0500 From: Pedro Alves To: gdb-patches@sourceware.org Subject: [PATCH 1/2] New OPTIMIZED_OUT_ERROR error code. Date: Fri, 29 Nov 2013 20:39:00 -0000 Message-Id: <1385756149-534-2-git-send-email-palves@redhat.com> In-Reply-To: <1385756149-534-1-git-send-email-palves@redhat.com> References: <1385756149-534-1-git-send-email-palves@redhat.com> X-SW-Source: 2013-11/txt/msg00947.txt.bz2 In order to catch errors like we catch errors, this adds a new OPTIMIZED_OUT_ERROR error code, and throws it in various places. gdb/ChangeLog 2013-11-29 Andrew Burgess Pedro Alves * exceptions.h (errors): Add OPTIMIZED_OUT_ERROR. * dwarf2loc.c (write_pieced_value): Throw OPTIMIZED_OUT_ERROR. * frame.c (frame_unwind_register): Throw OPTIMIZED_OUT_ERROR. * spu-tdep.c (spu_software_single_step): Throw OPTIMIZED_OUT_ERROR. * valops.c (value_assign): Throw OPTIMIZED_OUT_ERROR. --- gdb/dwarf2loc.c | 7 ++++--- gdb/exceptions.h | 4 ++++ gdb/frame.c | 3 ++- gdb/spu-tdep.c | 5 +++-- gdb/valops.c | 3 ++- 5 files changed, 15 insertions(+), 7 deletions(-) diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c index 2d15546..2b1f323 100644 --- a/gdb/dwarf2loc.c +++ b/gdb/dwarf2loc.c @@ -1893,9 +1893,10 @@ write_pieced_value (struct value *to, struct value *from) &optim, &unavail)) { if (optim) - error (_("Can't do read-modify-write to " - "update bitfield; containing word has been " - "optimized out")); + throw_error (OPTIMIZED_OUT_ERROR, + _("Can't do read-modify-write to " + "update bitfield; containing word " + "has been optimized out")); if (unavail) throw_error (NOT_AVAILABLE_ERROR, _("Can't do read-modify-write to update " diff --git a/gdb/exceptions.h b/gdb/exceptions.h index 129d29a..237764d 100644 --- a/gdb/exceptions.h +++ b/gdb/exceptions.h @@ -86,6 +86,10 @@ enum errors { traceframe. */ NOT_AVAILABLE_ERROR, + /* Value was optimized out. Note: if the value was a register, this + means the register was not saved in the frame. */ + OPTIMIZED_OUT_ERROR, + /* DW_OP_GNU_entry_value resolving failed. */ NO_ENTRY_VALUE_ERROR, diff --git a/gdb/frame.c b/gdb/frame.c index db94d98..69a8059 100644 --- a/gdb/frame.c +++ b/gdb/frame.c @@ -1007,7 +1007,8 @@ frame_unwind_register (struct frame_info *frame, int regnum, gdb_byte *buf) &lval, &addr, &realnum, buf); if (optimized) - error (_("Register %d was not saved"), regnum); + throw_error (OPTIMIZED_OUT_ERROR, + _("Register %d was not saved"), regnum); if (unavailable) throw_error (NOT_AVAILABLE_ERROR, _("Register %d is not available"), regnum); diff --git a/gdb/spu-tdep.c b/gdb/spu-tdep.c index fd54b1e..fdf435e 100644 --- a/gdb/spu-tdep.c +++ b/gdb/spu-tdep.c @@ -1614,8 +1614,9 @@ spu_software_single_step (struct frame_info *frame) else { if (optim) - error (_("Could not determine address of " - "single-step breakpoint.")); + throw_error (OPTIMIZED_OUT_ERROR, + _("Could not determine address of " + "single-step breakpoint.")); if (unavail) throw_error (NOT_AVAILABLE_ERROR, _("Could not determine address of " diff --git a/gdb/valops.c b/gdb/valops.c index 8e7b16f..d43c758 100644 --- a/gdb/valops.c +++ b/gdb/valops.c @@ -1188,7 +1188,8 @@ value_assign (struct value *toval, struct value *fromval) &optim, &unavail)) { if (optim) - error (_("value has been optimized out")); + throw_error (OPTIMIZED_OUT_ERROR, + _("value has been optimized out")); if (unavail) throw_error (NOT_AVAILABLE_ERROR, _("value is not available")); -- 1.7.11.7