From: Andrew Cagney <ac131313@redhat.com>
To: Roland McGrath <roland@redhat.com>
Cc: gdb@sources.redhat.com
Subject: Re: gdb support for Linux vsyscall DSO
Date: Sat, 10 May 2003 21:49:00 -0000 [thread overview]
Message-ID: <3EBD73CA.10807@redhat.com> (raw)
In-Reply-To: <200305101942.h4AJgoe32699@magilla.sf.frob.com>
>> On Sat, May 10, 2003 at 01:24:39PM -0400, Andrew Cagney wrote:
>
>> > Roland,
>> >
>> > How exactly does this vsyscall memory region(1) come to be? For
>> > instance, how does GLIBC come to know where it is - GLIBC would need the
>> > region's address to perform a syscall to find the regions address. If
>> > the underlying mechanism is explained (this is far from a tranditional
>> > lib*.so), GDB developers will be in a better position to judge the best
>> > way of handling this.
>
>>
>> It's created initially by the kernel, and its address is passed via the
>> auxilliary vector on the stack, and read by ld.so. Roland explained
>> later in his essay about some ways to get at the aux vector.
>
>
> The memory is always there. As I explained near the end of my long
> message, the kernel tells the program where to find it with the
> AT_SYSINFO_EHDR (and AT_SYSINFO, which is now redundant) elements in the
> aux vector on the stack at at startup.
>
> The glibc dynamic linker code sets up its own data structures for the
> vsyscall DSO as if it had been mapped itself. There is no special case in
> glibc that points at the eh_frame info. Exception handling in libgcc
> already uses a dynamic linker callback to see the phdrs of all DSOs in core
> and follow their PT_GNU_EH_FRAME pointers. The vsyscall DSO's eh_frame
> info is found by this mechanism like other DSOs' are.
>
>
>> > Is there, for instance, anything to prevent GDB locating the symbol (in
>> > GLIBC) that points at the vsyscall area and then using that? Similar
>> > for any mapped in eh_frame region. Assuming that GDB has a well defined
>> > trigger point for knowing when the symbol can be referenced - but GDB
>> > would need that anyway.
>
>
> Nothing prevents it but class. The vsyscall DSO is a Linux kernel feature,
> not a glibc feature. It isn't proper layering for the support for it to
> depend on glibc internals. There are any number of things that could be
> done simpler by presuming the form of glibc internals and requiring they be
> there. That doesn't make them the right things to do.
It doesn't make it the wrong thing to do either. As they say, keep it
simple. What was posted was a worryingly long list of changes for
something that should be relatively straight forward - find the eh-frame
stuff and use it.
Any way, re-reading your post yes, the info is in there. If the address
is known, GDB can pull the contents out of memory. Given the list of
targets:
- core
- native attach
- native run
- remote
- ?more?
I believe the choices are:
- find a way of determing that address across all of these targets :-/
- implement per-target custom mechanisms for pulling out this
information (creating a need to test/implement each target separatly -
vis the corefile + dwarf2 changes) :-//
So, it possible to find the address (symbol?, /proc, shlib load table,
...?) for all targets?
/proc/PID/map, on a remote, is a possability. A remote version of
find_memory_regions() would be useful anyway - clean up gcore a bit.
However, the down side is that a system with no /proc mounted wouldn't
debug very well :-/
Andrew
next prev parent reply other threads:[~2003-05-10 21:49 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-05-09 9:45 gdb/dwarf-frame.c Roland McGrath
2003-05-09 13:41 ` gdb/dwarf-frame.c Daniel Jacobowitz
2003-05-09 14:10 ` gdb/dwarf-frame.c Elena Zannoni
2003-05-09 14:56 ` NPTL thread support H. J. Lu
2003-05-09 15:44 ` Elena Zannoni
[not found] ` <20030509091522.A2960@lucon.org>
[not found] ` <16059.55278.841645.134311@localhost.redhat.com>
2003-05-11 20:46 ` H. J. Lu
2003-05-12 19:24 ` J. Johnston
2003-05-12 20:08 ` H. J. Lu
2003-05-12 20:15 ` David Carlton
2003-05-12 21:09 ` Andrew Cagney
2003-05-12 21:18 ` David Carlton
2003-05-12 21:23 ` Daniel Jacobowitz
2003-05-12 20:17 ` Elena Zannoni
2003-05-09 17:01 ` gdb/dwarf-frame.c Andrew Cagney
2003-05-09 17:08 ` gdb/dwarf-frame.c Elena Zannoni
2003-05-09 19:43 ` gdb/dwarf-frame.c Mark Kettenis
2003-05-09 21:19 ` gdb/dwarf-frame.c Roland McGrath
2003-05-09 21:48 ` gdb/dwarf-frame.c Elena Zannoni
2003-05-09 22:17 ` gdb/dwarf-frame.c Roland McGrath
2003-05-09 21:54 ` gdb/dwarf-frame.c Andrew Cagney
2003-05-09 21:58 ` gdb/dwarf-frame.c Daniel Jacobowitz
2003-05-09 22:18 ` gdb/dwarf-frame.c Roland McGrath
2003-05-09 22:28 ` gdb/dwarf-frame.c Andrew Cagney
2003-05-09 22:33 ` gdb/dwarf-frame.c Roland McGrath
2003-05-09 20:32 ` gdb/dwarf-frame.c Roland McGrath
2003-05-09 19:36 ` gdb/dwarf-frame.c Mark Kettenis
2003-05-09 21:34 ` gdb/dwarf-frame.c Roland McGrath
2003-05-09 21:46 ` gdb/dwarf-frame.c Elena Zannoni
2003-05-10 7:07 ` gdb support for Linux vsyscall DSO Roland McGrath
2003-05-10 17:24 ` Andrew Cagney
2003-05-10 18:13 ` Daniel Jacobowitz
2003-05-10 19:42 ` Roland McGrath
2003-05-10 21:49 ` Andrew Cagney [this message]
2003-05-12 19:23 ` Andrew Cagney
2003-05-13 2:29 ` Roland McGrath
2003-05-13 16:03 ` Andrew Cagney
2003-05-10 21:28 ` Roland McGrath
2003-05-10 17:55 ` Mark Kettenis
2003-05-10 20:27 ` Roland McGrath
2003-05-11 23:14 ` Mark Kettenis
2003-05-13 1:53 ` Roland McGrath
2003-05-15 21:26 ` Mark Kettenis
2003-05-16 2:25 ` Roland McGrath
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=3EBD73CA.10807@redhat.com \
--to=ac131313@redhat.com \
--cc=gdb@sources.redhat.com \
--cc=roland@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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).