From 750f8cd0c56baed8b27be415bcff9effa59c48e3 Mon Sep 17 00:00:00 2001 From: Matej Kupljen Date: Wed, 11 Feb 2015 09:28:41 +0100 Subject: [PATCH] gdb_server: ignore stray + in ACK mode I couldn't make OpenOCD to work with GDB. I was always getting this in GDB: (gdb) target remote localhost:3333 Remote debugging using localhost:3333 Ignoring packet error, continuing... Ignoring packet error, continuing... Ignoring packet error, continuing... Ignoring packet error, continuing... Malformed response to offset query, timeout (gdb) While debugging gdb remote protocol, I have seen that gdb responds with: w ++$?#3f And those two '+' seems to confuse the OpenOCD parser, if it sees another '+' sign it emits the DEBUG output and sets the noack_mode to 2. The problem is that we weren't even IN noack mode, this was set to 0 and then it explicitly sets it to 2 and thus turning the noack mode on. Change-Id: If267c9226e57fa83121ded09cf69829f8f0b4b93 Signed-off-by: Matej Kupljen Reviewed-on: http://openocd.zylin.com/2545 Tested-by: jenkins Reviewed-by: Tomas Vanek Reviewed-by: Paul Fertser --- src/server/gdb_server.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/gdb_server.c b/src/server/gdb_server.c index 152a06c72..4a33a3022 100644 --- a/src/server/gdb_server.c +++ b/src/server/gdb_server.c @@ -628,7 +628,7 @@ static int gdb_get_packet_inner(struct connection *connection, * warning only about subsequent ACK's. */ if (gdb_con->noack_mode > 1) { LOG_WARNING("acknowledgment received, but no packet pending"); - } else { + } else if (gdb_con->noack_mode) { LOG_DEBUG("Received first acknowledgment after entering noack mode. Ignoring it."); gdb_con->noack_mode = 2; }