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 {
uint32_t __sa_handler;
uint32_t sa_mask;
uint32_t sa_flags;
+#ifdef SA_RESTORER
uint32_t sa_restorer;
+#endif
};
static void
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
#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];
};
{
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)];
};
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].