From: "Ulrich Weigand" <uweigand@de.ibm.com>
To: pedro@codesourcery.com (Pedro Alves)
Cc: gdb-patches@sourceware.org, jan.kratochvil@redhat.com,
sergiodj@redhat.com
Subject: Re: [rfc][3/3] Remote core file generation: memory map
Date: Wed, 09 Nov 2011 18:27:00 -0000 [thread overview]
Message-ID: <201111091827.pA9IR7UH023183@d06av02.portsmouth.uk.ibm.com> (raw)
In-Reply-To: <201111091637.23350.pedro@codesourcery.com> from "Pedro Alves" at Nov 09, 2011 04:37:22 PM
Pedro Alves wrote:
> On Tuesday 08 November 2011 17:25:36, Ulrich Weigand wrote:
> > > The problem is that the way GDB uses the memory map is completely
> > > incompatible with the presence of multiple address spaces.
> > >
> > > There is a single instance of the map (kept in a global variable
> > > mem_region_list in memattr.c), which is used for any access in
> > > any address space. lookup_mem_region takes only a CORE_ADDR;
> > > the "info mem" commands only operate on addresses with no notion
> > > of address spaces.
>
> That's mostly because we never really needed to consider making it
> per multi-process/inferior/exec before, and managed to just look the
> other way. Targets that do multi-process don't use the map presently.
> I'm sure there are other things that live in globals but that should
> be per-inferior or address space, waiting for someone to trip on
> them, and eventually get fixed. :-)
Yes, that's what I thought :-)
> > This seems to me to be an argument *for* splitting the contents into
> > two maps; the system map which is static and cached (and used for
> > each memory access), and the per-process map which is dynamic
> > and uncached (and only used rarely, in response to unfrequently
> > used user commands) ...
>
> On e.g., uclinux / no mmu, you could have both the
> system memory map returning the properties of memory of the
> whole system, and gdb could use that for all memory accesses,
> but, when generating a core of a single process, we're only
> interested in the memory "mapped" to that process. So I tend
> to agree.
OK, another good point.
> We could also make the existing memory map be per-process/aspace,
> and define it describe only the process's map (a process is a means
> of a virtualization of the system resources after all). The dynamic
> issue with process's memory maps then becomes a cache management
> policy decision. E.g., at times we know the map can't change (all is
> stopped, or by user knob), this would automatically enable the dcache
> for all RO regions (mostly .text). We can still do this while having
> two maps mechanism though.
>
> It doesn't seem there's a true answer to this, but I'm leaning
> on a new target object.
OK. In the meantime, I've noticed the discussion going on in parallel
on the "info core mappings" commands. If we implement this, we have
the somewhat weird situation that we can show mappings for native
processes and for core files, but not for processes attached to remotely,
even if the target is also Linux ...
It would appear to me that this command actually just needs the very
same data I need here for the generate-core-file command, namely the
current list of memory mappings.
If we create a new target object for VMA memory mappings, maybe we
ought to then have a standard "info mappings" (or the like) command
implemented in GDB *common code* that works likewise on native,
core file, *and* also gdbserver targets; in fact, on all targets
that provide that new target object (which may need to be a bit
richer, e.g. provide mapped file names as well)?
Bye,
Ulrich
--
Dr. Ulrich Weigand
GNU Toolchain for Linux on System z and Cell BE
Ulrich.Weigand@de.ibm.com
next prev parent reply other threads:[~2011-11-09 18:27 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-10-21 19:54 Ulrich Weigand
2011-11-01 18:41 ` Jan Kratochvil
2011-11-01 21:28 ` Ulrich Weigand
2011-11-08 17:25 ` Ulrich Weigand
2011-11-09 16:37 ` Pedro Alves
2011-11-09 18:27 ` Ulrich Weigand [this message]
2011-11-09 19:31 ` Pedro Alves
2011-11-09 20:04 ` Sergio Durigan Junior
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=201111091827.pA9IR7UH023183@d06av02.portsmouth.uk.ibm.com \
--to=uweigand@de.ibm.com \
--cc=gdb-patches@sourceware.org \
--cc=jan.kratochvil@redhat.com \
--cc=pedro@codesourcery.com \
--cc=sergiodj@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