[answer to an old email]
On Tue, 2007-01-09 at 08:41 -0500, Daniel Jacobowitz wrote:
> On Tue, Jan 09, 2007 at 08:57:08AM +0100, Mathieu
Lacage wrote:
> > The question then is how can we get access to the
link_map of each
> > namespace from the parent process ? We could
perform a lookup for the
> > rtld_global data structure and then, use an offset
from there to get the
> > required data. I suspect you won't be thrilled by
that though. Do you
> > have any better idea ? Maybe I should ask this
question on a glibc ML: I
> > would be surprised if no one had ever planned
debugger support for this
> > feature.
>
> It may require updating the public members of struct
r_debug (and its
> version number). I would recommend not digging around
in rtld_global,
> at least not without talking to the glibc developers
first; it's prone
> to changing layout between versions. You could see
what Solaris does,
> if it's in their documentation.
It is in their documentation. As far as I can tell, they use
the rtld_db
API (see chapter 6 of the "Linker and Libraries
Guide") to access the
underlying data structures. They even provide a version of
rtld_db which
works on linux except that it has been hardcoded to deal
with only the
main namespace on linux. Being able to fully implement the
library would
require intimate access to the glibc data structures. So, I
suspect that
the implementation challenge would be:
- push a rtld_db library in glibc
- add rtld_db support to gdb
regards,
Mathieu
|