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