Add a patch to fix the sa_restorer problems in strace.

This patch has been applied upstream:
  https://sourceforge.net/p/strace/code/ci/c3a5c01051ba29a9f421f4d45d96bbc32df2b796/

Signed-off-by: Vicente Olivert Riera <vincent.riera@imgtec.com>

From c3a5c01051ba29a9f421f4d45d96bbc32df2b796 Mon Sep 17 00:00:00 2001
From: Vicente Olivert Riera <vincent@gentoo.org>
Date: Thu, 11 Sep 2014 20:05:18 +0100
Subject: [PATCH] sigaction: wrap sa_restorer in #ifdef SA_RESTORER consistently

Wrap sa_restorer member definitions in #ifdef SA_RESTORER to be
consistent with their use.
If an architecture does not provide sa_restorer members but still
defines SA_RESTORER macro, the latter has to be explicitly undefined.

This change fixes compilation failures like this one:
signal.c: In function 'decode_old_sigaction':
signal.c:631:21: error: 'struct old_sigaction' has no member named 'sa_restorer'
signal.c: In function 'decode_new_sigaction':
signal.c:1224:21: error: 'struct new_sigaction' has no member named 'sa_restorer'

* signal.c (struct old_sigaction, struct old_sigaction32,
struct new_sigaction, struct new_sigaction32):
Wrap sa_restorer member in #ifdef SA_RESTORER.
(decode_old_sigaction, decode_new_sigaction):
Wrap use of sa32.sa_restorer in #ifdef SA_RESTORER.

Signed-off-by: Vicente Olivert Riera <vincent.riera@imgtec.com>
---
 signal.c |   18 ++++++++++++++----
 1 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/signal.c b/signal.c
index 74e0fd9..5855d13 100644
--- a/signal.c
+++ b/signal.c
@@ -559,8 +559,10 @@ struct old_sigaction {
 	void (*__sa_handler)(int);
 	unsigned long sa_mask;
 	unsigned long sa_flags;
-	void (*sa_restorer)(void);
 #endif /* !MIPS */
+#ifdef SA_RESTORER
+	void (*sa_restorer)(void);
+#endif
 };
 
 struct old_sigaction32 {
@@ -568,7 +570,9 @@ struct old_sigaction32 {
 	uint32_t __sa_handler;
 	uint32_t sa_mask;
 	uint32_t sa_flags;
+#ifdef SA_RESTORER
 	uint32_t sa_restorer;
+#endif
 };
 
 static void
@@ -594,7 +598,9 @@ decode_old_sigaction(struct tcb *tcp, long addr)
 			memset(&sa, 0, sizeof(sa));
 			sa.__sa_handler = (void*)(uintptr_t)sa32.__sa_handler;
 			sa.sa_flags = sa32.sa_flags;
+#ifdef SA_RESTORER
 			sa.sa_restorer = (void*)(uintptr_t)sa32.sa_restorer;
+#endif
 			sa.sa_mask = sa32.sa_mask;
 		}
 	} else
@@ -1138,10 +1144,10 @@ struct new_sigaction
 #else
 	void (*__sa_handler)(int);
 	unsigned long sa_flags;
-# if !defined(ALPHA) && !defined(HPPA) && !defined(IA64)
-	void (*sa_restorer)(void);
-# endif /* !ALPHA && !HPPA && !IA64 */
 #endif /* !MIPS */
+#ifdef SA_RESTORER
+	void (*sa_restorer)(void);
+#endif
 	/* Kernel treats sa_mask as an array of longs. */
 	unsigned long sa_mask[NSIG / sizeof(long) ? NSIG / sizeof(long) : 1];
 };
@@ -1150,7 +1156,9 @@ struct new_sigaction32
 {
 	uint32_t __sa_handler;
 	uint32_t sa_flags;
+#ifdef SA_RESTORER
 	uint32_t sa_restorer;
+#endif
 	uint32_t sa_mask[2 * (NSIG / sizeof(long) ? NSIG / sizeof(long) : 1)];
 };
 
@@ -1176,7 +1184,9 @@ decode_new_sigaction(struct tcb *tcp, long addr)
 			memset(&sa, 0, sizeof(sa));
 			sa.__sa_handler = (void*)(unsigned long)sa32.__sa_handler;
 			sa.sa_flags     = sa32.sa_flags;
+#ifdef SA_RESTORER
 			sa.sa_restorer  = (void*)(unsigned long)sa32.sa_restorer;
+#endif
 			/* Kernel treats sa_mask as an array of longs.
 			 * For 32-bit process, "long" is uint32_t, thus, for example,
 			 * 32th bit in sa_mask will end up as bit 0 in sa_mask[1].
-- 
1.7.1

