diff options
author | Mike Frysinger <vapier@gentoo.org> | 2014-08-09 09:04:18 -0400 |
---|---|---|
committer | Dmitry V. Levin <ldv@altlinux.org> | 2014-08-09 15:27:55 +0000 |
commit | d632e10f51b77b2a8aac4add3cd8d5691f6090bc (patch) | |
tree | 5c86075f7afce943678ec47cb6131fe0d56ff378 | |
parent | e355c60b1decdadc1be7217c195afa02e30a7dd1 (diff) | |
download | strace-d632e10f51b77b2a8aac4add3cd8d5691f6090bc.tar.gz |
hppa: fix sigaction decoding
Since the rt_sigaction syscall on hppa doesn't have a sa_restorer,
do not include it in the kernel struct.
We also have to undefine SA_RESTORER so that code doesn't try to
use it. The headers will export this, but the syscall doesn't
actually respect it.
* signal.c (SA_RESTORER): Undefine when HPPA is defined.
(struct new_sigaction): Disable sa_restorer on hppa.
-rw-r--r-- | signal.c | 10 |
1 files changed, 8 insertions, 2 deletions
@@ -100,6 +100,12 @@ struct sigcontext { # endif #endif +/* HPPA defines this in their headers, but doesn't actually have it, + so we have to delete the define. */ +#ifdef HPPA +# undef SA_RESTORER +#endif + #include "xlat/sigact_flags.h" #include "xlat/sigprocmaskcmds.h" @@ -1128,9 +1134,9 @@ struct new_sigaction #else void (*__sa_handler)(int); unsigned long sa_flags; -# ifndef ALPHA +# if !defined(ALPHA) || !defined(HPPA) void (*sa_restorer)(void); -# endif /* !ALPHA */ +# endif /* !ALPHA || !HPPA */ #endif /* !MIPS */ /* Kernel treats sa_mask as an array of longs. */ unsigned long sa_mask[NSIG / sizeof(long) ? NSIG / sizeof(long) : 1]; |