diff options
author | Yao Qi <yao.qi@linaro.org> | 2016-07-21 12:12:18 +0100 |
---|---|---|
committer | Yao Qi <yao.qi@linaro.org> | 2016-07-21 12:12:18 +0100 |
commit | 4281b351bfa3b646ab531cf73c56e49366fef108 (patch) | |
tree | 31977923c31b8423a2e8364873cfc490a89e5ca4 | |
parent | 984a2c042e82f2306183d9d165c5cb99e4341503 (diff) | |
download | gdb-4281b351bfa3b646ab531cf73c56e49366fef108.zip gdb-4281b351bfa3b646ab531cf73c56e49366fef108.tar.gz gdb-4281b351bfa3b646ab531cf73c56e49366fef108.tar.bz2 |
Use enqueue_pending_signal in linux_resume_one_thread
gdb/gdbserver:
2016-07-21 Yao Qi <yao.qi@linaro.org>
* linux-low.c (linux_resume_one_thread): Call
enqueue_pending_signal.
-rw-r--r-- | gdb/gdbserver/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/gdbserver/linux-low.c | 20 |
2 files changed, 14 insertions, 11 deletions
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog index 867a5a2..3130334 100644 --- a/gdb/gdbserver/ChangeLog +++ b/gdb/gdbserver/ChangeLog @@ -1,5 +1,10 @@ 2016-07-21 Yao Qi <yao.qi@linaro.org> + * linux-low.c (linux_resume_one_thread): Call + enqueue_pending_signal. + +2016-07-21 Yao Qi <yao.qi@linaro.org> + * gdbthread.h (make_cleanup_restore_current_thread): Declare. * inferiors.c (do_restore_current_thread_cleanup): New function. (make_cleanup_restore_current_thread): Likewise. diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c index 9c675a4..c8d0266 100644 --- a/gdb/gdbserver/linux-low.c +++ b/gdb/gdbserver/linux-low.c @@ -4995,21 +4995,19 @@ linux_resume_one_thread (struct inferior_list_entry *entry, void *arg) /* If we have a new signal, enqueue the signal. */ if (lwp->resume->sig != 0) { - struct pending_signals *p_sig = XCNEW (struct pending_signals); - - p_sig->prev = lwp->pending_signals; - p_sig->signal = lwp->resume->sig; + siginfo_t info, *info_p; /* If this is the same signal we were previously stopped by, - make sure to queue its siginfo. We can ignore the return - value of ptrace; if it fails, we'll skip - PTRACE_SETSIGINFO. */ + make sure to queue its siginfo. */ if (WIFSTOPPED (lwp->last_status) - && WSTOPSIG (lwp->last_status) == lwp->resume->sig) - ptrace (PTRACE_GETSIGINFO, lwpid_of (thread), (PTRACE_TYPE_ARG3) 0, - &p_sig->info); + && WSTOPSIG (lwp->last_status) == lwp->resume->sig + && ptrace (PTRACE_GETSIGINFO, lwpid_of (thread), + (PTRACE_TYPE_ARG3) 0, &info) == 0) + info_p = &info; + else + info_p = NULL; - lwp->pending_signals = p_sig; + enqueue_pending_signal (lwp, lwp->resume->sig, info_p); } } |