- add support for extended gdb packet R (restart), requires gdb to be started with...
authorntfreak <ntfreak@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Sat, 29 Dec 2007 17:41:43 +0000 (17:41 +0000)
committerntfreak <ntfreak@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Sat, 29 Dec 2007 17:41:43 +0000 (17:41 +0000)
git-svn-id: svn://svn.berlios.de/openocd/trunk@247 b42882b7-edfa-0310-969c-e2dbd0fdcd60

src/server/gdb_server.c

index 0ec1af739e0691c594fc3ff5f0b3be44ea2f92b1..ef45c772adc2cf14029678516f4668ed0091c315 100644 (file)
@@ -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]);