diff options
author | Hsiangkai Wang <hsiangkai@gmail.com> | 2013-07-11 10:44:59 +0800 |
---|---|---|
committer | Spencer Oliver <spen@spen-soft.co.uk> | 2013-08-07 21:01:55 +0000 |
commit | 0961987a1916a498e65240cded359ab3c9b73f95 (patch) | |
tree | f702e04d057c2440c9227780e2e859b5489ff443 /src | |
parent | 399561eafa747e71202d00985206b65868142afb (diff) |
gdb_server: check target before executing event callback
As debugging multi-targets, every target has its own gdb connection.
If there are two connections, gdb_target_callback_event_handler will
be registered twice. Everytime event occurs, the registered callback
will be executed twice. If both targets are running, as user issues
ctrl-c in one gdb client, both connections will send "stop reply" to
GDB clients even TARGET_EVENT_GDB_HALT is caused by one of them.
The commit fix above problem as debugging multi-targets.
Change-Id: I1e12d4846927d7dcf1e3bb9aeb1affabc80df813
Signed-off-by: Hsiangkai Wang <hsiangkai@gmail.com>
Reviewed-on: http://openocd.zylin.com/1501
Tested-by: jenkins
Reviewed-by: Sergey Borshch <sb-sf@users.sourceforge.net>
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
Diffstat (limited to 'src')
-rw-r--r-- | src/server/gdb_server.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/server/gdb_server.c b/src/server/gdb_server.c index c4ad91cf..48015abc 100644 --- a/src/server/gdb_server.c +++ b/src/server/gdb_server.c @@ -864,6 +864,10 @@ static int gdb_target_callback_event_handler(struct target *target, { int retval; struct connection *connection = priv; + struct gdb_service *gdb_service = connection->service->priv; + + if (gdb_service->target != target) + return ERROR_OK; switch (event) { case TARGET_EVENT_GDB_HALT: |