Fix two ``attach'' related bugs involving threads.

This commit is contained in:
Kevin Buettner 2001-11-21 21:56:47 +00:00
parent d7458677f4
commit da9c7185df
2 changed files with 25 additions and 0 deletions

View File

@ -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

View File

@ -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