This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: Cross solib support; viable at all?
- To: gdb-patches at sources dot redhat dot com
- Subject: Re: Cross solib support; viable at all?
- From: Daniel Jacobowitz <drow at mvista dot com>
- Date: Wed, 7 Nov 2001 10:55:50 -0500
- References: <3BE94403.E6E8D454@axis.com>
On Wed, Nov 07, 2001 at 03:24:03PM +0100, Orjan Friberg wrote:
> Sorry for repeating the question, but I thought it might be necessary to
> ask this question on a higher level. My target is running Linux
> 2.4(.12), with shared libraries (glibc 2.2.3-ish), and debugging is done
> via a gdbserver. I would like gdb to automatically load so-files when
> they are opened, and whatever else might happen when run in a host
> environment.
>
> Reading the lengthy comment preceding enable_break in solib-svr4.c, I
> understand that gdb must be able to put a breakpoint in the linker to
> intercept the loading and unloading of shared libraries. This obviously
> becomes a problem when the linker isn't run native. Besides that, I
> need to tell gdb where it should fetch the libraries from, since it's
> not from /lib. And I'm sure there are more issues to be resolved.
> Question is, is this viable at all? I'm thinking the remote protocol
> would need extensions to deal with this.
Nope, no extensions needed - for the way I generally do it. I have a
target filesystem mounted at /opt/hardhat/devkit/mips/fp_le/target, and
I set "solib-absolute-prefix" to that path. I also set
solib-search-path, although it isn't generally necessary, AFAICT. Then
gdb can find the dynamic linker, based on the .interp section of the
binary we're opening and that sepecified prefix.
> Is there any target that has this functionality yet? I was thinking
> mips-linux did, but I can't tell for sure from the code (and I don't
> have a machine to try it on).
(If you can't tell from above, yes, it does work).
> Until now, I've just read in the symbol tables manually in gdb by
> checking /proc/<pid>/maps for where the so-files are loaded and then
> adding the offset for the .text section. Since I don't get the data
> section, I can't set breakpoints there, or debug a core dump that
> happened in the library.
>
> If it can't be done automatically for a cross environment, manually will
> do. Is there a way to manually load so-files the way that they are done
> in a native environment? The sharedlibrary command doesn't allow me to
> specify a file to load.
You ought to be able to use add-symbol-file for this. But stick to the
above, if you can make it work. See my other comment.
--
Daniel Jacobowitz Carnegie Mellon University
MontaVista Software Debian GNU/Linux Developer