From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30541 invoked by alias); 5 Mar 2004 10:42:20 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 30534 invoked from network); 5 Mar 2004 10:42:19 -0000 Received: from unknown (HELO mx1.redhat.com) (66.187.233.31) by sources.redhat.com with SMTP; 5 Mar 2004 10:42:19 -0000 Received: from int-mx2.corp.redhat.com (nat-pool-rdu-dmz.redhat.com [172.16.52.200] (may be forged)) by mx1.redhat.com (8.11.6/8.11.6) with ESMTP id i25AgIb21212 for ; Fri, 5 Mar 2004 05:42:18 -0500 Received: from potter.sfbay.redhat.com (potter.sfbay.redhat.com [172.16.27.15]) by int-mx2.corp.redhat.com (8.11.6/8.11.6) with ESMTP id i25AgHM17426 for ; Fri, 5 Mar 2004 05:42:18 -0500 Received: from cygbert.vinschen.de (vpn50-33.rdu.redhat.com [172.16.50.33]) by potter.sfbay.redhat.com (8.11.6/8.11.6) with ESMTP id i25AgGR07932 for ; Fri, 5 Mar 2004 02:42:16 -0800 Received: by cygbert.vinschen.de (Postfix, from userid 500) id 5D3E2580C7; Fri, 5 Mar 2004 11:42:10 +0100 (CET) Date: Fri, 05 Mar 2004 10:42:00 -0000 From: Corinna Vinschen To: gdb-patches@sources.redhat.com Subject: Re: [RFA] sh-tdep.c: New patch solving gdb1291.exp (was Re: [RFA] Fix PR tdep/1291, SH prologue scanning bug) Message-ID: <20040305104210.GG21805@cygbert.vinschen.de> Reply-To: gdb-patches@sources.redhat.com Mail-Followup-To: gdb-patches@sources.redhat.com References: <200402192344.38974.fnf@ninemoons.com> <20040225163336.GY1587@cygbert.vinschen.de> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20040225163336.GY1587@cygbert.vinschen.de> User-Agent: Mutt/1.4.2i X-SW-Source: 2004-03.o/txt/msg00101.txt Message-ID: <20040305104200.Y1ps7tws1XdO5e2GV5Y28_vVumRRHdZs3BgxEYCcsHI@z> Ping? Corinna On Feb 25 17:33, Corinna Vinschen wrote: > On Feb 19 23:44, Fred Fish wrote: > > This patch fixes the bug reported in PR 1291. It is based on the suggested > > patch included in the PR. I believe it is small enough to not need a > > copyright assignment, but recent events may have changed that. :-( > > > > -Fred > > > > 2004-02-19 Fred Fish > > > > Fix for PR tdep/1291 as suggested by inaba@src.ricoh.co.jp > > * sh-tdep.c (IS_MOV_R3): Rename to IS_MOV_IMM_R3 and fix pattern. > > (IS_ADD_R3SP): Rename to IS_ADD_R3_SP for consistency. > > (IS_MOVW_R1): New macro. > > (IS_MOVL_R1): New macro. > > (IS_SUB_R1_SP): New macro. > > (sh_analyze_prologue): Add r1_val local var and initialize to zero. > > Use IS_MOVW_R1, IS_MOVL_R1, and IS_SUB_R1_SP to recognize use of > > stack allocation via constant loaded into r1. > > I've looked into this one and found that there's a very simple patch > to solve that issue. Basically the evaluation of the memory address > to access in PC relative addressing was misbehaving. The below patch > evaluates the PC relative memory location now exactly according to the > descriptions of the PC relative addressing modes with 8 bit displacement > in the official SH documentation: > > FOO.w @(disp:8,PC): > > displacement = (instruction & 0xff) << 1; > address = (PC + 4) + displacement; > > FOO.l @(disp:8,PC): > > displacement = (instruction & 0xff) << 2; > address = ((PC & 0xfffffffc) + 4) + displacement; > > I checked the entire testsuite against sh2, sh2e, sh3, sh4 and sh4-nofpu. > In all cases, the FAIL count has been reduced by exactly one, the FAIL > from gdb1291.exp. > > Is that ok to checkin? > > > Corinna > > * sh-tdep.c (sh_analyze_prologue): Align PC relative addressing > to official documentation. > > Index: sh-tdep.c > =================================================================== > RCS file: /cvs/src/src/gdb/sh-tdep.c,v > retrieving revision 1.165 > diff -u -p -r1.165 sh-tdep.c > --- sh-tdep.c 20 Feb 2004 00:16:16 -0000 1.165 > +++ sh-tdep.c 25 Feb 2004 15:47:32 -0000 > @@ -440,9 +440,9 @@ sh_analyze_prologue (CORE_ADDR pc, CORE_ > if (reg < 14) > { > sav_reg = reg; > - offset = (((inst & 0xff) ^ 0x80) - 0x80) << 1; > + offset = (inst & 0xff) << 1; > sav_offset = > - read_memory_integer (((pc + 4) & ~3) + offset, 2); > + read_memory_integer ((pc + 4) + offset, 2); > } > } > } > @@ -450,13 +450,13 @@ sh_analyze_prologue (CORE_ADDR pc, CORE_ > { > if (sav_reg < 0) > { > - reg = (inst & 0x0f00) >> 8; > + reg = GET_TARGET_REG (inst); > if (reg < 14) > { > sav_reg = reg; > - offset = (((inst & 0xff) ^ 0x80) - 0x80) << 1; > + offset = (inst & 0xff) << 2; > sav_offset = > - read_memory_integer (((pc + 4) & ~3) + offset, 4); > + read_memory_integer (((pc & 0xfffffffc) + 4) + offset, 4); > } > } > } > > -- > Corinna Vinschen > Cygwin Developer > Red Hat, Inc. -- Corinna Vinschen Cygwin Developer Red Hat, Inc.