From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28909 invoked by alias); 14 Jun 2003 22:44:30 -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 18673 invoked from network); 14 Jun 2003 22:39:48 -0000 Received: from unknown (HELO localhost.redhat.com) (24.157.166.107) by sources.redhat.com with SMTP; 14 Jun 2003 22:39:48 -0000 Received: from redhat.com (localhost [127.0.0.1]) by localhost.redhat.com (Postfix) with ESMTP id E1A972B5F; Sat, 14 Jun 2003 18:39:40 -0400 (EDT) Message-ID: <3EEBA42C.90603@redhat.com> Date: Sat, 14 Jun 2003 22:44:00 -0000 From: Andrew Cagney User-Agent: Mozilla/5.0 (X11; U; NetBSD macppc; en-US; rv:1.0.2) Gecko/20030223 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Mark Kettenis Cc: Daniel Jacobowitz , gdb-patches@sources.redhat.com Subject: Re: [patch rfc] Revamp REGISTER_TO_VALUE et.al. References: <3EE9F5CB.6050007@redhat.com> <20030613160954.GA4780@nevyn.them.org> <86he6tzta9.fsf@elgar.kettenis.dyndns.org> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-SW-Source: 2003-06/txt/msg00500.txt.bz2 > Did anyone have better test cases? > >> >> I haven't checked, but gdb/214 might do... > > > I'm not sure whether the sample code in gdb/214 has anything to add to > the stuff that's already tested by gdb.base/store.exp. It suffers > from the same problem as those test in that it is highly dependent on > the compiler you use whether a variable is stored in a register or > not. The only really reliable test I can imagine is hand-coded > assembler :-(. Well, the assembler now has a CFI syntax so it is feasible. However, it turns out that throwing a few more uses of the word "register" at store.exp has pretty much the same effect :-) I've committed the below. Andrew > 2003-06-13 Andrew Cagney > Mark Kettenis > > * gdbarch.sh (CONVERT_REGISTER_P): Add "type" parameter. > (REGISTER_TO_VALUE, VALUE_TO_REGISTER): Replace raw buffer > parameter with "frame". > * gdbarch.h, gdbarch.c: Re-generate. > * frame.h (put_frame_register): Declare. > * frame.c (put_frame_register): New function. > * arch-utils.c (legacy_convert_register_p): Add "type" parameter. > (legacy_register_to_value): Rewrite, use "frame" to get the > register value. > (legacy_value_to_register): Rewrite, use "frame" to find the > register's location before storing. > * arch-utils.h (legacy_convert_register_p): Update. > (legacy_register_to_value, legacy_value_to_register): Update. > * findvar.c (value_from_register): Rewrite, eliminate use of > REGISTER_CONVERT_TO_TYPE, pass "type" to CONVERT_REGISTER_P, pass > "frame" to REGISTER_TO_VALUE. > * valops.c (value_assign): Move the CONVERT_REGISTER code to the > lval_reg_frame_relative + lval_register branch of the switch. Do > not use REGISTER_CONVERT_FROM_TYPE. Use put_frame_register. > * i386-tdep.c (I386_EBX_REGNUM, I386_ECX_REGNUM, I386_ESI_REGNUM, > I386_EDI_REGNUM): New defines. > (i386_next_regnum, i386_convert_register_p, > i386_register_to_value, i386_value_to_register): New functions. > (i386_register_convertible, i386_register_convert_to_virtual, > i386_convert_to_raw): Remove functions. > (i386_gdbarch_init): Set convert_register_p, register_to_value and > value_to_register instead of register_convertible, > register_convert_to_virtual and register_convert_to_raw. > * mips-tdep.c (mips_convert_register_p): New function. > (mips_value_to_register): Replace mips_register_convert_from_type. > (mips_register_to_value): Replace mips_register_convert_to_type. > (mips_gdbarch_init): Set conver_register_p, value_to_register and > register_to_value. > * alpha-tdep.c (alpha_convert_register_p): Update. > (alpha_value_to_register): Update, store the register. > (alpha_register_to_value): Update, fetch the register. >