[rfa] qSymbol in remote_wait

Jim Blandy
2004-10-15T02:17:43Z

> 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.