27 lines
1016 B
Diff
27 lines
1016 B
Diff
#DPATCHLEVEL=0
|
|
---
|
|
# linux-user/signal.c | 7 ++++++-
|
|
# 1 file changed, 6 insertions(+), 1 deletion(-)
|
|
#
|
|
Index: linux-user/signal.c
|
|
===================================================================
|
|
--- linux-user/signal.c.orig 2007-12-03 15:40:26.000000000 +0000
|
|
+++ linux-user/signal.c 2007-12-03 15:55:49.000000000 +0000
|
|
@@ -364,10 +364,15 @@ int queue_signal(int sig, target_siginfo
|
|
k = &sigact_table[sig - 1];
|
|
handler = k->sa._sa_handler;
|
|
if (handler == TARGET_SIG_DFL) {
|
|
+ if (sig == TARGET_SIGTSTP || sig == TARGET_SIGTTIN || sig == TARGET_SIGTTOU) {
|
|
+ kill(getpid(),SIGSTOP);
|
|
+ return 0;
|
|
+ } else
|
|
/* default handler : ignore some signal. The other are fatal */
|
|
if (sig != TARGET_SIGCHLD &&
|
|
sig != TARGET_SIGURG &&
|
|
- sig != TARGET_SIGWINCH) {
|
|
+ sig != TARGET_SIGWINCH &&
|
|
+ sig != TARGET_SIGCONT) {
|
|
force_sig(sig);
|
|
} else {
|
|
return 0; /* indicate ignored */
|