aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorHui Zhu <teawater@gmail.com>2010-06-08 02:25:31 +0000
committerHui Zhu <teawater@gmail.com>2010-06-08 02:25:31 +0000
commiteaaffdf49f698d6f61131e9c8937000363ee950d (patch)
treed10a0a0865b10d7342e8c3bd25a69303326a0995 /gdb
parent25bbe950abfced33915a8722387f2547f0978757 (diff)
downloadgdb-eaaffdf49f698d6f61131e9c8937000363ee950d.zip
gdb-eaaffdf49f698d6f61131e9c8937000363ee950d.tar.gz
gdb-eaaffdf49f698d6f61131e9c8937000363ee950d.tar.bz2
2010-06-08 Hui Zhu <teawater@gmail.com>
* record.c (record_wait): Move signal out of replay code.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog4
-rw-r--r--gdb/record.c12
2 files changed, 12 insertions, 4 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 955b848..83d00ab 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,7 @@
+2010-06-08 Hui Zhu <teawater@gmail.com>
+
+ * record.c (record_wait): Move signal out of replay code.
+
2010-06-07 Jan Kratochvil <jan.kratochvil@redhat.com>
Fix PR 10640.
diff --git a/gdb/record.c b/gdb/record.c
index 546557d..b3d11b6 100644
--- a/gdb/record.c
+++ b/gdb/record.c
@@ -1069,6 +1069,9 @@ record_wait (struct target_ops *ops,
"record_resume_step = %d\n",
record_resume_step);
+ record_get_sig = 0;
+ signal (SIGINT, record_sig_handler);
+
if (!RECORD_IS_REPLAY && ops != &record_core_ops)
{
if (record_resume_step)
@@ -1088,6 +1091,9 @@ record_wait (struct target_ops *ops,
ret = record_beneath_to_wait (record_beneath_to_wait_ops,
ptid, status, options);
+ if (record_resume_step)
+ return ret;
+
/* Is this a SIGTRAP? */
if (status->kind == TARGET_WAITKIND_STOPPED
&& status->value.sig == TARGET_SIGNAL_TRAP)
@@ -1183,8 +1189,6 @@ record_wait (struct target_ops *ops,
}
}
- record_get_sig = 0;
- signal (SIGINT, record_sig_handler);
/* If GDB is in terminal_inferior mode, it will not get the signal.
And in GDB replay mode, GDB doesn't need to be in terminal_inferior
mode, because inferior will not executed.
@@ -1298,8 +1302,6 @@ Process record: hit hw watchpoint.\n");
}
while (continue_flag);
- signal (SIGINT, handle_sigint);
-
replay_out:
if (record_get_sig)
status->value.sig = TARGET_SIGNAL_INT;
@@ -1312,6 +1314,8 @@ replay_out:
discard_cleanups (old_cleanups);
}
+ signal (SIGINT, handle_sigint);
+
do_cleanups (set_cleanups);
return inferior_ptid;
}