fix siginfo_t for mips

si_errno and si_code are swapped in mips siginfo_t compared to other
archs and some si_code values are different.  This fix is required
for POSIX timers to work.

based on patch by Dmitry Ivanov.
This commit is contained in:
Szabolcs Nagy 2016-01-27 00:54:25 +00:00 committed by Rich Felker
parent 22f84829af
commit 9a3b8f97a1
2 changed files with 13 additions and 0 deletions

View File

@ -73,6 +73,15 @@ typedef struct __ucontext {
#define SIG_UNBLOCK 2
#define SIG_SETMASK 3
#undef SI_ASYNCIO
#undef SI_MESGQ
#undef SI_TIMER
#define SI_ASYNCIO (-2)
#define SI_MESGQ (-4)
#define SI_TIMER (-3)
#define __SI_SWAP_ERRNO_CODE
#endif
#define SIGHUP 1

View File

@ -94,7 +94,11 @@ union sigval {
};
typedef struct {
#ifdef __SI_SWAP_ERRNO_CODE
int si_signo, si_code, si_errno;
#else
int si_signo, si_errno, si_code;
#endif
union {
char __pad[128 - 2*sizeof(int) - sizeof(long)];
struct {