From: Kevin Buettner <kevinb@redhat.com>
To: Stephen & Linda Smith <ischis2@cox.net>
Cc: gdb <gdb@sources.redhat.com>
Subject: Re: Shared libraries and the solib interface
Date: Thu, 02 Oct 2003 19:15:00 -0000 [thread overview]
Message-ID: <1031002191528.ZM18319@localhost.localdomain> (raw)
In-Reply-To: Stephen & Linda Smith <ischis2@cox.net> "Re: Shared libraries and the solib interface" (Oct 1, 11:29pm)
On Oct 1, 11:29pm, Stephen Smith wrote:
> Kevin Buettner wrote:
>
> >This approach can be used even if the dynamic linker doesn't provide a
> >convenient function (or even an inconvenient function) to set a
> >breakpoint on. In such a case, the stub is presumably informed via
> >other means of the fact that a shared library has just been loaded.
> >The stub could stop and tell GDB that it's just hit a fake "shared
> >library loaded" breakpoint. Your solib backend (on the GDB side) and
> >the stub would have to agree on some suitable address to use for this
> >purpose. There is some risk associated with lying to GDB in such a
> >manner, but this risk is mitigated by the fact that users don't
> >usually stop at these internal breakpoints. [Setting
> >``stop-on-solib-events'' does allow the user to stop though. Once you get
> >the basic machinery going, you'll want to remember to test with this
> >setting to make sure it's not too badly broken. It can, at times, be
> >extremely useful to allow a user-level stop when a solib related
> >breakpoint has been hit.]
>
> Do you know of an example of this?
No. I thought of it last night as I was typing the first part of the
explanation. If you wind up doing it this way, I'll be very
interested to see how it turns out.
> And a second question is how does a
> generic stub inform the GDB (workstation side) app which shared library
> got loaded and where or is this not necessary?
For svr4- and sunos-like shared library support, this information is
available by examining the target's memory.
If this sort of mechanism is not available for your target, I suggest
one of two approaches:
1) Add new 'q' packets for fetching the information.
2) Use the qRcmd packet for fetching it.
The difference between these two approaches is subtle, because either
way you'll have to devise and adhere to some sort of protocol for
fetching the library information. However, with option 1 (new 'q'
packet(s)), you'll have to submit a proposal for the suggested
protocol changes for public inspection and commentary. It could take
quite some time to finalize the protocol specification. E.g, take a
look at the interaction that took place with regard to Daniel
Jacobowitz's recent thread packet proposals.
The qRcmd approach will likely be quicker/easier to do because the
interface you devise can be private between GDB's solib backend and
the stub.
My suggestion is to start with qRcmd and see how the implementation
turns out. With that under your belt, you may then be in a better
position to suggest a specification for a set of shared library
specific 'q' packets.
Kevin
next prev parent reply other threads:[~2003-10-02 19:15 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-10-02 4:08 Stephen & Linda Smith
2003-10-02 5:43 ` Kevin Buettner
2003-10-02 6:26 ` Stephen & Linda Smith
2003-10-02 19:15 ` Kevin Buettner [this message]
2003-10-02 20:50 ` Stephen P. Smith
2003-10-02 23:18 ` Kevin Buettner
2003-10-08 15:44 ` Andrew Cagney
[not found] <1065665939.20950.ezmlm@sources.redhat.com>
2003-10-09 14:01 ` John S. Yates, Jr.
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=1031002191528.ZM18319@localhost.localdomain \
--to=kevinb@redhat.com \
--cc=gdb@sources.redhat.com \
--cc=ischis2@cox.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