From b323ffa153904701ba9eaa352148d02dbb895434 Mon Sep 17 00:00:00 2001 From: Markus Metzger Date: Fri, 10 Jun 2016 14:49:50 +0200 Subject: 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. Signed-off-by: Markus Metzger gdb/ * record.c: Include gdbthread.h (require_not_running): New. (record_goto, cmd_record_goto_begin, cmd_record_goto_end): Call require_not_running. Change-Id: I15888d668b6011217337cf3a63d3618fb044c023 --- gdb/record.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/gdb/record.c b/gdb/record.c index 1af134f68fe..ef154593e32 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 @@ -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 (); } -- cgit v1.2.1