Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Mark Kettenis <kettenis@chello.nl>
To: drow@mvista.com
Cc: ac131313@redhat.com, gdb@sources.redhat.com
Subject: Re: [RFC] Register sets
Date: Thu, 04 Sep 2003 22:05:00 -0000	[thread overview]
Message-ID: <200309042205.h84M506L034340@elgar.kettenis.dyndns.org> (raw)
In-Reply-To: <20030904140822.GA22838@nevyn.them.org> (message from Daniel Jacobowitz on Thu, 4 Sep 2003 10:08:23 -0400)

   Date: Thu, 4 Sep 2003 10:08:23 -0400
   From: Daniel Jacobowitz <drow@mvista.com>

   On Thu, Sep 04, 2003 at 10:00:39AM -0400, Andrew Cagney wrote:
   > 
   > >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.

   I'd really rather not enforce that - remote can provide regsets that
   BFD doesn't know about, and the ".reg" names would look silly being
   defined as part of the remote protocol.  My instinct says that the
   flexibility is worthwhile so that the two implementation details don't
   become coupled.

I'm with Daniel here.  For most OS'es the corefile format isn't under
our control, and some of these formats simply don't make too much
sense.  We shouldn't be forced to use those in the remote protocol.
And I don't think BFD should do a transformation on the corefile data
when it turns the register data into a section.

   > As for the architecture, supply_regset needs this.  It might, for 
   > instance, be an x86-64 method supplying registers to an i386 register cache.

   It needs the regcache's architecture, but I don't believe it needs any
   other.  The method will be defined for a particular regcache layout,
   which incorporates all of the information it needs about the other
   involved architecture.  We could get the regcache's architecture from
   the regcache, or pass it explicitly.

See my reply to Daniels message earlier in this thread.  Oh, and I do
think we should get the GDBARCH from the REGCACHE.  We already can do
this for a frame so it makes sense to do it for a register cache too.
It's straightforward and I'll implement it this weekend.

   > 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
   > 	<x86-64 X i386>
   > 	i386 frame
   > 	i386 frame
   > 	<ia64 X i386>
   > 	ia64 frame
   > 
   > but that's getting way ahead of many other changes.

A cross unwinder here would be a method that converts say an amd64
register cache into an i386 register cache (among other things)?

Mark


  parent reply	other threads:[~2003-09-04 22:05 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-08-23 22:50 Mark Kettenis
2003-08-24 16:43 ` Daniel Jacobowitz
2003-08-25 22:35   ` Mark Kettenis
2003-08-26 15:49     ` Andrew Cagney
2003-08-26 16:55       ` Daniel Jacobowitz
2003-08-27  3:50         ` Andrew Cagney
2003-08-31 14:04         ` Mark Kettenis
2003-09-02 18:40           ` Andrew Cagney
2003-09-04 21:31             ` Mark Kettenis
2003-09-04 12:55           ` Daniel Jacobowitz
2003-09-04 14:00             ` Andrew Cagney
2003-09-04 14:08               ` Daniel Jacobowitz
2003-09-04 15:04                 ` Andrew Cagney
2003-09-04 15:13                   ` Daniel Jacobowitz
2003-09-04 22:07                     ` Mark Kettenis
2003-09-04 22:05                 ` Mark Kettenis [this message]
2003-09-04 22:16                   ` Andrew Cagney
2003-09-04 22:59                   ` Andrew Cagney
2003-09-05 23:15                     ` Daniel Jacobowitz
2003-09-09  4:21                       ` Andrew Cagney
2003-09-04 21:58             ` Mark Kettenis
2003-09-06  0:02             ` Jim Blandy
2003-09-06 14:18               ` Mark Kettenis
2003-09-09  4:51               ` Andrew Cagney
2003-09-09 17:15                 ` Jim Blandy
2003-09-09 19:16                   ` Andrew Cagney
2003-08-29 20:20       ` Mark Kettenis

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200309042205.h84M506L034340@elgar.kettenis.dyndns.org \
    --to=kettenis@chello.nl \
    --cc=ac131313@redhat.com \
    --cc=drow@mvista.com \
    --cc=gdb@sources.redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox