[commit] Don't allow more than one LWP to have `do_step' flag set at a time
I've just committed the patch below. As indicated by the comment, the
software singlestep code internal to RDA does not expect to step more
than one thread at a time. (It's rather naive about how it saves the
singlestep breakpoints.) I considered making it more robust, it seems
to me that GDB only expects one thread to be singlestepped at a time.
At the present time, I don't think there's any functionality to be gained
by allowing more than one thread to singlestep simultaneously.
* lwp-pool.c (clear_all_do_step_flags): New function.
(lwp_pool_singlestep_lwp): Use it.
+/* Clear the `do_step' flags for all LWPs in the hash table. */
+ int i;
+ for (i = 0; i < hash_size; i++)
+ struct lwp *l = hash[i];
+ if (l)
+ l->do_step = 0;
lwp_pool_singlestep_lwp (struct gdbserv *serv, pid_t lwp, int signal)
@@ -1406,6 +1423,12 @@ lwp_pool_singlestep_lwp (struct gdbserv
fprintf (stderr, "lwp_pool_singlestep_lwp (%p, %d, %d)\n",
serv, (int) lwp, signal);
+ /* Neither GDB nor the software singlestep code contained in RDA
+ expect more than one LWP to be stepped simultaneously. Clear the
+ `do_step' flag in all LWPs. The flag for the LWP that we're about
+ to step will be set later on. */
+ clear_all_do_step_flags ();