[pushed] infrun.c:user_visible_resume_ptid: Don't check singlestep_breakpoints_inserted_p

Message ID 1411661028-25612-1-git-send-email-palves@redhat.com
State Committed
Headers

Commit Message

Pedro Alves Sept. 25, 2014, 4:03 p.m. UTC
  What matters for this function, is whether the user requested a
"step", for "set scheduler-locking step", not whether GDB is doing an
internal step for some reason.

 /* Return a ptid representing the set of threads that we will proceed,
    in the perspective of the user/frontend.  */
 extern ptid_t user_visible_resume_ptid (int step);

Therefore, the check for singlestep_breakpoints_inserted_p is actually
incorrect, and we end up applying schedlock more often on sss targets
than on non-sss targets.

Found by inspection while working on a patch that eliminates the
singlestep_breakpoints_inserted_p global.

Tested on x86_64 Fedora 20 on top of my 'software single-step on x86'
series.

gdb/
2014-09-25  Pedro Alves  <palves@redhat.com>

	* infrun.c (user_visible_resume_ptid): Don't check
	singlestep_breakpoints_inserted_p.
---
 gdb/ChangeLog | 5 +++++
 gdb/infrun.c  | 3 +--
 2 files changed, 6 insertions(+), 2 deletions(-)
  

Patch

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index a191b62..dbd222d 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,10 @@ 
 2014-09-25  Pedro Alves  <palves@redhat.com>
 
+	* infrun.c (user_visible_resume_ptid): Don't check
+	singlestep_breakpoints_inserted_p.
+
+2014-09-25  Pedro Alves  <palves@redhat.com>
+
 	* breakpoint.c (should_be_inserted): Add debug output.
 
 2014-09-25  Pedro Alves  <palves@redhat.com>
diff --git a/gdb/infrun.c b/gdb/infrun.c
index dc696e9..5e123be 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -1739,8 +1739,7 @@  user_visible_resume_ptid (int step)
       resume_ptid = inferior_ptid;
     }
   else if ((scheduler_mode == schedlock_on)
-	   || (scheduler_mode == schedlock_step
-	       && (step || singlestep_breakpoints_inserted_p)))
+	   || (scheduler_mode == schedlock_step && step))
     {
       /* User-settable 'scheduler' mode requires solo thread resume.  */
       resume_ptid = inferior_ptid;