This is the mail archive of the gdb-patches@sourceware.org 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 2/8] record: do not allow record goto on a running thread


We can't start replaying if the selected thread is currently running.  Throw an
error in this case.

2016-07-06  Markus Metzger  <markus.t.metzger@intel.com>

gdb/
	* record.c: Include gdbthread.h
	(require_not_running): New.
	(record_goto, cmd_record_goto_begin, cmd_record_goto_end): Call
	require_not_running.


---
 gdb/record.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/gdb/record.c b/gdb/record.c
index 1af134f..ef15459 100644
--- a/gdb/record.c
+++ b/gdb/record.c
@@ -26,6 +26,7 @@
 #include "common/common-utils.h"
 #include "cli/cli-utils.h"
 #include "disasm.h"
+#include "gdbthread.h"
 
 #include <ctype.h>
 
@@ -80,6 +81,16 @@ require_record_target (void)
   return t;
 }
 
+/* Check that the inferior thread is not running.  Throw an error if it is.  */
+
+static void
+require_not_running (void)
+{
+  if (is_running (inferior_ptid))
+    error (_("Cannot execute this command while "
+	     "the selected thread is running."));
+}
+
 /* See record.h.  */
 
 void
@@ -342,6 +353,7 @@ record_goto (const char *arg)
   insn = parse_and_eval_long (arg);
 
   require_record_target ();
+  require_not_running ();
   target_goto_record (insn);
 }
 
@@ -365,6 +377,7 @@ cmd_record_goto_begin (char *arg, int from_tty)
     error (_("Junk after argument: %s."), arg);
 
   require_record_target ();
+  require_not_running ();
   target_goto_record_begin ();
 }
 
@@ -377,6 +390,7 @@ cmd_record_goto_end (char *arg, int from_tty)
     error (_("Junk after argument: %s."), arg);
 
   require_record_target ();
+  require_not_running ();
   target_goto_record_end ();
 }
 
-- 
1.8.3.1


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