From: Andrew Cagney <cagney@gnu.org>
To: Stan Shebs <stanshebs@earthlink.net>
Cc: gdb@sourceware.org
Subject: Re: Address spaces
Date: Thu, 31 Jul 2008 18:43:00 -0000 [thread overview]
Message-ID: <4891DC0C.8060503@gnu.org> (raw)
In-Reply-To: <4887C7BD.80601@earthlink.net>
Stan Shebs wrote:
> One of the recurring themes I'm noticing in my little bit of
> prototyping for multiprogram GDB is the need for a general concept of
> "address space". It's not quite the same as program/exec, because
> several programs could be in one address space in a non-virtual-memory
> system. It's not quite the same as process, because it applies to
> address lookup in execs prior to running any of them. It seems most
> like a tag glued on the front of a CORE_ADDR in fact (change CORE_ADDR
> to a struct? urgh).
>
> Anyway, I'm just throwing this out to get people's thoughts, and see
> if I'm missing an existing basic type or bit of infrastructure that
> could serve the purpose. I don't think address space objects would be
> user-visible, nor have very many properties; I think their main
> purpose in practice will be to keep target addresses in different
> execs and processes from getting mixed up with each other.
>
[I point this out as it might provide you with a tangable example of a
change that may, or may not, benefit from an implementation in C++]
I suspect that what we're describing here is something like:
frame
has-a thread
thread
has-a address_space
address_space
-> what a processor / task sees (I & D?)
has-a-multiple segment/section
-> for instance a shared object (or program mapped into memory);
and by implication methods for doing address <-> symbol lookups
has-a-multiple low-level-breakpoint
-> more on this below
address
has-a address_space
has-a offset -- the current CORE_ADDR
but if we examine the code, some of this is less clear. As you
noticed,, for a large part, the address-space is implied by the
context. For instance, given a specified frame, do an address/name lookup.
It might also be useful to examine a specific case which gdb, without
something like the above, can't a program correctly; credit to pmuldoon
for some of the ideas here.
Let's consider a vfork. If GDB is tracing both the parent and child of
a vfork then it will likely end up with an object relationship as follows:
v-parent v-child
| |
`----+----'
|
address_space
that is, both the vfork parent and child, after the vfork, but before
the exec/exit, share a common address_space. Why? Because, this
correctly reflects how the parent and child share memory, code, and even
breakpoints. For instance, since the v-child shares the v-parent's
address space, the v-child can hit the v-parent's breakpoints, and this
model lets us represent this.
prev parent reply other threads:[~2008-07-31 15:37 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-24 0:14 Stan Shebs
2008-07-24 0:30 ` Doug Evans
2008-07-24 6:15 ` Stan Shebs
2008-07-24 15:56 ` Ulrich Weigand
2008-07-24 18:17 ` Stan Shebs
2008-07-24 18:28 ` Doug Evans
2008-07-25 5:52 ` Michael Snyder
2008-07-25 8:50 ` Jeremy Bennett
2008-07-24 20:31 ` Ulrich Weigand
2008-07-25 18:50 ` Stan Shebs
2008-07-25 3:31 ` Michael Snyder
2008-07-24 21:49 ` Paul Pluzhnikov
2008-07-25 3:29 ` Michael Snyder
2008-07-25 18:32 ` Stan Shebs
2008-07-25 19:13 ` Mark Kettenis
2008-07-25 19:24 ` Stan Shebs
2008-07-31 18:43 ` Andrew Cagney [this message]
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=4891DC0C.8060503@gnu.org \
--to=cagney@gnu.org \
--cc=gdb@sourceware.org \
--cc=stanshebs@earthlink.net \
/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