As I mentioned in a mailing yesterday I have been
implementing thread support in a remote stub.
I had little difficulty implementing the 'P' packet
but implementing the 'G' packet looked to be a real
pain. My first cut was to make 'G' return an error.
Happily my stub work's fine.
Looking at the source in remote.c it is clear that
the statement in the last sentence of "D.1 Overview"
in the gdb manual is inaccurate. A stub need not
implement 'G' if it implements 'P' (at least if it
is intended to communicate only with more recent
releases).