Remote Serial Protocol -- reply to '?' when target running

Gareth McMullin
Tue Aug 9 19:15:00 GMT 2016

On Wed, Aug 10, 2016 at 5:33 AM, Michael Eager <> wrote:
> When gdb connects to a remote target, it asks about
> features, and then sends a '?' packet, asking why the
> target is stopped.  When the target connection is through
> a JTAG pod, the pod may be able to respond to the feature
> request, but not be able to determine what the current state of
> the target is, likely because it is not stopped.  What should a
> JTAG pod reply in this case?
> The GDB Remote Protocol doc doesn't seem to be entirely consistent.
> The description for '?' is
>   Indicate the reason the target halted. The reply is the
>   same as for step and continue.
> The description for Stop Reply Packet says the following:
>   The ‘C’, ‘c’, ‘S’, ‘s’, ‘vCont’, ‘vAttach’, ‘vRun’, ‘vStopped’,
>   and ‘?’ packets can receive any of the below as a reply. Except
>   for ‘?’ and ‘vStopped’, that reply is only returned when the
>   target halts.
> This suggests that the target can reply to '?' even if it is not
> stopped, which seems to contradict the description for '?'.  But
> none of the listed replies seem to be appropriate.  None of the
> replies look like "Don't bother me, I'm busy".
> How should the JTAG pod respond?  What do most do in this situation?

I can't comment on others, but the Black Magic debug project that I maintain [1]
implements the extended-remote prototcol, and initially responds to
'?' with 'W00' indicating
the target exited (there is no attached target).  The user initiates a
scan for connected
targets with 'monitor jtag_scan' from GDB, and then uses the GDB
'attach' command
to connect, sending the 'vAttach' packet.  This interrupts the target
and the reply comes
back as 'T05'.


More information about the Gdb mailing list