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>
This commit is contained in:
Hsiangkai Wang 2013-07-11 10:44:59 +08:00 committed by Spencer Oliver
parent 399561eafa
commit 0961987a19
1 changed files with 4 additions and 0 deletions

View File

@ -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: