diff options
author | nox <nox@FreeBSD.org> | 2014-06-22 19:05:29 +0800 |
---|---|---|
committer | nox <nox@FreeBSD.org> | 2014-06-22 19:05:29 +0800 |
commit | d426ece787eb03577b10bf194b8a3bc70e68ab22 (patch) | |
tree | 2bbca5b515b94da6bb0d3a732cc70a6f463164d0 | |
parent | 207a0e04fa5dc34461e0c65a3492a9d433f34789 (diff) | |
download | freebsd-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/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); + } |