summaryrefslogtreecommitdiff
path: root/extra/qemu/qemu-glibc-2.16-build.patch
diff options
context:
space:
mode:
Diffstat (limited to 'extra/qemu/qemu-glibc-2.16-build.patch')
-rw-r--r--extra/qemu/qemu-glibc-2.16-build.patch70
1 files changed, 70 insertions, 0 deletions
diff --git a/extra/qemu/qemu-glibc-2.16-build.patch b/extra/qemu/qemu-glibc-2.16-build.patch
new file mode 100644
index 000000000..08948fec6
--- /dev/null
+++ b/extra/qemu/qemu-glibc-2.16-build.patch
@@ -0,0 +1,70 @@
+From baf954154e7c0acda038c01a5c28aea4db7eec67 Mon Sep 17 00:00:00 2001
+From: "Richard W.M. Jones" <rjones@redhat.com>
+Date: Thu, 5 Jul 2012 14:28:03 +0100
+Subject: [PATCH] Replace 'struct siginfo' with 'siginfo_t'.
+
+glibc 2.16 will remove the undocumented definition of 'struct siginfo'
+from <bits/siginfo.h>.
+
+This change is already present in glibc 2.15.90, so qemu compilation
+of certain targets (eg. cris-user) breaks.
+
+This struct was always typedef'd to be the same as 'siginfo_t' which
+is what POSIX documents, so use that instead.
+
+Signed-off-by: Richard W.M. Jones <rjones@redhat.com>
+---
+ linux-user/signal.c | 8 ++++----
+ user-exec.c | 2 +-
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/linux-user/signal.c b/linux-user/signal.c
+index 43346dc..108dff9 100644
+--- a/linux-user/signal.c
++++ b/linux-user/signal.c
+@@ -2849,7 +2849,7 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
+ * Arguments to signal handler:
+ *
+ * a0 = signal number
+- * a1 = pointer to struct siginfo
++ * a1 = pointer to siginfo_t
+ * a2 = pointer to struct ucontext
+ *
+ * $25 and PC point to the signal handler, $29 points to the
+@@ -3255,7 +3255,7 @@ struct target_signal_frame {
+ };
+
+ struct rt_signal_frame {
+- struct siginfo info;
++ siginfo_t info;
+ struct ucontext uc;
+ uint32_t tramp[2];
+ };
+@@ -3474,9 +3474,9 @@ struct target_signal_frame {
+ };
+
+ struct rt_signal_frame {
+- struct siginfo *pinfo;
++ siginfo_t *pinfo;
+ void *puc;
+- struct siginfo info;
++ siginfo_t info;
+ struct ucontext uc;
+ uint8_t retcode[8]; /* Trampoline code. */
+ };
+diff --git a/user-exec.c b/user-exec.c
+index b2a4261..1a9c276 100644
+--- a/user-exec.c
++++ b/user-exec.c
+@@ -588,7 +588,7 @@ int cpu_signal_handler(int host_signum, void *pinfo,
+ int cpu_signal_handler(int host_signum, void *pinfo,
+ void *puc)
+ {
+- struct siginfo *info = pinfo;
++ siginfo_t *info = pinfo;
+ struct ucontext *uc = puc;
+ unsigned long pc = uc->uc_mcontext.sc_iaoq[0];
+ uint32_t insn = *(uint32_t *)pc;
+--
+1.7.10.4
+