* linux-nat.c (child_follow_fork, linux_handle_extended_wait)
(lin_lwp_attach_lwp, linux_nat_attach, wait_lwp, child_wait) (linux_nat_wait, kill_wait_callback): Use my_waitpid. (_initialize_linux_nat, lin_thread_get_thread_signals): Use SA_RESTART.
This commit is contained in:
parent
13b9f10d91
commit
58aecb61a1
2 changed files with 24 additions and 18 deletions
|
@ -1,3 +1,11 @@
|
|||
2005-05-15 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
* linux-nat.c (child_follow_fork, linux_handle_extended_wait)
|
||||
(lin_lwp_attach_lwp, linux_nat_attach, wait_lwp, child_wait)
|
||||
(linux_nat_wait, kill_wait_callback): Use my_waitpid.
|
||||
(_initialize_linux_nat, lin_thread_get_thread_signals): Use
|
||||
SA_RESTART.
|
||||
|
||||
2005-05-14 Mark Kettenis <kettenis@gnu.org>
|
||||
|
||||
* configure.tgt (vax-*-openbsd*): Set gdb_target to obsd.
|
||||
|
|
|
@ -377,7 +377,7 @@ child_follow_fork (int follow_child)
|
|||
int status;
|
||||
|
||||
ptrace (PTRACE_CONT, parent_pid, 0, 0);
|
||||
waitpid (parent_pid, &status, __WALL);
|
||||
my_waitpid (parent_pid, &status, __WALL);
|
||||
if ((status >> 16) != PTRACE_EVENT_VFORK_DONE)
|
||||
warning (_("Unexpected waitpid result %06x when waiting for "
|
||||
"vfork-done"), status);
|
||||
|
@ -494,10 +494,8 @@ linux_handle_extended_wait (int pid, int status,
|
|||
{
|
||||
/* The new child has a pending SIGSTOP. We can't affect it until it
|
||||
hits the SIGSTOP, but we're already attached. */
|
||||
do {
|
||||
ret = waitpid (new_pid, &status,
|
||||
(event == PTRACE_EVENT_CLONE) ? __WCLONE : 0);
|
||||
} while (ret == -1 && errno == EINTR);
|
||||
ret = my_waitpid (new_pid, &status,
|
||||
(event == PTRACE_EVENT_CLONE) ? __WCLONE : 0);
|
||||
if (ret == -1)
|
||||
perror_with_name (_("waiting for new child"));
|
||||
else if (ret != new_pid)
|
||||
|
@ -868,11 +866,11 @@ lin_lwp_attach_lwp (ptid_t ptid, int verbose)
|
|||
"LLAL: PTRACE_ATTACH %s, 0, 0 (OK)\n",
|
||||
target_pid_to_str (ptid));
|
||||
|
||||
pid = waitpid (GET_LWP (ptid), &status, 0);
|
||||
pid = my_waitpid (GET_LWP (ptid), &status, 0);
|
||||
if (pid == -1 && errno == ECHILD)
|
||||
{
|
||||
/* Try again with __WCLONE to check cloned processes. */
|
||||
pid = waitpid (GET_LWP (ptid), &status, __WCLONE);
|
||||
pid = my_waitpid (GET_LWP (ptid), &status, __WCLONE);
|
||||
lp->cloned = 1;
|
||||
}
|
||||
|
||||
|
@ -920,13 +918,13 @@ linux_nat_attach (char *args, int from_tty)
|
|||
/* Make sure the initial process is stopped. The user-level threads
|
||||
layer might want to poke around in the inferior, and that won't
|
||||
work if things haven't stabilized yet. */
|
||||
pid = waitpid (GET_PID (inferior_ptid), &status, 0);
|
||||
pid = my_waitpid (GET_PID (inferior_ptid), &status, 0);
|
||||
if (pid == -1 && errno == ECHILD)
|
||||
{
|
||||
warning (_("%s is a cloned process"), target_pid_to_str (inferior_ptid));
|
||||
|
||||
/* Try again with __WCLONE to check cloned processes. */
|
||||
pid = waitpid (GET_PID (inferior_ptid), &status, __WCLONE);
|
||||
pid = my_waitpid (GET_PID (inferior_ptid), &status, __WCLONE);
|
||||
lp->cloned = 1;
|
||||
}
|
||||
|
||||
|
@ -1191,10 +1189,10 @@ wait_lwp (struct lwp_info *lp)
|
|||
gdb_assert (!lp->stopped);
|
||||
gdb_assert (lp->status == 0);
|
||||
|
||||
pid = waitpid (GET_LWP (lp->ptid), &status, 0);
|
||||
pid = my_waitpid (GET_LWP (lp->ptid), &status, 0);
|
||||
if (pid == -1 && errno == ECHILD)
|
||||
{
|
||||
pid = waitpid (GET_LWP (lp->ptid), &status, __WCLONE);
|
||||
pid = my_waitpid (GET_LWP (lp->ptid), &status, __WCLONE);
|
||||
if (pid == -1 && errno == ECHILD)
|
||||
{
|
||||
/* The thread has previously exited. We need to delete it
|
||||
|
@ -1706,10 +1704,10 @@ child_wait (ptid_t ptid, struct target_waitstatus *ourstatus)
|
|||
attached process. */
|
||||
set_sigio_trap ();
|
||||
|
||||
pid = waitpid (GET_PID (ptid), &status, 0);
|
||||
pid = my_waitpid (GET_PID (ptid), &status, 0);
|
||||
if (pid == -1 && errno == ECHILD)
|
||||
/* Try again with __WCLONE to check cloned processes. */
|
||||
pid = waitpid (GET_PID (ptid), &status, __WCLONE);
|
||||
pid = my_waitpid (GET_PID (ptid), &status, __WCLONE);
|
||||
|
||||
if (debug_linux_nat)
|
||||
{
|
||||
|
@ -1920,7 +1918,7 @@ retry:
|
|||
{
|
||||
pid_t lwpid;
|
||||
|
||||
lwpid = waitpid (pid, &status, options);
|
||||
lwpid = my_waitpid (pid, &status, options);
|
||||
if (lwpid > 0)
|
||||
{
|
||||
gdb_assert (pid == -1 || lwpid == pid);
|
||||
|
@ -2264,7 +2262,7 @@ kill_wait_callback (struct lwp_info *lp, void *data)
|
|||
{
|
||||
do
|
||||
{
|
||||
pid = waitpid (GET_LWP (lp->ptid), NULL, __WCLONE);
|
||||
pid = my_waitpid (GET_LWP (lp->ptid), NULL, __WCLONE);
|
||||
if (pid != (pid_t) -1 && debug_linux_nat)
|
||||
{
|
||||
fprintf_unfiltered (gdb_stdlog,
|
||||
|
@ -2279,7 +2277,7 @@ kill_wait_callback (struct lwp_info *lp, void *data)
|
|||
|
||||
do
|
||||
{
|
||||
pid = waitpid (GET_LWP (lp->ptid), NULL, 0);
|
||||
pid = my_waitpid (GET_LWP (lp->ptid), NULL, 0);
|
||||
if (pid != (pid_t) -1 && debug_linux_nat)
|
||||
{
|
||||
fprintf_unfiltered (gdb_stdlog,
|
||||
|
@ -3095,7 +3093,7 @@ Specify any of the following keywords for detailed info:\n\
|
|||
|
||||
action.sa_handler = sigchld_handler;
|
||||
sigemptyset (&action.sa_mask);
|
||||
action.sa_flags = 0;
|
||||
action.sa_flags = SA_RESTART;
|
||||
sigaction (SIGCHLD, &action, NULL);
|
||||
|
||||
/* Make sure we don't block SIGCHLD during a sigsuspend. */
|
||||
|
@ -3168,7 +3166,7 @@ lin_thread_get_thread_signals (sigset_t *set)
|
|||
|
||||
action.sa_handler = sigchld_handler;
|
||||
sigemptyset (&action.sa_mask);
|
||||
action.sa_flags = 0;
|
||||
action.sa_flags = SA_RESTART;
|
||||
sigaction (cancel, &action, NULL);
|
||||
|
||||
/* We block the "cancel" signal throughout this code ... */
|
||||
|
|
Loading…
Reference in a new issue