From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13073 invoked by alias); 29 Apr 2004 03:12:45 -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 13060 invoked from network); 29 Apr 2004 03:12:44 -0000 Received: from unknown (HELO nevyn.them.org) (66.93.172.17) by sources.redhat.com with SMTP; 29 Apr 2004 03:12:44 -0000 Received: from drow by nevyn.them.org with local (Exim 4.32 #1 (Debian)) id 1BJ1ya-0003Ib-K3; Wed, 28 Apr 2004 23:12:40 -0400 Date: Thu, 29 Apr 2004 03:12:00 -0000 From: Daniel Jacobowitz To: Andrew Cagney Cc: Michael Snyder , gdb-patches@sources.redhat.com, cagney Subject: Re: [RFA] mips 32/64 register/stack fix Message-ID: <20040429031240.GA12518@nevyn.them.org> Mail-Followup-To: Andrew Cagney , Michael Snyder , gdb-patches@sources.redhat.com, cagney References: <408813A9.6000402@redhat.com> <4088242A.4070601@gnu.org> <40883C90.7030509@redhat.com> <40884155.2090205@gnu.org> <40884BEF.5070909@redhat.com> <409025F2.9080704@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <409025F2.9080704@gnu.org> User-Agent: Mutt/1.5.5.1+cvs20040105i X-SW-Source: 2004-04/txt/msg00660.txt.bz2 On Wed, Apr 28, 2004 at 05:45:22PM -0400, Andrew Cagney wrote: > >Here's your tdep info: > >{elf_flags = 1610625025, mips_abi = MIPS_ABI_EABI32, > > I was looking to see if anything like that was present -> it is clearly > identified as a 32-bit ABI binary. > > I think the bug is in mips_register_type, the tail end should probably > be changed to read something like: > > else if (regnum >= NUM_REGS > && gdbarch_tdep (gdbarch)->mips64_transfers_32bit_regs_p) > /* The target, while using a 64-bit raw register buffer, is only > transfering 32-bits of each integer register. Reflect this in > the cooked/pseudo register value. */ > return builtin_type_int32; > else if (regnum > NUM_REGS > && mips_saved_regsize (gdbarch) == 4) > /* A 32-bit ABI such as o32 possibly running on a 64-bit ISA. */ > return builtin_type_int32; > else if (mips_regsize (gdbarch) == 8) > /* 64-bit ISA. */ > return builtin_type_int64; > else > /* 32-bit ISA. */ > return builtin_type_int32; Would you mind clarifying the reason for having mips_regsize, which is used in a number of other places, return a regsize based on the ISA? This change to mips_register_type conveys the fact that we've only got 32 bits of data. But we'll choose to print (in info registers) a 64-bit wide field for each GPR if the binary is tagged E_MIPS_ARCH_64 | E_MIPS_ABI_EABI32, and a 32-bit field if it's tagged E_MIPS_ARCH_2 | E_MIPS_ABI_EABI32. Conceptually, I think we're interested in some combination of the available register size (-> a property of the target) and the size of registers known to the inferior program (-> unclear mix of its ABI and ISA). -- Daniel Jacobowitz MontaVista Software Debian GNU/Linux Developer