From eaaffdf49f698d6f61131e9c8937000363ee950d Mon Sep 17 00:00:00 2001 From: Hui Zhu Date: Tue, 8 Jun 2010 02:25:31 +0000 Subject: 2010-06-08 Hui Zhu * record.c (record_wait): Move signal out of replay code. --- gdb/ChangeLog | 4 ++++ gdb/record.c | 12 ++++++++---- 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 + + * record.c (record_wait): Move signal out of replay code. + 2010-06-07 Jan Kratochvil 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; } -- cgit v1.1