Remove cleanup from stop_all_threads
authorTom Tromey <tom@tromey.com>
Wed, 23 Jan 2019 18:58:35 +0000 (18:58 +0000)
committerPedro Alves <palves@redhat.com>
Wed, 23 Jan 2019 19:14:44 +0000 (19:14 +0000)
This removes the cleanup from stop_all_threads, replacing it with a
scope_exit.

gdb/ChangeLog:
2019-01-23  Tom Tromey  <tom@tromey.com>
    Pedro Alves  <palves@redhat.com>

* infrun.c (disable_thread_events): Delete.
(stop_all_threads): Use SCOPE_EXIT.

gdb/ChangeLog
gdb/infrun.c

index 4f53675..1df10d4 100644 (file)
@@ -1,6 +1,12 @@
 2019-01-23  Tom Tromey  <tom@tromey.com>
            Pedro Alves  <palves@redhat.com>
 
+       * infrun.c (disable_thread_events): Delete.
+       (stop_all_threads): Use SCOPE_EXIT.
+
+2019-01-23  Tom Tromey  <tom@tromey.com>
+           Pedro Alves  <palves@redhat.com>
+
        * symfile.c: Include forward-scope-exit.h.
        (clear_symtab_users_cleanup): Replace forward declaration with
        a FORWARD_SCOPE_EXIT.
index 76dedd2..d954eae 100644 (file)
@@ -4273,14 +4273,6 @@ save_waitstatus (struct thread_info *tp, struct target_waitstatus *ws)
     }
 }
 
-/* A cleanup that disables thread create/exit events.  */
-
-static void
-disable_thread_events (void *arg)
-{
-  target_thread_events (0);
-}
-
 /* See infrun.h.  */
 
 void
@@ -4289,7 +4281,6 @@ stop_all_threads (void)
   /* We may need multiple passes to discover all threads.  */
   int pass;
   int iterations = 0;
-  struct cleanup *old_chain;
 
   gdb_assert (target_is_non_stop_p ());
 
@@ -4299,7 +4290,7 @@ stop_all_threads (void)
   scoped_restore_current_thread restore_thread;
 
   target_thread_events (1);
-  old_chain = make_cleanup (disable_thread_events, NULL);
+  SCOPE_EXIT { target_thread_events (0); };
 
   /* Request threads to stop, and then wait for the stops.  Because
      threads we already know about can spawn more threads while we're
@@ -4484,8 +4475,6 @@ stop_all_threads (void)
        }
     }
 
-  do_cleanups (old_chain);
-
   if (debug_infrun)
     fprintf_unfiltered (gdb_stdlog, "infrun: stop_all_threads done\n");
 }