From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4006 invoked by alias); 11 Apr 2013 23:01:41 -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 3982 invoked by uid 89); 11 Apr 2013 23:01:40 -0000 X-Spam-SWARE-Status: No, score=-8.9 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,KHOP_THREADED,RCVD_IN_DNSWL_HI,RCVD_IN_HOSTKARMA_W,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.1 Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Thu, 11 Apr 2013 23:01:40 +0000 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r3BN1dOf016904 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 11 Apr 2013 19:01:39 -0400 Received: from brno.lan (ovpn01.gateway.prod.ext.ams2.redhat.com [10.39.146.11]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id r3BN1bA7011955 for ; Thu, 11 Apr 2013 19:01:38 -0400 Subject: [PATCH 22/26] -Wpointer-sign: dwarf2-frame.c: Pass unsigned variable to safe_read_uleb128. To: gdb-patches@sourceware.org From: Pedro Alves Date: Fri, 12 Apr 2013 09:54:00 -0000 Message-ID: <20130411230137.16791.28220.stgit@brno.lan> In-Reply-To: <20130411225847.16791.29283.stgit@brno.lan> References: <20130411225847.16791.29283.stgit@brno.lan> User-Agent: StGit/0.16 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-SW-Source: 2013-04/txt/msg00361.txt.bz2 The 'bytes_read' change should be obvious. As for the other hunk, we're passing the address of the signed 'offset' to safe_read_uleb128, which expects unsigned. Fix it by passing the address of the unsigned 'utmp' instead, like already done on other spots in the file. gdb/ 2013-04-11 Pedro Alves * dwarf2-frame.c (execute_cfa_program): Make 'bytes_read' local unsigned. Pass 'tmp' to safe_read_uleb128 instead of the signed 'offset', and adjust. --- gdb/dwarf2-frame.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gdb/dwarf2-frame.c b/gdb/dwarf2-frame.c index ec4edfa..9ec0d2f 100644 --- a/gdb/dwarf2-frame.c +++ b/gdb/dwarf2-frame.c @@ -410,7 +410,7 @@ execute_cfa_program (struct dwarf2_fde *fde, const gdb_byte *insn_ptr, CORE_ADDR pc, struct dwarf2_frame_state *fs) { int eh_frame_p = fde->eh_frame_p; - int bytes_read; + unsigned int bytes_read; enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); while (insn_ptr < insn_end && fs->pc <= pc) @@ -672,8 +672,8 @@ bad CFI data; mismatched DW_CFA_restore_state at %s"), case DW_CFA_GNU_negative_offset_extended: insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, ®); reg = dwarf2_frame_adjust_regnum (gdbarch, reg, eh_frame_p); - insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &offset); - offset *= fs->data_align; + insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &utmp); + offset = utmp * fs->data_align; dwarf2_frame_state_alloc_regs (&fs->regs, reg + 1); fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAVED_OFFSET; fs->regs.reg[reg].loc.offset = -offset;