From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32736 invoked by alias); 13 Nov 2013 20:43:25 -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 32725 invoked by uid 89); 13 Nov 2013 20:43:25 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.8 required=5.0 tests=AWL,BAYES_00,RDNS_NONE,SPF_HELO_PASS,SPF_PASS 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; Wed, 13 Nov 2013 20:43:23 +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 rADKhGDJ011520 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 13 Nov 2013 15:43:16 -0500 Received: from barimba.redhat.com (ovpn-113-124.phx2.redhat.com [10.3.113.124]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id rADKhGKi021978; Wed, 13 Nov 2013 15:43:16 -0500 From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH] use error, not internal_error, in dwarf2-frame.c Date: Wed, 13 Nov 2013 20:51:00 -0000 Message-Id: <1384375392-32110-1-git-send-email-tromey@redhat.com> X-SW-Source: 2013-11/txt/msg00355.txt.bz2 While writing a test case, I happened to introduce a bit of invalid CFI. This caused gdb to call internal_error. I think that gdb should not call internal_error for bad DWARF. Instead, it should simply throw an ordinary exception. This patch changes dwarf2-frame.c to follow this rule. No test case; but I could write one for one of the errors if you want. 2013-11-13 Tom Tromey * dwarf2-frame.c (execute_cfa_program, dwarf2_compile_cfa_to_ax) (dwarf2_frame_cache, dwarf2_frame_prev_register) (encoding_for_size, read_encoded_value): Use error, not internal_error. --- gdb/ChangeLog | 7 +++++++ gdb/dwarf2-frame.c | 20 ++++++++------------ 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/gdb/dwarf2-frame.c b/gdb/dwarf2-frame.c index e05236f..8f55e9f 100644 --- a/gdb/dwarf2-frame.c +++ b/gdb/dwarf2-frame.c @@ -680,8 +680,7 @@ bad CFI data; mismatched DW_CFA_restore_state at %s"), break; default: - internal_error (__FILE__, __LINE__, - _("Unknown CFI encountered.")); + error (_("Unknown CFI encountered.")); } } } @@ -954,7 +953,7 @@ dwarf2_compile_cfa_to_ax (struct agent_expr *expr, struct axs_value *loc, break; default: - internal_error (__FILE__, __LINE__, _("Unknown CFA rule.")); + error (_("Unknown CFA rule.")); } } @@ -1112,7 +1111,7 @@ dwarf2_frame_cache (struct frame_info *this_frame, void **this_cache) break; default: - internal_error (__FILE__, __LINE__, _("Unknown CFA rule.")); + error (_("Unknown CFA rule.")); } } if (ex.reason < 0) @@ -1364,7 +1363,7 @@ dwarf2_frame_prev_register (struct frame_info *this_frame, void **this_cache, return cache->reg[regnum].loc.fn (this_frame, this_cache, regnum); default: - internal_error (__FILE__, __LINE__, _("Unknown register rule.")); + error (_("Unknown register rule.")); } } @@ -1577,7 +1576,7 @@ encoding_for_size (unsigned int size) case 8: return DW_EH_PE_udata8; default: - internal_error (__FILE__, __LINE__, _("Unsupported address size")); + error (_("Unsupported address size")); } } @@ -1593,8 +1592,7 @@ read_encoded_value (struct comp_unit *unit, gdb_byte encoding, /* GCC currently doesn't generate DW_EH_PE_indirect encodings for FDE's. */ if (encoding & DW_EH_PE_indirect) - internal_error (__FILE__, __LINE__, - _("Unsupported encoding: DW_EH_PE_indirect")); + error (_("Unsupported encoding: DW_EH_PE_indirect")); *bytes_read_ptr = 0; @@ -1626,8 +1624,7 @@ read_encoded_value (struct comp_unit *unit, gdb_byte encoding, } break; default: - internal_error (__FILE__, __LINE__, - _("Invalid or unsupported encoding")); + error (_("Invalid or unsupported encoding")); } if ((encoding & 0x07) == 0x00) @@ -1674,8 +1671,7 @@ read_encoded_value (struct comp_unit *unit, gdb_byte encoding, *bytes_read_ptr += 8; return (base + bfd_get_signed_64 (unit->abfd, (bfd_byte *) buf)); default: - internal_error (__FILE__, __LINE__, - _("Invalid or unsupported encoding")); + error (_("Invalid or unsupported encoding")); } } -- 1.8.1.4