From: Hui Zhu Date: Tue, 8 Jun 2010 02:25:31 +0000 (+0000) Subject: 2010-06-08 Hui Zhu X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=eaaffdf49f698d6f61131e9c8937000363ee950d;p=binutils-gdb.git 2010-06-08 Hui Zhu * record.c (record_wait): Move signal out of replay code. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 955b848bb9e..83d00abe1a6 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 546557d74f5..b3d11b6411c 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; }