From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6005 invoked by alias); 4 Sep 2003 14:00:40 -0000 Mailing-List: contact gdb-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sources.redhat.com Received: (qmail 5992 invoked from network); 4 Sep 2003 14:00:39 -0000 Received: from unknown (HELO localhost.redhat.com) (66.30.197.194) by sources.redhat.com with SMTP; 4 Sep 2003 14:00:39 -0000 Received: from redhat.com (localhost [127.0.0.1]) by localhost.redhat.com (Postfix) with ESMTP id 0A5762B8B; Thu, 4 Sep 2003 10:00:40 -0400 (EDT) Message-ID: <3F574587.70401@redhat.com> Date: Thu, 04 Sep 2003 14:00:00 -0000 From: Andrew Cagney User-Agent: Mozilla/5.0 (X11; U; NetBSD macppc; en-US; rv:1.0.2) Gecko/20030820 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Daniel Jacobowitz Cc: Mark Kettenis , gdb@sources.redhat.com Subject: Re: [RFC] Register sets References: <200308232249.h7NMnvhh090154@elgar.kettenis.dyndns.org> <20030824164347.GA17520@nevyn.them.org> <200308252234.h7PMYqFu001245@elgar.kettenis.dyndns.org> <3F4B8173.1000302@redhat.com> <20030826165547.GA22836@nevyn.them.org> <86he3xrkjb.fsf@elgar.kettenis.dyndns.org> <20030904125514.GA2577@nevyn.them.org> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-SW-Source: 2003-09/txt/msg00056.txt.bz2 > Hmm, yes and no. That definition of regset is only useful for core > files; I would like something more generally useful, for remote and > native use. I also don't really like passing the core gdbarch around, > for the same reason. How about this instead? > > struct regset > { > void (*supply_regset)(struct regcache *, const void *, size_t, int); > void (*read_regset)(struct regcache *, void *, size_t, int); > }; > > const struct regset * > core_section_to_regset (struct gdbarch *core_gdbarch, > const char *sec_name, size_t sec_size); > > which would then allow: > > const struct regset * > remote_name_to_regset (const char *name); As far as I know, the required lookups are: REGNUM -> REGSET foreach REGSET and not SETNAME -> REGSET. This is so that a request for a single register, or all registers, can be directed to the correct regset. I also think having remote and corefile adopt an identical naming schema should make life easier. As for the architecture, supply_regset needs this. It might, for instance, be an x86-64 method supplying registers to an i386 register cache. -- I should note that I do know of a second way of handling cross architectures (x86-64 on i386 et.al.). Add a table of cross architecture unwinders and then allow different frames to have different architectures vis: x86-64 frame i386 frame i386 frame ia64 frame but that's getting way ahead of many other changes. enjoy, Andrew