diff options
author | Antonio Borneo <borneo.antonio@gmail.com> | 2018-06-25 15:09:31 +0200 |
---|---|---|
committer | Tomas Vanek <vanekt@fbl.cz> | 2018-07-13 17:15:13 +0100 |
commit | 421e75722db1fa173747d07618ef4016b2e3c80e (patch) | |
tree | d6540c63b16c1feeeb76588f8caf5dbb5c93bc59 | |
parent | ce28a0c8c8af3f18c5cfaf73029dd9d4d95f09a9 (diff) |
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>
-rw-r--r-- | src/server/gdb_server.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/server/gdb_server.c b/src/server/gdb_server.c index a9c2a640..f0b552dd 100644 --- a/src/server/gdb_server.c +++ b/src/server/gdb_server.c @@ -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); } |