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 10 enum { REG_R8 = 0 }; 11 #define REG_R8 REG_R8 12 enum { REG_R9 = 1 }; 13 #define REG_R9 REG_R9 14 enum { REG_R10 = 2 }; 15 #define REG_R10 REG_R10 16 enum { REG_R11 = 3 }; 17 #define REG_R11 REG_R11 18 enum { REG_R12 = 4 }; 19 #define REG_R12 REG_R12 20 enum { REG_R13 = 5 }; 21 #define REG_R13 REG_R13 22 enum { REG_R14 = 6 }; 23 #define REG_R14 REG_R14 24 enum { REG_R15 = 7 }; 25 #define REG_R15 REG_R15 26 enum { REG_RDI = 8 }; 27 #define REG_RDI REG_RDI 28 enum { REG_RSI = 9 }; 29 #define REG_RSI REG_RSI 30 enum { REG_RBP = 10 }; 31 #define REG_RBP REG_RBP 32 enum { REG_RBX = 11 }; 33 #define REG_RBX REG_RBX 34 enum { REG_RDX = 12 }; 35 #define REG_RDX REG_RDX 36 enum { REG_RAX = 13 }; 37 #define REG_RAX REG_RAX 38 enum { REG_RCX = 14 }; 39 #define REG_RCX REG_RCX 40 enum { REG_RSP = 15 }; 41 #define REG_RSP REG_RSP 42 enum { REG_RIP = 16 }; 43 #define REG_RIP REG_RIP 44 enum { REG_EFL = 17 }; 45 #define REG_EFL REG_EFL 46 enum { REG_CSGSFS = 18 }; 47 #define REG_CSGSFS REG_CSGSFS 48 enum { REG_ERR = 19 }; 49 #define REG_ERR REG_ERR 50 enum { REG_TRAPNO = 20 }; 51 #define REG_TRAPNO REG_TRAPNO 52 enum { REG_OLDMASK = 21 }; 53 #define REG_OLDMASK REG_OLDMASK 54 enum { REG_CR2 = 22 }; 55 #define REG_CR2 REG_CR2 56 #endif 57 58 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) 59 typedef long long greg_t, gregset_t[23]; 60 typedef 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; 72 struct sigcontext { 73 unsigned long long r8, r9, r10, r11, r12, r13, r14, r15; 74 unsigned long long rdi, rsi, rbp, rbx, rdx, rax, rcx, rsp, rip, eflags; 75 unsigned short cs, gs, fs, __pad0; 76 unsigned long long err, trapno, oldmask, cr2; 77 struct _fpstate *fpstate; 78 unsigned long long __reserved1[8]; 79 }; 80 typedef struct { 81 gregset_t gregs; 82 fpregset_t fpregs; 83 unsigned long long __reserved1[8]; 84 } mcontext_t; 85 #else 86 typedef struct { 87 unsigned long long __space[32]; 88 } mcontext_t; 89 #endif 90 91 struct sigaltstack { 92 void *ss_sp; 93 int ss_flags; 94 size_t ss_size; 95 }; 96 97 typedef 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 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 153 154