This is the mail archive of the 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]

[PATCH 1/9] Decide whether we may have removed breakpoints based on step_over_info

... instead of trap_expected.

Gets rid of one singlestep_breakpoints_inserted_p reference, and is
generally more to the point.

2014-09-22  Pedro Alves  <>

	* infrun.c (step_over_info_valid_p): New function.
	(resume): Use step_over_info_valid_p instead of checking the
	threads's trap_expected flag.  Add debug output.
 gdb/infrun.c | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/gdb/infrun.c b/gdb/infrun.c
index 5e123be..6c8296d 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -1038,6 +1038,14 @@ stepping_past_instruction_at (struct address_space *aspace,
+/* Returns true if step-over info is valid.  */
+static int
+step_over_info_valid_p (void)
+  return (step_over_info.aspace != NULL);
 /* Displaced stepping.  */
@@ -1903,7 +1911,8 @@ a command like `return' or `jump' to continue execution."));
      once we arrive back at the step-resume breakpoint, actually step
      over the breakpoint we originally wanted to step over.  */
   if (singlestep_breakpoints_inserted_p
-      && tp->control.trap_expected && sig != GDB_SIGNAL_0)
+      && sig != GDB_SIGNAL_0
+      && step_over_info_valid_p ())
       /* If we have nested signals or a pending signal is delivered
 	 immediately after a handler returns, might might already have
@@ -1997,13 +2006,10 @@ a command like `return' or `jump' to continue execution."));
   tp->suspend.stop_signal = GDB_SIGNAL_0;
   /* Advise target which signals may be handled silently.  If we have
-     removed breakpoints because we are stepping over one (which can
-     happen only if we are not using displaced stepping), we need to
+     removed breakpoints because we are stepping over one, we need to
      receive all signals to avoid accidentally skipping a breakpoint
      during execution of a signal handler.  */
-  if ((step || singlestep_breakpoints_inserted_p)
-      && tp->control.trap_expected
-      && !use_displaced_stepping (gdbarch))
+  if (step_over_info_valid_p ())
     target_pass_signals (0, NULL);
     target_pass_signals ((int) GDB_SIGNAL_LAST, signal_pass);

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