Browse Source

gdb_server: only trigger once the event gdb-detach at gdb quit

When GDB quits (e.g. with "quit" command) we first execute
gdb_detach() to reply "OK" then, at GDB disconnect (either TCP
or pipe connection type), we execute gdb_connection_closed().
In case GDB is killed or it crashes, OpenOCD only executes the
latter when detects the disconnection.
Both gdb_detach() and gdb_connection_closed() trigger the event
TARGET_EVENT_GDB_DETACH thus getting it triggered twice on clean
GDB quit.

Do not trigger the event TARGET_EVENT_GDB_DETACH in gdb_detach()
and let only gdb_connection_closed() to handle it.

Change-Id: Iacf035c855b8b3e2239c1c0e259c279688b418ee
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4585
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
jim-nrf5-free
Antonio Borneo 6 years ago
committed by Tomas Vanek
parent
commit
421e75722d
1 changed files with 6 additions and 3 deletions
  1. +6
    -3
      src/server/gdb_server.c

+ 6
- 3
src/server/gdb_server.c View File

@@ -3016,9 +3016,12 @@ static int gdb_v_packet(struct connection *connection,

static int gdb_detach(struct connection *connection)
{
target_call_event_callbacks(get_target_from_connection(connection),
TARGET_EVENT_GDB_DETACH);

/*
* Only reply "OK" to GDB
* it will close the connection and this will trigger a call to
* gdb_connection_closed() that will in turn trigger the event
* TARGET_EVENT_GDB_DETACH
*/
return gdb_put_packet(connection, "OK", 2);
}



Loading…
Cancel
Save