Re: [rfa] qSymbol in remote_wait

Daniel Jacobowitz
2004-10-15T14:46:08Z

On Thu, Oct 14, 2004 at 09:16:25PM -0500, Jim Blandy wrote:
>
> > As Amit Kale mentioned in December, to support NPTL gdbserver needs to
> > look up symbols during remote_wait. The existing qSymbol model
> > assumes that only at objfile loads (i.e. during td_ta_new) do we need
> > to look up symbols; NPTL looks up symbols lazily when it needs them,
> > which includes at the creation of the first child thread. This patch
> > (which, I know, needs a matching change for the manual) allows
> > qSymbol: queries as a response to remote_wait, in much the same way as
> > the file I/O protocol.
> >
> > 2004-01-31 Daniel Jacobowitz <drow@mvista.com>
> >
> > * remote.c (handle_remote_qsymbol): New function, broken out
> > from remote_check_symbols.
> > (remote_check_symbols): Call it.
> > (remote_wait): Handle qSymbol.
> > (remote_async_wait): Likewise.
>
> I was struggling with this too until I noticed the function
> td_symbol_list, which gives you an Ã  priori list of all the symbols
> libthread_db may ever request. Unless I've missed something, this is
> exactly what's needed to fit ps_pglobal_lookup into the existing
> remote protocol's qSymbol dance: you can look up all the symbols
> libthread_db needs as soon as the inferior loads libpthread.so, and
> then have ps_pglobal_lookup just provide values from a cache.
>
> I think this has been present in NPTL's libthread_db from the
> beginning; it's present in some versions of LinuxThreads' as well, but
> I don't think it was there initially.

Woah! I never noticed that was there. Thank you very, very much, Jim.

Since I assume that all the symbols in td_symbol_list - or at least,
most of them - will be defined, I can just try the first one every time
that GDB offers to look up symbols for me.