1#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
  2 || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
  3
  4#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
  5#define MINSIGSTKSZ 2048
  6#define SIGSTKSZ 8192
  7#endif
  8
  9#ifdef _GNU_SOURCE
 10enum { REG_R8 = 0 };
 11#define REG_R8 REG_R8
 12enum { REG_R9 = 1 };
 13#define REG_R9 REG_R9
 14enum { REG_R10 = 2 };
 15#define REG_R10 REG_R10
 16enum { REG_R11 = 3 };
 17#define REG_R11 REG_R11
 18enum { REG_R12 = 4 };
 19#define REG_R12 REG_R12
 20enum { REG_R13 = 5 };
 21#define REG_R13 REG_R13
 22enum { REG_R14 = 6 };
 23#define REG_R14 REG_R14
 24enum { REG_R15 = 7 };
 25#define REG_R15 REG_R15
 26enum { REG_RDI = 8 };
 27#define REG_RDI REG_RDI
 28enum { REG_RSI = 9 };
 29#define REG_RSI REG_RSI
 30enum { REG_RBP = 10 };
 31#define REG_RBP REG_RBP
 32enum { REG_RBX = 11 };
 33#define REG_RBX REG_RBX
 34enum { REG_RDX = 12 };
 35#define REG_RDX REG_RDX
 36enum { REG_RAX = 13 };
 37#define REG_RAX REG_RAX
 38enum { REG_RCX = 14 };
 39#define REG_RCX REG_RCX
 40enum { REG_RSP = 15 };
 41#define REG_RSP REG_RSP
 42enum { REG_RIP = 16 };
 43#define REG_RIP REG_RIP
 44enum { REG_EFL = 17 };
 45#define REG_EFL REG_EFL
 46enum { REG_CSGSFS = 18 };
 47#define REG_CSGSFS REG_CSGSFS
 48enum { REG_ERR = 19 };
 49#define REG_ERR REG_ERR
 50enum { REG_TRAPNO = 20 };
 51#define REG_TRAPNO REG_TRAPNO
 52enum { REG_OLDMASK = 21 };
 53#define REG_OLDMASK REG_OLDMASK
 54enum { REG_CR2 = 22 };
 55#define REG_CR2 REG_CR2
 56#endif
 57
 58#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 59typedef long long greg_t, gregset_t[23];
 60typedef struct _fpstate {
 61	unsigned short cwd, swd, ftw, fop;
 62	unsigned long long rip, rdp;
 63	unsigned mxcsr, mxcr_mask;
 64	struct {
 65		unsigned short significand[4], exponent, padding[3];
 66	} _st[8];
 67	struct {
 68		unsigned element[4];
 69	} _xmm[16];
 70	unsigned padding[24];
 71} *fpregset_t;
 72struct sigcontext {
 73	unsigned long r8, r9, r10, r11, r12, r13, r14, r15;
 74	unsigned long rdi, rsi, rbp, rbx, rdx, rax, rcx, rsp, rip, eflags;
 75	unsigned short cs, gs, fs, __pad0;
 76	unsigned long err, trapno, oldmask, cr2;
 77	struct _fpstate *fpstate;
 78	unsigned long __reserved1[8];
 79};
 80typedef struct {
 81	gregset_t gregs;
 82	fpregset_t fpregs;
 83	unsigned long long __reserved1[8];
 84} mcontext_t;
 85#else
 86typedef struct {
 87	unsigned long __space[32];
 88} mcontext_t;
 89#endif
 90
 91struct sigaltstack {
 92	void *ss_sp;
 93	int ss_flags;
 94	size_t ss_size;
 95};
 96
 97typedef struct __ucontext {
 98	unsigned long uc_flags;
 99	struct __ucontext *uc_link;
100	stack_t uc_stack;
101	mcontext_t uc_mcontext;
102	sigset_t uc_sigmask;
103	unsigned long __fpregs_mem[64];
104} ucontext_t;
105
106#define SA_NOCLDSTOP  1
107#define SA_NOCLDWAIT  2
108#define SA_SIGINFO    4
109#define SA_ONSTACK    0x08000000
110#define SA_RESTART    0x10000000
111#define SA_NODEFER    0x40000000
112#define SA_RESETHAND  0x80000000
113#define SA_RESTORER   0x04000000
114
115#endif
116
117#define SIGHUP    1
118#define SIGINT    2
119#define SIGQUIT   3
120#define SIGILL    4
121#define SIGTRAP   5
122#define SIGABRT   6
123#define SIGIOT    SIGABRT
124#define SIGBUS    7
125#define SIGFPE    8
126#define SIGKILL   9
127#define SIGUSR1   10
128#define SIGSEGV   11
129#define SIGUSR2   12
130#define SIGPIPE   13
131#define SIGALRM   14
132#define SIGTERM   15
133#define SIGSTKFLT 16
134#define SIGCHLD   17
135#define SIGCONT   18
136#define SIGSTOP   19
137#define SIGTSTP   20
138#define SIGTTIN   21
139#define SIGTTOU   22
140#define SIGURG    23
141#define SIGXCPU   24
142#define SIGXFSZ   25
143#define SIGVTALRM 26
144#define SIGPROF   27
145#define SIGWINCH  28
146#define SIGIO     29
147#define SIGPOLL   29
148#define SIGPWR    30
149#define SIGSYS    31
150#define SIGUNUSED SIGSYS
151
152#define _NSIG 65