[master/7.12] PR 20627: Use resume_stop to stop lwp

Message ID 1475105417-23047-1-git-send-email-yao.qi@linaro.org
State New, archived
Headers

Commit Message

Yao Qi Sept. 28, 2016, 11:30 p.m. UTC
  Commit 049a8570 (Use target_continue{,_no_signal} instead of target_resume)
replaces the code stopping lwp with target_continue_no_signal in
target_stop_and_wait, like this,

-  resume_info.thread = ptid;
-  resume_info.kind = resume_stop;
-  resume_info.sig = GDB_SIGNAL_0;
-  (*the_target->resume) (&resume_info, 1);
+  target_continue_no_signal (ptid);

the replacement is not equivalent, and it causes PR 20627.  This patch
is just to revert that change.

Regression testing it on x86_64-linux.

gdb/gdbserver:

2016-09-28  Yao Qi  <yao.qi@linaro.org>

	PR gdbserver/20627
	* target.c (target_stop_and_wait): Don't call
	target_continue_no_signal, use resume_stop instead.
---
 gdb/gdbserver/target.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
  

Comments

Pedro Alves Sept. 29, 2016, 1:52 a.m. UTC | #1
On 09/28/2016 07:30 PM, Yao Qi wrote:
> Commit 049a8570 (Use target_continue{,_no_signal} instead of target_resume)
> replaces the code stopping lwp with target_continue_no_signal in
> target_stop_and_wait, like this,
> 
> -  resume_info.thread = ptid;
> -  resume_info.kind = resume_stop;
> -  resume_info.sig = GDB_SIGNAL_0;
> -  (*the_target->resume) (&resume_info, 1);
> +  target_continue_no_signal (ptid);
> 
> the replacement is not equivalent, and it causes PR 20627.  This patch
> is just to revert that change.
> 
> Regression testing it on x86_64-linux.
> 
> gdb/gdbserver:
> 
> 2016-09-28  Yao Qi  <yao.qi@linaro.org>
> 
> 	PR gdbserver/20627
> 	* target.c (target_stop_and_wait): Don't call
> 	target_continue_no_signal, use resume_stop instead.

OK.

Thanks,
Pedro Alves
  
Yao Qi Sept. 30, 2016, 5:54 p.m. UTC | #2
On Thu, Sep 29, 2016 at 2:52 AM, Pedro Alves <palves@redhat.com> wrote:
> On 09/28/2016 07:30 PM, Yao Qi wrote:
>> Commit 049a8570 (Use target_continue{,_no_signal} instead of target_resume)
>> replaces the code stopping lwp with target_continue_no_signal in
>> target_stop_and_wait, like this,

>
> OK.
>

Patch is pushed in to master.  Commit 049a8570 is not merged to 7.12 branch, so
the bug is only master.
  

Patch

diff --git a/gdb/gdbserver/target.c b/gdb/gdbserver/target.c
index cf3da47..fd7c714 100644
--- a/gdb/gdbserver/target.c
+++ b/gdb/gdbserver/target.c
@@ -248,8 +248,12 @@  target_stop_and_wait (ptid_t ptid)
 {
   struct target_waitstatus status;
   int was_non_stop = non_stop;
+  struct thread_resume resume_info;
 
-  target_continue_no_signal (ptid);
+  resume_info.thread = ptid;
+  resume_info.kind = resume_stop;
+  resume_info.sig = GDB_SIGNAL_0;
+  (*the_target->resume) (&resume_info, 1);
 
   non_stop = 1;
   mywait (ptid, &status, 0, 0);