This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH 2/8] record: do not allow record goto on a running thread
- From: Markus Metzger <markus dot t dot metzger at intel dot com>
- To: gdb-patches at sourceware dot org
- Cc: palves at redhat dot com, marc dot khouzam at ericsson dot com
- Date: Wed, 6 Jul 2016 13:56:25 +0200
- Subject: [PATCH 2/8] record: do not allow record goto on a running thread
- Authentication-results: sourceware.org; auth=none
- References: <1467806191-4320-1-git-send-email-markus.t.metzger@intel.com>
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