aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHsiangkai Wang <hsiangkai@gmail.com>2013-07-11 10:44:59 +0800
committerSpencer Oliver <spen@spen-soft.co.uk>2013-08-07 21:01:55 +0000
commit0961987a1916a498e65240cded359ab3c9b73f95 (patch)
treef702e04d057c2440c9227780e2e859b5489ff443 /src
parent399561eafa747e71202d00985206b65868142afb (diff)
downloadriscv-openocd-0961987a1916a498e65240cded359ab3c9b73f95.zip
riscv-openocd-0961987a1916a498e65240cded359ab3c9b73f95.tar.gz
riscv-openocd-0961987a1916a498e65240cded359ab3c9b73f95.tar.bz2
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.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/server/gdb_server.c b/src/server/gdb_server.c
index c4ad91c..48015ab 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: