Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Markus Metzger <markus.t.metzger@intel.com>
To: palves@redhat.com
Cc: gdb-patches@sourceware.org
Subject: [PATCH v2 12/17] infrun: switch to NO_HISTORY thread
Date: Fri, 11 Sep 2015 06:51:00 -0000	[thread overview]
Message-ID: <1441954298-25298-13-git-send-email-markus.t.metzger@intel.com> (raw)
In-Reply-To: <1441954298-25298-1-git-send-email-markus.t.metzger@intel.com>

A thread that runs out of its execution history is stopped.  We already set
stop_pc and call stop_waiting.  But we do not switch to the stopped thread.

In normal_stop, we call finish_thread_state_cleanup to set a thread's running
state.  In all-stop mode, we call it with minus_one_ptid; in non-stop mode, we
only call it for inferior_ptid.

If in non-stop mode normal_stop is called on behalf of a thread that is not
inferior_ptid, that other thread will still be reported as running.  If it is
actually stopped it can't be resumed again.

Record targets traditionally don't support non-stop and only resume
inferior_ptid.  So this has not been a problem, so far.

Switch to the eventing thread for NO_HISTORY events as preparation to support
non-stop for the record btrace target.

2015-09-11  Markus Metzger <markus.t.metzger@intel.com>

gdb/
	* infrun.c (handle_inferior_event_1): Switch to the eventing thread
	in the TARKET_WAITKIND_NO_HISTORY case.
---
 gdb/infrun.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/gdb/infrun.c b/gdb/infrun.c
index e89e02a..c4a99d8 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -5095,8 +5095,14 @@ Cannot fill $_exitsignal with the correct signal number.\n"));
         fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_NO_HISTORY\n");
       /* Reverse execution: target ran out of history info.  */
 
+      /* Switch to the stopped thread.  */
+      if (!ptid_equal (ecs->ptid, inferior_ptid))
+	context_switch (ecs->ptid);
+      if (debug_infrun)
+	fprintf_unfiltered (gdb_stdlog, "infrun: stopped\n");
+
       delete_just_stopped_threads_single_step_breakpoints ();
-      stop_pc = regcache_read_pc (get_thread_regcache (ecs->ptid));
+      stop_pc = regcache_read_pc (get_thread_regcache (inferior_ptid));
       observer_notify_no_history ();
       stop_waiting (ecs);
       return;
-- 
1.8.3.1


  parent reply	other threads:[~2015-09-11  6:51 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-11  6:52 [PATCH v2 00/17] record btrace: non-stop and ASNS Markus Metzger
2015-09-11  6:51 ` [PATCH v2 03/17] btrace: improve stepping debugging Markus Metzger
2015-09-11  6:51 ` [PATCH v2 06/17] btrace: move breakpoint checking into stepping functions Markus Metzger
2015-09-11  6:51 ` [PATCH v2 05/17] btrace: split record_btrace_step_thread Markus Metzger
2015-09-11  6:51 ` [PATCH v2 04/17] btrace: extract the breakpoint check from record_btrace_step_thread Markus Metzger
2015-09-11  6:51 ` Markus Metzger [this message]
2015-09-11  6:51 ` [PATCH v2 08/17] btrace: lock-step Markus Metzger
2015-09-11  6:51 ` [PATCH v2 01/17] btrace: fix non-stop check in to_wait Markus Metzger
2015-09-11  6:51 ` [PATCH v2 07/17] btrace: add missing NO_HISTORY Markus Metzger
2015-09-11  6:51 ` [PATCH v2 11/17] btrace: async Markus Metzger
2015-09-11  6:52 ` [PATCH v2 14/17] target, record: add PTID argument to to_record_is_replaying Markus Metzger
2015-09-11  6:52 ` [PATCH v2 02/17] btrace: support to_stop Markus Metzger
2015-09-11  6:52 ` [PATCH v2 16/17] target: add to_record_stop_replaying target method Markus Metzger
2015-09-11  6:52 ` [PATCH v2 17/17] infrun: scheduler-locking reverse Markus Metzger
2015-09-11  7:01   ` Eli Zaretskii
2015-09-11  8:55     ` Pedro Alves
2015-09-11  9:02       ` Eli Zaretskii
2015-09-16 12:28         ` Metzger, Markus T
2015-09-16 12:54           ` Pedro Alves
2015-09-16 13:32             ` Pedro Alves
2015-09-16 13:56               ` Metzger, Markus T
2015-09-16 14:25                 ` Pedro Alves
2015-09-11  6:52 ` [PATCH v2 15/17] btrace: allow full memory and register access for non-replaying threads Markus Metzger
2015-09-11  6:52 ` [PATCH v2 09/17] btrace: resume all requested threads Markus Metzger
2015-09-11  6:52 ` [PATCH v2 10/17] btrace: temporarily set inferior_ptid in record_btrace_start_replaying Markus Metzger
2015-09-11  6:52 ` [PATCH v2 13/17] btrace: non-stop Markus Metzger
2015-09-11  6:58   ` Eli Zaretskii
2015-09-11  7:56 ` [PATCH v2 00/17] record btrace: non-stop and ASNS Pedro Alves
2015-09-11  8:02   ` Metzger, Markus T

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1441954298-25298-13-git-send-email-markus.t.metzger@intel.com \
    --to=markus.t.metzger@intel.com \
    --cc=gdb-patches@sourceware.org \
    --cc=palves@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox