From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8626 invoked by alias); 30 Aug 2005 21:27:25 -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 8612 invoked by uid 22791); 30 Aug 2005 21:27:20 -0000 Received: from e32.co.us.ibm.com (HELO e32.co.us.ibm.com) (32.97.110.130) by sourceware.org (qpsmtpd/0.30-dev) with ESMTP; Tue, 30 Aug 2005 21:27:20 +0000 Received: from westrelay02.boulder.ibm.com (westrelay02.boulder.ibm.com [9.17.195.11]) by e32.co.us.ibm.com (8.12.10/8.12.9) with ESMTP id j7ULRGnK083204 for ; Tue, 30 Aug 2005 17:27:17 -0400 Received: from d03av04.boulder.ibm.com (d03av04.boulder.ibm.com [9.17.195.170]) by westrelay02.boulder.ibm.com (8.12.10/NCO/VERS6.7) with ESMTP id j7ULRG2L446492 for ; Tue, 30 Aug 2005 15:27:16 -0600 Received: from d03av04.boulder.ibm.com (loopback [127.0.0.1]) by d03av04.boulder.ibm.com (8.12.11/8.13.3) with ESMTP id j7ULRG3e029017 for ; Tue, 30 Aug 2005 15:27:16 -0600 Received: from dyn9047022123-009047022095.beaverton.ibm.com (dyn9047022123-009047022095.beaverton.ibm.com [9.47.22.95]) by d03av04.boulder.ibm.com (8.12.11/8.12.11) with ESMTP id j7ULRFHR028989 for ; Tue, 30 Aug 2005 15:27:16 -0600 From: Paul Gilliam Reply-To: pgilliam@us.ibm.com To: gdb-patches@sources.redhat.com Subject: fix "too much information" bug w/ "info vector" on PowerPC Date: Tue, 30 Aug 2005 21:44:00 -0000 User-Agent: KMail/1.6.2 MIME-Version: 1.0 Content-Disposition: inline Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Message-Id: <200508301459.57189.pgilliam@us.ibm.com> X-SW-Source: 2005-08/txt/msg00254.txt.bz2 Here is the problem: When I do 'info vector', I get ALL the registers, not just the vector registers. This happens because a test is made to see if a given register is in the vector group. The test compares the incoming register number against appropriate register numbers from tdep, ignoring the fact that if, for example, there are no ev registers, the value of tdep->ppc_ev0_regnum will be -1. Same thing for tdep->ppc_vr0_regnum. I was temped to commit this is obvious, but wanted the warm fuzzy of peer review. -=# Paul #=- 2005-08-30 Paul Gilliam * rs6000-tdep.c (rs6000_register_reggroup_p): don't assume that tdep->ppc_vr0_regnum or tdep->ppc_ev0_regnum are not -1 Index: rs6000-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/rs6000-tdep.c,v retrieving revision 1.241 diff -3 -c -p -r1.241 rs6000-tdep.c *** rs6000-tdep.c 25 May 2005 03:12:13 -0000 1.241 --- rs6000-tdep.c 30 Aug 2005 21:07:25 -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