getpkt (&rs->buf, &rs->buf_size, 0);
if (*rs->buf == '\0')
- *result_count = 0;
+ return 0;
else
*result_count =
parse_threadlist_response (rs->buf + 2, result_limit, &echo_nextthread,
return p;
}
+static int
+currently_stepping_callback (struct thread_info *tp, void *data)
+{
+ return currently_stepping (tp);
+}
+
/* Resume the remote inferior by using a "vCont" packet. The thread
to be resumed is PTID; STEP and SIGGNAL indicate whether the
resumed thread should be single-stepped and/or signalled. If PTID
}
else if (ptid_equal (ptid, minus_one_ptid) || ptid_is_pid (ptid))
{
+ struct thread_info *tp;
+
/* Resume all threads (of all processes, or of a single
process), with preference for INFERIOR_PTID. This assumes
inferior_ptid belongs to the set of all threads we are about
p = append_resumption (p, endp, inferior_ptid, step, siggnal);
}
+ tp = iterate_over_threads (currently_stepping_callback, NULL);
+ if (tp && !ptid_equal (tp->ptid, inferior_ptid))
+ {
+ p = append_resumption (p, endp, tp->ptid, 1, TARGET_SIGNAL_0);
+ }
+
/* And continue others without a signal. */
p = append_resumption (p, endp, ptid, /*step=*/ 0, TARGET_SIGNAL_0);
}
error (_("Remote connection closed"));
/* no return */
case SERIAL_ERROR:
- perror_with_name (_("Remote communication error"));
+ pop_target ();
+ perror_with_name (_("Remote communication error. Target disconnected."));
/* no return */
case SERIAL_TIMEOUT:
break;
if (target_static_tracepoint_marker_at (tpaddr, &marker))
strcat (buf, ":S");
else
- error ("Static tracepoint not valid during download");
+ error (_("Static tracepoint not valid during download"));
}
else
/* Fast tracepoints are functionally identical to regular