Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Jim Blandy <jimb@redhat.com>
To: "Ken Dyck" <Ken.Dyck@dspfactory.com>
Cc: gdb@sources.redhat.com
Subject: Re: FW: Targeting dual Harvard architectures
Date: Wed, 29 Oct 2003 06:08:00 -0000	[thread overview]
Message-ID: <vt2smlcmvao.fsf@zenia.home> (raw)
In-Reply-To: <OF482B462C.4FF75047-ON05256DCC.00487BDC@dspfactory.com>


"Ken Dyck" <Ken.Dyck@dspfactory.com> writes:
> 1. Is it possible to modify gdb to support architectures with multiple
> memory spaces in a "user friendly" way (where "user friendly" is
> something like what David Taylor described in
> http://sources.redhat.com/ml/gdb/2001-02/msg00090.html)? So far my
> impression is yes.

Yes --- with the understanding that it's restricted to just distinct
code and data spaces at the moment --- you can say:

  x/i (@code char *) 0x1234
  x/i (@data char *) 0x1234

and it'll do the right thing, if you define the ADDRESS_TO_POINTER and
POINTER_TO_ADDRESS methods appropriately.

(Hey, this isn't in the GDB manual anywhere!)

But you've actually got a case where this needs to be extended to
support an arbitrary set of architecture-defined spaces, which the
current code does not support.  If I recall correctly, this was
discussed when the current @code and @data support went in, but it was
left as a future extension, since we didn't know of any architectures
that actually wanted it.  Now we do.


> 2. What changes would be necessary?

Well, at the moment, TYPE_FLAG_CODE_SPACE and TYPE_FLAG_DATA space are
just two distinct flags that could be attached to a type.  Similarly,
"@code" and "@data" are hard-coded in gdbtypes.c.  What I think we
want to do is put the vocabulary of address space flags entirely under
the control of target-specific code, via gdbarch methods.

- The type flags would be broken out into their own field of 'struct
  type' (not 'struct main_type').  It could just be an int; core GDB
  would always call gdbarch methods to operate on it, so its
  interpretation would be completely at the convenience of the
  arch-specific code.  If you wanted to be very pure, you could use a
  void * instead of an int.

- There'd be a gdbarch method for turning an address space name into
  one of these ints, for parsing, and another for turning an int into
  a name, for printing.

- At the moment, make_type_with_address_space is doing two jobs ---
  it's handling both the address space stuff, and the non-standard
  pointer type stuff (at the moment, only s/390 'mode32' pointers).
  You'd probably need to split that into two distinct functions, and
  give them better names.  Not sure here.

- You'd need to fix up the existing targets that use the type flags to
  use the new ints.  It looks like just avr-tdep.c and d10v-tdep.c.

- If it turns out that all the targets that are using these address
  spaces end up using similar code and data structures for it, you'll
  want to look at factoring things out into support functions, so
  targets with trivial needs ("I just have N address spaces named X,
  Y, Z, ...") can get what they need with trivial tdep code.

> 3. How much effort would be involved in making such modifications?

Most of the time would go into figuring out how things work now.  The
actual changes wouldn't be too bad, since it doesn't seem like there's
too much code that mucks about with this stuff; just bits here and
there.  So how good you are at finding your way through unfamiliar
code would be the dominating factor, I'd guess.


  reply	other threads:[~2003-10-29  6:08 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-10-27 13:13 Ken Dyck
2003-10-29  6:08 ` Jim Blandy [this message]
2003-10-29  6:16   ` Jim Blandy
2003-10-29  6:58   ` Eli Zaretskii
2003-10-29  8:21   ` Kevin Buettner
2003-10-29 15:44     ` Jim Blandy
2003-10-29 16:59   ` Andrew Cagney
2003-10-29 17:19     ` Jim Blandy

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=vt2smlcmvao.fsf@zenia.home \
    --to=jimb@redhat.com \
    --cc=Ken.Dyck@dspfactory.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