If halt times out, stop GDB. Allows e.g. manual reset via monitor commands.
[fw/openocd] / src / server / gdb_server.c
index a0077e93e6fe99a2cec16dbf434be587b2fef76c..ad09a0e704624a47d605b3d3afdf5a9174b062f2 100644 (file)
@@ -2191,8 +2191,16 @@ int gdb_input_inner(connection_t *connection)
                {
                        if (target->state == TARGET_RUNNING)
                        {
-                               target_halt(target);
+                               retval = target_halt(target);
+                               if (retval != ERROR_OK)
+                               {
+                                       target_call_event_callbacks(target, TARGET_EVENT_GDB_HALT);
+                               }
                                gdb_con->ctrl_c = 0;
+                       } else
+                       {
+                               LOG_INFO("The target is not running when halt was requested, stopping GDB.");
+                               target_call_event_callbacks(target, TARGET_EVENT_GDB_HALT);
                        }
                }