aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2015-03-24 14:24:53 +0000
committerPedro Alves <palves@redhat.com>2015-03-24 18:35:40 +0000
commitf3263aa47ec109871a124a1a2d5370e42a907690 (patch)
tree9e8ae761640a3660cb4b5169f65a9e876bf39765
parent2bf6fb9d85394f90abb3e21ee037a732b6e4c983 (diff)
downloadgdb-f3263aa47ec109871a124a1a2d5370e42a907690.zip
gdb-f3263aa47ec109871a124a1a2d5370e42a907690.tar.gz
gdb-f3263aa47ec109871a124a1a2d5370e42a907690.tar.bz2
Shuffle user_visible_resume_ptid
... and move comment to declaration. gdb/ChangeLog: 2015-03-24 Pedro Alves <palves@redhat.com> * infrun.c (user_visible_resume_ptid): Rewrite going from most-locked to unlocked instead of the opposite. Move comment ... * infrun.h (user_visible_resume_ptid): ... here.
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/infrun.c32
-rw-r--r--gdb/infrun.h8
3 files changed, 29 insertions, 17 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index fc65c603..a7d95f6 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,11 @@
2015-03-24 Pedro Alves <palves@redhat.com>
+ * infrun.c (user_visible_resume_ptid): Rewrite going from
+ most-locked to unlocked instead of the opposite. Move comment ...
+ * infrun.h (user_visible_resume_ptid): ... here.
+
+2015-03-24 Pedro Alves <palves@redhat.com>
+
* linux-nat.c (linux_nat_resume): Output debug logs before trying
to resume the event lwp. Use the lwp's ptid instead of the passed
in (maybe wildcard) ptid.
diff --git a/gdb/infrun.c b/gdb/infrun.c
index 3c2d2fb..ce6fb1a 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -1997,19 +1997,13 @@ maybe_software_singlestep (struct gdbarch *gdbarch, CORE_ADDR pc)
return hw_step;
}
+/* See infrun.h. */
+
ptid_t
user_visible_resume_ptid (int step)
{
- /* By default, resume all threads of all processes. */
- ptid_t resume_ptid = RESUME_ALL;
-
- /* Maybe resume only all threads of the current process. */
- if (!sched_multi && target_supports_multi_process ())
- {
- resume_ptid = pid_to_ptid (ptid_get_pid (inferior_ptid));
- }
+ ptid_t resume_ptid;
- /* Maybe resume a single thread after all. */
if (non_stop)
{
/* With non-stop mode on, threads are always handled
@@ -2019,16 +2013,22 @@ user_visible_resume_ptid (int step)
else if ((scheduler_mode == schedlock_on)
|| (scheduler_mode == schedlock_step && step))
{
- /* User-settable 'scheduler' mode requires solo thread resume. */
+ /* User-settable 'scheduler' mode requires solo thread
+ resume. */
resume_ptid = inferior_ptid;
}
+ else if (!sched_multi && target_supports_multi_process ())
+ {
+ /* Resume all threads of the current process (and none of other
+ processes). */
+ resume_ptid = pid_to_ptid (ptid_get_pid (inferior_ptid));
+ }
+ else
+ {
+ /* Resume all threads of all processes. */
+ resume_ptid = RESUME_ALL;
+ }
- /* We may actually resume fewer threads at first, e.g., if a thread
- is stopped at a breakpoint that needs stepping-off, but that
- should not be visible to the user/frontend, and neither should
- the frontend/user be allowed to proceed any of the threads that
- happen to be stopped for internal run control handling, if a
- previous command wanted them resumed. */
return resume_ptid;
}
diff --git a/gdb/infrun.h b/gdb/infrun.h
index ab97eea..1f09e41 100644
--- a/gdb/infrun.h
+++ b/gdb/infrun.h
@@ -95,7 +95,13 @@ extern void proceed (CORE_ADDR, enum gdb_signal);
extern void resume (enum gdb_signal);
/* Return a ptid representing the set of threads that we will proceed,
- in the perspective of the user/frontend. */
+ in the perspective of the user/frontend. We may actually resume
+ fewer threads at first, e.g., if a thread is stopped at a
+ breakpoint that needs stepping-off, but that should not be visible
+ to the user/frontend, and neither should the frontend/user be
+ allowed to proceed any of the threads that happen to be stopped for
+ internal run control handling, if a previous command wanted them
+ resumed. */
extern ptid_t user_visible_resume_ptid (int step);
extern void wait_for_inferior (void);