RE: [rfc / remote protocol] Remote shared library events

Smith, Stephen (SWCOE)
2007-05-09T20:40:30Z

I used an earlier version of Daniel's patch to implement do something
similar on the os that I am working on. So I am interested in seeing
this go through.

sps

-----Original Message-----
From: gdb-owner@sourceware.org [mailto:gdb-owner@sourceware.org] On
Behalf Of Daniel Jacobowitz
Sent: Wednesday, May 09, 2007 1:16 PM
To: gdb-patches@sourceware.org
Cc: gdb@sourceware.org
Subject: [rfc / remote protocol] Remote shared library events

System V platforms (like GNU/Linux, Solaris, BSD, et cetera) have a
mostly userspace shared library loader. That means the loader already
has to keep track of what libraries are mapped, and GDB uses the same
data structures that the loader does to find the list. There's also
typically an application function like _dl_debug_state which is called
at every event; GDB can set a breakpoint there to be notified of
events.

Not all platforms work this way. The exceptions I'm looking at
recently are DLL-based platforms: Windows and SymbianOS. Both use an
OS-level loader instead. You have to query the OS to get the list
of libraries, and the OS provides event notification directly instead
of via a magic breakpoint. We can't poke and prod at the OS directly
during remote debugging, so to implement DLL support for these
platforms I extended the remote protocol.

The additions are three new stop replies for the "T" packet to report
events (load, unload, and dll for "something more complicated than
just a load or unload") and two new packets (qfDllInfo and qsDllInfo)
to query the current state. Detailed documentation is below and the
patch is attached.

This patch introduces a new solib_ops vector in solib-target.c. This
vector is target driven; it maintains a list based on the query packet
and event notices, instead of looking through memory.

I have tested this code on SymbianOS, Cygwin, and MinGW32. Pedro
Alves has tested a slightly earlier version on Windows CE (and wrote
the gdbserver bits I used to test it on Windows - thanks!).

What do you think, Kevin especially? I'm not entirely thrilled with
the way this interacts with other solib_ops vectors, but I'm not
unhappy with it either.

Eli, do the manual changes look OK?

All comments welcome!