aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornox <nox@FreeBSD.org>2014-06-22 19:05:29 +0800
committernox <nox@FreeBSD.org>2014-06-22 19:05:29 +0800
commitd426ece787eb03577b10bf194b8a3bc70e68ab22 (patch)
tree2bbca5b515b94da6bb0d3a732cc70a6f463164d0
parent207a0e04fa5dc34461e0c65a3492a9d433f34789 (diff)
downloadfreebsd-ports-gnome-d426ece787eb03577b10bf194b8a3bc70e68ab22.tar.gz
freebsd-ports-gnome-d426ece787eb03577b10bf194b8a3bc70e68ab22.tar.zst
freebsd-ports-gnome-d426ece787eb03577b10bf194b8a3bc70e68ab22.zip
- Fix bsd-user default TARGET_SIGINFO handling.
- Bump PORTREVISION. Reported by: sbruno
-rw-r--r--emulators/qemu-devel/Makefile3
-rw-r--r--emulators/qemu-devel/files/extra-patch-target_siginfo37
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);
+ }