Index: gdb/record.c =================================================================== --- gdb.orig/record.c 2009-01-23 10:48:23.000000000 +0800 +++ gdb/record.c 2009-01-23 15:04:11.000000000 +0800 @@ -23,6 +23,7 @@ #include "regcache.h" #include "inferior.h" #include "gdbthread.h" +#include "event-top.h" #include "record.h" #include @@ -621,7 +622,6 @@ } else { - struct sigaction act, old_act; int need_dasm = 0; struct regcache *regcache = get_current_regcache (); int continue_flag = 1; @@ -656,13 +656,7 @@ } record_get_sig = 0; - act.sa_handler = record_sig_handler; - act.sa_mask = record_maskall; - act.sa_flags = SA_RESTART; - if (sigaction (SIGINT, &act, &old_act)) - { - perror_with_name (_("Process record: sigaction failed")); - } + 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. @@ -831,10 +825,7 @@ } while (continue_flag); - if (sigaction (SIGALRM, &old_act, NULL)) - { - perror_with_name (_("Process record: sigaction failed")); - } + signal (SIGINT, handle_sigint); replay_out: if (record_get_sig)