From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8589 invoked by alias); 31 Aug 2005 20:26:17 -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 8408 invoked by uid 22791); 31 Aug 2005 20:25:36 -0000 Received: from e2.ny.us.ibm.com (HELO e2.ny.us.ibm.com) (32.97.182.142) by sourceware.org (qpsmtpd/0.30-dev) with ESMTP; Wed, 31 Aug 2005 20:25:36 +0000 Received: from westrelay02.boulder.ibm.com (westrelay02.boulder.ibm.com [9.17.195.11]) by e2.ny.us.ibm.com (8.12.11/8.12.11) with ESMTP id j7VKPVGU027940 for ; Wed, 31 Aug 2005 16:25:31 -0400 Received: from d03av01.boulder.ibm.com (d03av01.boulder.ibm.com [9.17.195.167]) by westrelay02.boulder.ibm.com (8.12.10/NCO/VERS6.7) with ESMTP id j7VKOFMc397600 for ; Wed, 31 Aug 2005 14:24:15 -0600 Received: from d03av01.boulder.ibm.com (loopback [127.0.0.1]) by d03av01.boulder.ibm.com (8.12.11/8.13.3) with ESMTP id j7VKOEjE011782 for ; Wed, 31 Aug 2005 14:24:14 -0600 Received: from dyn9047022123-009047022095.beaverton.ibm.com (dyn9047022123-009047022095.beaverton.ibm.com [9.47.22.95]) by d03av01.boulder.ibm.com (8.12.11/8.12.11) with ESMTP id j7VKOEEV011770 for ; Wed, 31 Aug 2005 14:24:14 -0600 From: Paul Gilliam Reply-To: pgilliam@us.ibm.com To: gdb-patches@sources.redhat.com Subject: Re: fix "too much information" bug w/ "info vector" on PowerPC Date: Wed, 31 Aug 2005 20:30:00 -0000 User-Agent: KMail/1.6.2 References: <200508301459.57189.pgilliam@us.ibm.com> In-Reply-To: MIME-Version: 1.0 Content-Disposition: inline Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <200508311323.15337.pgilliam@us.ibm.com> X-SW-Source: 2005-08/txt/msg00270.txt.bz2 On Tuesday 30 August 2005 14:42, Jim Blandy wrote: > - Could you also add comments above the definitions of > tdep->ppc_vr0_regnum and tdep->ppc_ev0_regnum in ppc-tdep.h? > Perhaps such comments could have prevented the bugs's appearance in > the first place. Here is the new patch with comments added/chanded in ppc-tdep.h If I hear no objections, I'll commit this tomorrow. -=# Paul #=- 2005-08-30 Paul Gilliam * ppc-tdep.h: better explanation of using -1 for nonexistant registers * rs6000-tdep.c (rs6000_register_reggroup_p): don't assume that tdep->ppc_vr0_regnum or tdep->ppc_ev0_regnum are not -1 Index: ppc-tdep.h =================================================================== RCS file: /cvs/src/src/gdb/ppc-tdep.h,v retrieving revision 1.46 diff -c -3 -p -r1.46 ppc-tdep.h *** ppc-tdep.h 25 May 2005 03:12:13 -0000 1.46 --- ppc-tdep.h 31 Aug 2005 20:06:35 -0000 *************** struct gdbarch_tdep *** 152,177 **** int ppc_ctr_regnum; /* Count register */ int ppc_xer_regnum; /* Integer exception register */ ! /* On PPC and RS6000 variants that have no floating-point ! registers, the next two members will be -1. */ int ppc_fp0_regnum; /* floating-point register 0 */ ! int ppc_fpscr_regnum; /* Floating point status and condition ! register */ ! int ppc_sr0_regnum; /* segment register 0, or -1 on ! variants that have no segment ! registers. */ int ppc_mq_regnum; /* Multiply/Divide extension register */ int ppc_vr0_regnum; /* First AltiVec register */ int ppc_vrsave_regnum; /* Last AltiVec register */ int ppc_ev0_upper_regnum; /* First GPR upper half register */ int ppc_ev0_regnum; /* First ev register */ int ppc_ev31_regnum; /* Last ev register */ int ppc_acc_regnum; /* SPE 'acc' register */ int ppc_spefscr_regnum; /* SPE 'spefscr' register */ ! int lr_frame_offset; /* Offset to ABI specific location where ! link register is saved. */ /* An array of integers, such that sim_regno[I] is the simulator register number for GDB register number I, or -1 if the --- 152,184 ---- int ppc_ctr_regnum; /* Count register */ int ppc_xer_regnum; /* Integer exception register */ ! /* Not all PPC and RS6000 variants will have the registers ! represented below. A -1 is used to indicate that the register ! is not present in this variant. */ ! ! /* Floating-point registers. */ int ppc_fp0_regnum; /* floating-point register 0 */ ! int ppc_fpscr_regnum; /* fp status and condition register */ ! /* Segment registers */ ! int ppc_sr0_regnum; /* segment register 0 */ + /* Used in some older Power architectures. */ int ppc_mq_regnum; /* Multiply/Divide extension register */ + + /* Altivec registers */ int ppc_vr0_regnum; /* First AltiVec register */ int ppc_vrsave_regnum; /* Last AltiVec register */ int ppc_ev0_upper_regnum; /* First GPR upper half register */ + + /* SPE registers. */ int ppc_ev0_regnum; /* First ev register */ int ppc_ev31_regnum; /* Last ev register */ int ppc_acc_regnum; /* SPE 'acc' register */ int ppc_spefscr_regnum; /* SPE 'spefscr' register */ ! ! /* Offset to ABI specific location where link register is saved. */ ! int lr_frame_offset; /* An array of integers, such that sim_regno[I] is the simulator register number for GDB register number I, or -1 if the Index: rs6000-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/rs6000-tdep.c,v retrieving revision 1.241 diff -c -3 -p -r1.241 rs6000-tdep.c *** rs6000-tdep.c 25 May 2005 03:12:13 -0000 1.241 --- rs6000-tdep.c 31 Aug 2005 20:06:35 -0000 *************** rs6000_register_reggroup_p (struct gdbar *** 1882,1890 **** if (group == float_reggroup) return float_p; ! vector_p = ((regnum >= tdep->ppc_vr0_regnum && regnum < tdep->ppc_vr0_regnum + 32) ! || (regnum >= tdep->ppc_ev0_regnum && regnum < tdep->ppc_ev0_regnum + 32) || regnum == tdep->ppc_vrsave_regnum || regnum == tdep->ppc_acc_regnum --- 1882,1892 ---- if (group == float_reggroup) return float_p; ! vector_p = ((tdep->ppc_vr0_regnum >= 0 ! && regnum >= tdep->ppc_vr0_regnum && regnum < tdep->ppc_vr0_regnum + 32) ! || (tdep->ppc_ev0_regnum >= 0 ! && regnum >= tdep->ppc_ev0_regnum && regnum < tdep->ppc_ev0_regnum + 32) || regnum == tdep->ppc_vrsave_regnum || regnum == tdep->ppc_acc_regnum