diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2012-07-06 16:52:20 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2012-07-06 16:52:20 +0000 |
commit | da559b09fdbc9427add796ec7191c37aeb18cced (patch) | |
tree | abbc5062707c7885cb70a0b18f034612387c7bcc /gdb | |
parent | f865ee35b75718f7b0a1c75f7cf9167bb40c6f0c (diff) | |
download | gdb-da559b09fdbc9427add796ec7191c37aeb18cced.zip gdb-da559b09fdbc9427add796ec7191c37aeb18cced.tar.gz gdb-da559b09fdbc9427add796ec7191c37aeb18cced.tar.bz2 |
gdb/
* linux-nat.c (resume_lwp, linux_nat_resume): Remove LP->SIGINFO
clearing.
(save_siginfo): Remove.
(stop_wait_callback, linux_nat_filter_event): Remove the save_siginfo
call.
(resume_stopped_resumed_lwps): Remove LP->SIGINFO clearing.
(linux_nat_get_siginfo): Use PTRACE_GETSIGINFO.
* linux-nat.h (struct lwp_info): Remove field siginfo.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 11 | ||||
-rw-r--r-- | gdb/linux-nat.c | 44 | ||||
-rw-r--r-- | gdb/linux-nat.h | 4 |
3 files changed, 23 insertions, 36 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 36877b8..fd6b7e8 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,16 @@ 2012-07-06 Jan Kratochvil <jan.kratochvil@redhat.com> + * linux-nat.c (resume_lwp, linux_nat_resume): Remove LP->SIGINFO + clearing. + (save_siginfo): Remove. + (stop_wait_callback, linux_nat_filter_event): Remove the save_siginfo + call. + (resume_stopped_resumed_lwps): Remove LP->SIGINFO clearing. + (linux_nat_get_siginfo): Use PTRACE_GETSIGINFO. + * linux-nat.h (struct lwp_info): Remove field siginfo. + +2012-07-06 Jan Kratochvil <jan.kratochvil@redhat.com> + Code cleanup for the next patch. * arm-linux-nat.c (arm_linux_stopped_data_address): Change variable siginfo_p to siginfo, update its users incl. the linux_nat_get_siginfo diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c index 09ab402..8078a80 100644 --- a/gdb/linux-nat.c +++ b/gdb/linux-nat.c @@ -1933,7 +1933,6 @@ resume_lwp (struct lwp_info *lp, int step, enum gdb_signal signo) step, signo); lp->stopped = 0; lp->step = step; - memset (&lp->siginfo, 0, sizeof (lp->siginfo)); lp->stopped_by_watchpoint = 0; } else @@ -2092,7 +2091,6 @@ linux_nat_resume (struct target_ops *ops, if (linux_nat_prepare_to_resume != NULL) linux_nat_prepare_to_resume (lp); linux_ops->to_resume (linux_ops, ptid, step, signo); - memset (&lp->siginfo, 0, sizeof (lp->siginfo)); lp->stopped_by_watchpoint = 0; if (debug_linux_nat) @@ -2646,22 +2644,6 @@ wait_lwp (struct lwp_info *lp) return status; } -/* Save the most recent siginfo for LP. This is currently only called - for SIGTRAP; some ports use the si_addr field for - target_stopped_data_address. In the future, it may also be used to - restore the siginfo of requeued signals. */ - -static void -save_siginfo (struct lwp_info *lp) -{ - errno = 0; - ptrace (PTRACE_GETSIGINFO, GET_LWP (lp->ptid), - (PTRACE_TYPE_ARG3) 0, &lp->siginfo); - - if (errno != 0) - memset (&lp->siginfo, 0, sizeof (lp->siginfo)); -} - /* Send a SIGSTOP to LP. */ static int @@ -2904,9 +2886,6 @@ stop_wait_callback (struct lwp_info *lp, void *data) { /* The thread was stopped with a signal other than SIGSTOP. */ - /* Save the trap's siginfo in case we need it later. */ - save_siginfo (lp); - save_sigtrap (lp); if (debug_linux_nat) @@ -3284,12 +3263,7 @@ linux_nat_filter_event (int lwpid, int status, int *new_pending_p) } if (linux_nat_status_is_event (status)) - { - /* Save the trap's siginfo in case we need it later. */ - save_siginfo (lp); - - save_sigtrap (lp); - } + save_sigtrap (lp); /* Check if the thread has exited. */ if ((WIFEXITED (status) || WIFSIGNALED (status)) @@ -3942,7 +3916,6 @@ resume_stopped_resumed_lwps (struct lwp_info *lp, void *data) linux_ops->to_resume (linux_ops, pid_to_ptid (GET_LWP (lp->ptid)), lp->step, GDB_SIGNAL_0); lp->stopped = 0; - memset (&lp->siginfo, 0, sizeof (lp->siginfo)); lp->stopped_by_watchpoint = 0; } @@ -5192,12 +5165,19 @@ linux_nat_set_prepare_to_resume (struct target_ops *t, int linux_nat_get_siginfo (ptid_t ptid, siginfo_t *siginfo) { - struct lwp_info *lp = find_lwp_pid (ptid); - - gdb_assert (lp != NULL); + int pid; - *siginfo = lp->siginfo; + pid = GET_LWP (ptid); + if (pid == 0) + pid = GET_PID (ptid); + errno = 0; + ptrace (PTRACE_GETSIGINFO, pid, (PTRACE_TYPE_ARG3) 0, siginfo); + if (errno != 0) + { + memset (siginfo, 0, sizeof (*siginfo)); + return 0; + } return 1; } diff --git a/gdb/linux-nat.h b/gdb/linux-nat.h index 52549da..50998b8 100644 --- a/gdb/linux-nat.h +++ b/gdb/linux-nat.h @@ -76,10 +76,6 @@ struct lwp_info /* Non-zero if we were stepping this LWP. */ int step; - /* Non-zero si_signo if this LWP stopped with a trap. si_addr may - be the address of a hardware watchpoint. */ - siginfo_t siginfo; - /* STOPPED_BY_WATCHPOINT is non-zero if this LWP stopped with a data watchpoint trap. */ int stopped_by_watchpoint; |