This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] gdb: Run INF_EXEC_COMPLETE handler for additional cases


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=1840d81a201932a2d5ad5b089aad85943a5a0a82

commit 1840d81a201932a2d5ad5b089aad85943a5a0a82
Author: Andrew Burgess <andrew.burgess@embecosm.com>
Date:   Wed May 23 17:06:02 2018 +0100

    gdb: Run INF_EXEC_COMPLETE handler for additional cases
    
    When making an inferior call, and non-stop mode is off, then, once the
    inferior call is complete all threads will be stopped, and we should
    run the INF_EXEC_COMPLETE handler.  This will result in a call to
    'target_async(0)' to remove the event handlers for the target.
    
    This was discussed by Yao Qi in this mailing list thread:
    
        https://sourceware.org/ml/gdb/2017-10/msg00032.html
    
    Without this then the target event handlers are left in place even
    when the target is stopped, which is different to what happens during
    a standard stop proceedure (for example when one thread hits a
    breakpoint).
    
    gdb/ChangeLog:
    
    	PR gdb/22882
    	* infrun.c (fetch_inferior_event): If GDB is not proceeding then
    	run INF_EXEC_COMPLETE handler, even when not calling normal_stop.
    	Move should_notify_stop local into more inner scope.

Diff:
---
 gdb/ChangeLog |  8 ++++++++
 gdb/infrun.c  | 16 ++++++++--------
 2 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 692bb5a..edb60f7 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -2,6 +2,14 @@
 	    Stephen Roberts  <stephen.roberts@arm.com>
 
 	PR gdb/22882
+	* infrun.c (fetch_inferior_event): If GDB is not proceeding then
+	run INF_EXEC_COMPLETE handler, even when not calling normal_stop.
+	Move should_notify_stop local into more inner scope.
+
+2018-06-12  Andrew Burgess  <andrew.burgess@embecosm.com>
+	    Stephen Roberts  <stephen.roberts@arm.com>
+
+	PR gdb/22882
 	* infrun.c (resume_1): Add call to mark_async_event_handler.
 
 2018-06-12  Andrew Burgess  <andrew.burgess@embecosm.com>
diff --git a/gdb/infrun.c b/gdb/infrun.c
index 6f5338c..f455af2 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -3932,7 +3932,6 @@ fetch_inferior_event (void *client_data)
       struct inferior *inf = find_inferior_ptid (ecs->ptid);
       int should_stop = 1;
       struct thread_info *thr = ecs->event_thread;
-      int should_notify_stop = 1;
 
       delete_just_stopped_threads_infrun_breakpoints ();
 
@@ -3950,6 +3949,9 @@ fetch_inferior_event (void *client_data)
 	}
       else
 	{
+	  int should_notify_stop = 1;
+	  int proceeded = 0;
+
 	  clean_up_just_stopped_threads_fsms (ecs);
 
 	  if (thr != NULL && thr->thread_fsm != NULL)
@@ -3960,17 +3962,15 @@ fetch_inferior_event (void *client_data)
 
 	  if (should_notify_stop)
 	    {
-	      int proceeded = 0;
-
 	      /* We may not find an inferior if this was a process exit.  */
 	      if (inf == NULL || inf->control.stop_soon == NO_STOP_QUIETLY)
 		proceeded = normal_stop ();
+	    }
 
-	      if (!proceeded)
-		{
-		  inferior_event_handler (INF_EXEC_COMPLETE, NULL);
-		  cmd_done = 1;
-		}
+	  if (!proceeded)
+	    {
+	      inferior_event_handler (INF_EXEC_COMPLETE, NULL);
+	      cmd_done = 1;
 	    }
 	}
     }


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]