diff options
author | Hui Zhu <teawater@gmail.com> | 2010-06-08 02:25:31 +0000 |
---|---|---|
committer | Hui Zhu <teawater@gmail.com> | 2010-06-08 02:25:31 +0000 |
commit | eaaffdf49f698d6f61131e9c8937000363ee950d (patch) | |
tree | d10a0a0865b10d7342e8c3bd25a69303326a0995 /gdb | |
parent | 25bbe950abfced33915a8722387f2547f0978757 (diff) | |
download | gdb-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/ChangeLog | 4 | ||||
-rw-r--r-- | 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 <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; } |