From: Pedro Alves Date: Mon, 22 Sep 2014 10:12:30 +0000 (+0100) Subject: infrun.c:user_visible_resume_ptid: Don't check singlestep_breakpoints_inserted_p X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=03d469572472d5c59d8a35030bb1b8072c217dc7;p=binutils-gdb.git infrun.c:user_visible_resume_ptid: Don't check singlestep_breakpoints_inserted_p 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 * infrun.c (user_visible_resume_ptid): Don't check singlestep_breakpoints_inserted_p. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index a191b6232d7..dbd222d7760 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2014-09-25 Pedro Alves + + * infrun.c (user_visible_resume_ptid): Don't check + singlestep_breakpoints_inserted_p. + 2014-09-25 Pedro Alves * breakpoint.c (should_be_inserted): Add debug output. diff --git a/gdb/infrun.c b/gdb/infrun.c index dc696e92642..5e123be0e0d 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;