gdb_server: set current_target from connection's one

In a multi-target environment we are supposed to have a single
gdb server for each target (or for each group of targets within
a SMP node).
By default, the gdb attached to a server sends its command to
the target (or to the SMP node targets) linked to that server.

This is working fine for the normal gdb commands, but it is
broken for the native OpenOCD commands executed through gdb
"monitor" command. In the latter case, gdb "monitor" commands
will be executed on the current target of OpenOCD configuration
script (that is either the last target created or the target
specified in a "targets" command).

Fixed in gdb_new_connection() by replacing the current target
in the connection's copy of command context.

Change-Id: If7c8f2dce4a3138f0907d3000dd0b15e670cfa80
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4586
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-by: Christopher Head <chead@zaber.com>
bscan_tunnel
Antonio Borneo 2018-07-02 18:47:34 +02:00 committed by Tomas Vanek
parent 421e75722d
commit 73de828988
1 changed files with 1 additions and 0 deletions

View File

@ -936,6 +936,7 @@ static int gdb_new_connection(struct connection *connection)
target = get_target_from_connection(connection); target = get_target_from_connection(connection);
connection->priv = gdb_connection; connection->priv = gdb_connection;
connection->cmd_ctx->current_target = target;
/* initialize gdb connection information */ /* initialize gdb connection information */
gdb_connection->buf_p = gdb_connection->buffer; gdb_connection->buf_p = gdb_connection->buffer;