Enable async mode on supported targets in target_resume.
authorJohn Baldwin <jhb@FreeBSD.org>
Tue, 22 Feb 2022 19:22:14 +0000 (11:22 -0800)
committerJohn Baldwin <jhb@FreeBSD.org>
Tue, 22 Feb 2022 19:22:14 +0000 (11:22 -0800)
Enabling async mode above the target layer removes duplicate code in
::resume methods of async-capable targets.  Commit 5b6d1e4fa4f
("Multi-target support") enabled async mode in do_target_resume after
target_resume returns which is a step in this direction.  However,
other callers of target_resume such as target_continue do not enable
async mode.  Rather than enabling async mode in each of the callers
after target_resume returns, enable async mode at the end of
target_resume.

gdb/infrun.c
gdb/target.c

index a3438d1e5c2bce0bce9b240105b6278a9576183d..5311822fcb847f596ca6b29908c577723632066e 100644 (file)
@@ -2186,9 +2186,6 @@ do_target_resume (ptid_t resume_ptid, bool step, enum gdb_signal sig)
     target_pass_signals (signal_pass);
 
   target_resume (resume_ptid, step, sig);
-
-  if (target_can_async_p ())
-    target_async (1);
 }
 
 /* Resume the inferior.  SIG is the signal to give the inferior
index 548cfad06b25af6f7adad8141b76a1e6c701895a..658698b4e2baf38ef6b554298ed3923d2efdb99e 100644 (file)
@@ -2673,6 +2673,9 @@ target_resume (ptid_t ptid, int step, enum gdb_signal signal)
      thread's stop_pc as side effect.  */
   set_executing (curr_target, ptid, true);
   clear_inline_frame_state (curr_target, ptid);
+
+  if (target_can_async_p ())
+    target_async (1);
 }
 
 /* See target.h.  */