From: Kevin Buettner <kevinb@redhat.com>
To: Stephen Smith <ischis2@home.com>, GDB <gdb@sourceware.cygnus.com>
Subject: Re: GDB and shared libraries
Date: Tue, 27 Feb 2001 13:44:00 -0000 [thread overview]
Message-ID: <1010227214410.ZM15583@ocotillo.lan> (raw)
In-Reply-To: <3A9C18F3.A98359B9@home.com>
On Feb 27, 2:15pm, Stephen Smith wrote:
> On the target I have the application testapp.exe and the library
> libtestlib.so. When the OS loads testapp.exe and libtestlib.so it
> does the fixups and (since we wrote the OS and the gdbserver) we can
> see the elf headers for both files. We also currently can debug
> testapp.exe itself.
>
> Now, the function main() has a call to lib1Func() which is defined
> inside of libtestlib.so. I would like to trace into that function.
>
> Questions:
> 1) In the protocol
> http://sources.redhat.com/gdb/onlinedocs/gdb_14.html#SEC120
> I don't see a way to pass back the fixup results that the loader
> performed. Don't I need to do that?
Maybe, maybe not. As Andrew indicated in his message, you might
be able to do it all by reading memory, writing memory, and setting
breakpoints. In the event that you can't, I suggest using the "q"
packet so that GDB can fetch the shared library information from
gdbserver. You'll need to modify gdb to generate (send) the "q"
packet at the appropriate point in the code (which will likely be in
your solib backend) and you'll need to modify gdbserver to recognize
your special "q" packet and return the shared library information in a
mutually agreed upon format.
> 2) When I step into the function, lib1Func(), how does the
> gdbserver tell gdb that it needs to load the symbol table
> from the file libtestlib.so?
The idea is for the symbol table to be loaded (by GDB) prior to ending
up in lib1Func(). For this to happen, GDB needs to be told when a
shared library has been loaded by the dynamic linker. Again, one of
the ways this is commonly done is for gdb to set an internal
breakpoint in a special do-nothing function that the shared library
machinery agrees to call after it's loaded a shared library. But it
could be done in other ways too.
Anyway, once GDB has been told that there are (potentially) new
libraries loaded, GDB then attempts to find the load information
that you refer to. It then loads the symbol table and applies
the necessary relocations.
The point is that all of this occurs before you've ever hit lib1Func().
Kevin
next prev parent reply other threads:[~2001-02-27 13:44 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <3A84136A.23BAF90F@home.com>
[not found] ` <1010209182220.ZM4621@localhost.localdomain>
[not found] ` <3A845A56.5EF8F61@home.com>
[not found] ` <3A9AB471.5F46554@home.com>
[not found] ` <1010226205415.ZM30678@localhost.localdomain>
2001-02-26 14:50 ` GDB and shared libraries (was Re: Are you still with Suse) Stephen Smith
2001-02-26 15:35 ` GDB and shared libraries Kevin Buettner
2001-02-26 16:07 ` Stephen Smith
2001-02-26 16:39 ` Stephen Smith
2001-02-26 18:05 ` Kevin Buettner
2001-02-26 20:51 ` Stephen Smith
[not found] ` <3A9B0022.16ABBBE0@home.com>
[not found] ` <1010227013252.ZM13444@ocotillo.lan>
2001-02-26 21:05 ` Stephen Smith
2001-02-26 23:10 ` Kevin Buettner
2001-02-27 7:37 ` Stephen Smith
2001-02-27 8:14 ` Andrew Cagney
2001-02-27 13:14 ` Stephen Smith
2001-02-27 13:44 ` Kevin Buettner [this message]
2001-02-27 14:04 ` Stephen Smith
2001-03-21 15:59 ` Stephen Smith
2003-07-24 21:51 gdb " wim delvaux
2004-01-06 22:07 GDB and Shared Libraries Drummonds, Scott B
2004-01-06 22:10 ` Daniel Jacobowitz
2006-02-08 21:13 gdb and shared libraries Patrick Alken
2006-02-09 5:54 ` Jim Blandy
2006-02-09 13:51 ` Daniel Jacobowitz
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=1010227214410.ZM15583@ocotillo.lan \
--to=kevinb@redhat.com \
--cc=gdb@sourceware.cygnus.com \
--cc=ischis2@home.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