target_handle_event(target, event);
switch (event)
{
- case TARGET_EVENT_EARLY_HALTED:
+ case TARGET_EVENT_GDB_HALT:
gdb_frontend_halted(target, connection);
break;
case TARGET_EVENT_HALTED:
{
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);
}
}