Patchwork [07/10] remote: Move discard_pending_stop_replies call

login
register
mail settings
Submitter Pedro Alves
Date May 16, 2018, 2:18 p.m.
Message ID <20180516141830.16859-8-palves@redhat.com>
Download mbox | patch
Permalink /patch/27291/
State New
Headers show

Comments

Pedro Alves - May 16, 2018, 2:18 p.m.
This helps because discard_pending_stop_replies will later become a
method of remote_target.  Otherwise, when we have multiple instances
of remote_target, we'd have to make discard_pending_stop_replies find
the inferior's target_ops, and upcast it to remote_target (if indeed a
remote) to find the pending stop replies queue to clear.

gdb/ChangeLog:
yyyy-mm-dd  Pedro Alves  <palves@redhat.com>

	* remote.c (remote_target::mourn_inferior): Move
	discard_pending_stop_replies call here from ...
	(_initialize_remote): ... here.
---
 gdb/remote.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
Simon Marchi - May 18, 2018, 9:18 p.m.
On 2018-05-16 10:18 AM, Pedro Alves wrote:
> This helps because discard_pending_stop_replies will later become a
> method of remote_target.  Otherwise, when we have multiple instances
> of remote_target, we'd have to make discard_pending_stop_replies find
> the inferior's target_ops, and upcast it to remote_target (if indeed a
> remote) to find the pending stop replies queue to clear.
> 
> gdb/ChangeLog:
> yyyy-mm-dd  Pedro Alves  <palves@redhat.com>
> 
> 	* remote.c (remote_target::mourn_inferior): Move
> 	discard_pending_stop_replies call here from ...
> 	(_initialize_remote): ... here.
> ---
>  gdb/remote.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/gdb/remote.c b/gdb/remote.c
> index ef15eafe2a..230288b727 100644
> --- a/gdb/remote.c
> +++ b/gdb/remote.c
> @@ -9666,6 +9666,10 @@ remote_target::mourn_inferior ()
>  {
>    struct remote_state *rs = get_remote_state ();
>  
> +  /* We're no longer interested in notification events of an inferior
> +     that exited or was killed/detached.  */
> +  discard_pending_stop_replies (current_inferior ());
> +
>    /* In 'target remote' mode with one inferior, we close the connection.  */
>    if (!rs->extended && number_of_live_inferiors () <= 1)
>      {
> @@ -14059,9 +14063,6 @@ _initialize_remote (void)
>  
>    /* Hook into new objfile notification.  */
>    gdb::observers::new_objfile.attach (remote_new_objfile);
> -  /* We're no longer interested in notification events of an inferior
> -     when it exits.  */
> -  gdb::observers::inferior_exit.attach (discard_pending_stop_replies);
>  
>  #if 0
>    init_remote_threadtests ();
> 

LGTM.

Simon

Patch

diff --git a/gdb/remote.c b/gdb/remote.c
index ef15eafe2a..230288b727 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -9666,6 +9666,10 @@  remote_target::mourn_inferior ()
 {
   struct remote_state *rs = get_remote_state ();
 
+  /* We're no longer interested in notification events of an inferior
+     that exited or was killed/detached.  */
+  discard_pending_stop_replies (current_inferior ());
+
   /* In 'target remote' mode with one inferior, we close the connection.  */
   if (!rs->extended && number_of_live_inferiors () <= 1)
     {
@@ -14059,9 +14063,6 @@  _initialize_remote (void)
 
   /* Hook into new objfile notification.  */
   gdb::observers::new_objfile.attach (remote_new_objfile);
-  /* We're no longer interested in notification events of an inferior
-     when it exits.  */
-  gdb::observers::inferior_exit.attach (discard_pending_stop_replies);
 
 #if 0
   init_remote_threadtests ();