Fix two ``attach'' related bugs involving threads.
This commit is contained in:
parent
d7458677f4
commit
da9c7185df
|
@ -1,3 +1,10 @@
|
|||
2001-11-21 Kevin Buettner <kevinb@redhat.com>
|
||||
|
||||
* lin-lwp.c (lin_lwp_attach_lwp): Make sure SIGCHLD is in set of
|
||||
blocked signals.
|
||||
|
||||
* lin-lwp.c (lin_lwp_attach_lwp): Mark main thread as stopped.
|
||||
|
||||
2001-11-20 Jim Blandy <jimb@redhat.com>
|
||||
|
||||
* target.h (TARGET_RANGE_PROFITABLE_FOR_HW_WATCHPOINT): Delete
|
||||
|
|
|
@ -352,6 +352,14 @@ lin_lwp_attach_lwp (ptid_t ptid, int verbose)
|
|||
|
||||
gdb_assert (is_lwp (ptid));
|
||||
|
||||
/* Make sure SIGCHLD is blocked. We don't want SIGCHLD events
|
||||
to interrupt either the ptrace() or waitpid() calls below. */
|
||||
if (! sigismember (&blocked_mask, SIGCHLD))
|
||||
{
|
||||
sigaddset (&blocked_mask, SIGCHLD);
|
||||
sigprocmask (SIG_BLOCK, &blocked_mask, NULL);
|
||||
}
|
||||
|
||||
if (verbose)
|
||||
printf_filtered ("[New %s]\n", target_pid_to_str (ptid));
|
||||
|
||||
|
@ -383,6 +391,16 @@ lin_lwp_attach_lwp (ptid_t ptid, int verbose)
|
|||
|
||||
lp->stopped = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* We assume that the LWP representing the original process
|
||||
is already stopped. Mark it as stopped in the data structure
|
||||
that the lin-lwp layer uses to keep track of threads. Note
|
||||
that this won't have already been done since the main thread
|
||||
will have, we assume, been stopped by an attach from a
|
||||
different layer. */
|
||||
lp->stopped = 1;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
Loading…
Reference in New Issue