GDBserver: Discard previous queued events when GDB disconnects.
... not when a new GDB connection sends the status packet ('?'). Mainly just a cleanup/simplification, as GDB always sends '?' first. Tested on x86_64 Fedora 17. 2014-01-08 Pedro Alves <palves@redhat.com> * server.c (handle_status): Don't discard previous queued stop replies or thread's pending status here. (main) <disconnection>: Do it here instead.
This commit is contained in:
parent
b7ea362b02
commit
9939e1314f
|
@ -1,3 +1,9 @@
|
||||||
|
2014-01-08 Pedro Alves <palves@redhat.com>
|
||||||
|
|
||||||
|
* server.c (handle_status): Don't discard previous queued stop
|
||||||
|
replies or thread's pending status here.
|
||||||
|
(main) <disconnection>: Do it here instead.
|
||||||
|
|
||||||
2014-01-08 Pedro Alves <palves@redhat.com>
|
2014-01-08 Pedro Alves <palves@redhat.com>
|
||||||
|
|
||||||
* gdbthread.h (struct thread_info) <status_pending_p>: New field.
|
* gdbthread.h (struct thread_info) <status_pending_p>: New field.
|
||||||
|
|
|
@ -2635,9 +2635,6 @@ handle_status (char *own_buf)
|
||||||
/* GDB is connected, don't forward events to the target anymore. */
|
/* GDB is connected, don't forward events to the target anymore. */
|
||||||
for_each_inferior (&all_processes, gdb_reattached_process);
|
for_each_inferior (&all_processes, gdb_reattached_process);
|
||||||
|
|
||||||
discard_queued_stop_replies (-1);
|
|
||||||
for_each_inferior (&all_threads, clear_pending_status_callback);
|
|
||||||
|
|
||||||
/* In non-stop mode, we must send a stop reply for each stopped
|
/* In non-stop mode, we must send a stop reply for each stopped
|
||||||
thread. In all-stop mode, just send one for the first stopped
|
thread. In all-stop mode, just send one for the first stopped
|
||||||
thread we find. */
|
thread we find. */
|
||||||
|
@ -3140,6 +3137,12 @@ main (int argc, char *argv[])
|
||||||
"Remote side has terminated connection. "
|
"Remote side has terminated connection. "
|
||||||
"GDBserver will reopen the connection.\n");
|
"GDBserver will reopen the connection.\n");
|
||||||
|
|
||||||
|
/* Get rid of any pending statuses. An eventual reconnection
|
||||||
|
(by the same GDB instance or another) will refresh all its
|
||||||
|
state from scratch. */
|
||||||
|
discard_queued_stop_replies (-1);
|
||||||
|
for_each_inferior (&all_threads, clear_pending_status_callback);
|
||||||
|
|
||||||
if (tracing)
|
if (tracing)
|
||||||
{
|
{
|
||||||
if (disconnected_tracing)
|
if (disconnected_tracing)
|
||||||
|
|
Loading…
Reference in New Issue