From dfe1b3f31478817951ee8c493d5eec605b43cc6a Mon Sep 17 00:00:00 2001
From: ntfreak <ntfreak@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Date: Sat, 29 Dec 2007 17:41:43 +0000
Subject: - add support for extended gdb packet R (restart), requires gdb to be
 started with target extended-remote

git-svn-id: svn://svn.berlios.de/openocd/trunk@247 b42882b7-edfa-0310-969c-e2dbd0fdcd60
---
 src/server/gdb_server.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

(limited to 'src/server')

diff --git a/src/server/gdb_server.c b/src/server/gdb_server.c
index 0ec1af73..ef45c772 100644
--- a/src/server/gdb_server.c
+++ b/src/server/gdb_server.c
@@ -1656,6 +1656,7 @@ int gdb_input(connection_t *connection)
 	int packet_size;
 	int retval;
 	gdb_connection_t *gdb_con = connection->priv;
+	static int extended_protocol = 0;
 
 	/* drain input buffer */
 	do
@@ -1728,14 +1729,26 @@ int gdb_input(connection_t *connection)
 					break;
 				case 'D':
 					retval = gdb_detach(connection, target);
+					extended_protocol = 0;
 					break;
 				case 'X':
 					if ((retval = gdb_write_memory_binary_packet(connection, target, packet, packet_size)) != ERROR_OK)
 						return retval;
 					break;
 				case 'k':
+					if (extended_protocol != 0)
+						break;
 					gdb_put_packet(connection, "OK", 2);
 					return ERROR_SERVER_REMOTE_CLOSED;
+				case '!':
+					/* handle extended remote protocol */
+					extended_protocol = 1;
+					gdb_put_packet(connection, "OK", 2);
+					break;
+				case 'R':
+					/* handle extended restart packet */
+					target_process_reset(connection->cmd_ctx);
+					break;
 				default:
 					/* ignore unkown packets */
 					DEBUG("ignoring 0x%2.2x packet", packet[0]);
-- 
cgit v1.2.3