[LTP] [PATCH] rt_sigaction.h: define HAVE_SA_RESTORER for most platforms

Stanislav Kholmanskikh
2014-08-12T11:59:45Z

On some platforms LTP fails to compile, because (struct sigaction)
doesn't have .sa_restorer member. For example - ia64.

To overcome such failures we employ HAVE_SA_RESTORER define.

Signed-off-by: Stanislav Kholmanskikh <stanislav.kholmanskikh@oracle.com>
---
Verified on SPARC, x86_64, i386.

include/lapi/rt_sigaction.h | 8 +++++++-
1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/include/lapi/rt_sigaction.h b/include/lapi/rt_sigaction.h
index 9ea5e0f..46f6a50 100644
--- a/include/lapi/rt_sigaction.h
+++ b/include/lapi/rt_sigaction.h
@@ -40,6 +40,11 @@ struct kernel_sigaction {
sigset_t sa_mask;
};

+/* This macro marks if (struct sigaction) has .sa_restorer member */
+#if !defined(__ia64__) && !defined(__alpha__) && !defined(__hppa__)
+# define HAVE_SA_RESTORER
+#endif
+
#ifdef __x86_64__

/*
@@ -59,7 +64,6 @@ struct kernel_sigaction {
* (struct sigaction).sa_restorer for this architecture.
*/
#undef SA_RESTORER
-#define HAVE_SA_RESTORER
#define SA_RESTORER 0x04000000

void (*restore_rt)(void);
@@ -203,7 +207,9 @@ static int ltp_rt_sigaction(int signum, const struct sigaction *act,
memcpy(&oact->sa_mask, &koact.sa_mask,
sizeof(sigset_t));
oact->sa_flags = koact.sa_flags;
+#ifdef HAVE_SA_RESTORER
oact->sa_restorer = koact.sa_restorer;
+#endif
}
}