diff options
author | Juergen Lock <nox@FreeBSD.org> | 2014-06-22 11:05:29 +0000 |
---|---|---|
committer | Juergen Lock <nox@FreeBSD.org> | 2014-06-22 11:05:29 +0000 |
commit | d0d1c5fea9e002b416c049b9edede89388ca574f (patch) | |
tree | 2bbca5b515b94da6bb0d3a732cc70a6f463164d0 /emulators | |
parent | 08822d5638f06171543fc07abfd028dc92a28d94 (diff) |
Notes
Diffstat (limited to 'emulators')
-rw-r--r-- | emulators/qemu-devel/Makefile | 3 | ||||
-rw-r--r-- | emulators/qemu-devel/files/extra-patch-target_siginfo | 37 |
2 files changed, 39 insertions, 1 deletions
diff --git a/emulators/qemu-devel/Makefile b/emulators/qemu-devel/Makefile index 066942dd76cd..383f1079e45f 100644 --- a/emulators/qemu-devel/Makefile +++ b/emulators/qemu-devel/Makefile @@ -3,7 +3,7 @@ PORTNAME= qemu PORTVERSION= 2.0.0 -PORTREVISION= 4 +PORTREVISION= 5 CATEGORIES= emulators MASTER_SITES= http://wiki.qemu.org/download/:release \ LOCAL/nox:snapshot @@ -68,6 +68,7 @@ EXTRA_PATCHES+= ${FILESDIR}/extra-patch-sysctl-0oldlen EXTRA_PATCHES+= ${FILESDIR}/extra-patch-bsd-user-mmap.c EXTRA_PATCHES+= ${FILESDIR}/extra-patch-sysctl-hw-pagesizes EXTRA_PATCHES+= ${FILESDIR}/extra-patch-bsd-user-x86_64-target_arch_vmparam.h +EXTRA_PATCHES+= ${FILESDIR}/extra-patch-target_siginfo .endif CONFIGURE_ARGS+= --extra-ldflags=-L${LOCALBASE}/lib diff --git a/emulators/qemu-devel/files/extra-patch-target_siginfo b/emulators/qemu-devel/files/extra-patch-target_siginfo new file mode 100644 index 000000000000..4058f191eed9 --- /dev/null +++ b/emulators/qemu-devel/files/extra-patch-target_siginfo @@ -0,0 +1,37 @@ +From nox Mon Sep 17 00:00:00 2001 +From: Juergen Lock <nox@jelal.kn-bremen.de> +Date: 22 Jun 2014 00:52:23 +0200 +Subject: Fix bsd-user default TARGET_SIGINFO handling + +TARGET_SIGINFO doesn't kill the process and also doesn't cause EINTR +by default so add it to fatal_signal() appropriately; and also don't +call force_sig() on it should it end up being handled. + +Signed-off-by: Juergen Lock <nox@jelal.kn-bremen.de> + +--- a/bsd-user/signal.c ++++ b/bsd-user/signal.c +@@ -391,6 +391,7 @@ int queue_signal(CPUArchState *env, int + if (sig != TARGET_SIGCHLD && + sig != TARGET_SIGURG && + sig != TARGET_SIGWINCH && ++ sig != TARGET_SIGINFO && + sig != TARGET_SIGCONT) { + force_sig(sig); + } else { +@@ -531,6 +532,7 @@ static int fatal_signal(int sig) + case TARGET_SIGCHLD: + case TARGET_SIGURG: + case TARGET_SIGWINCH: ++ case TARGET_SIGINFO: + /* Ignored by default. */ + return 0; + case TARGET_SIGCONT: +@@ -884,6 +886,7 @@ handle_signal: + TARGET_SIGTTOU == sig) { + kill(getpid(), SIGSTOP); + } else if (TARGET_SIGCHLD != sig && TARGET_SIGURG != sig && ++ TARGET_SIGINFO != sig && + TARGET_SIGWINCH != sig && TARGET_SIGCONT != sig) { + force_sig(sig); + } |