-struct __siginfo
-{
- int si_signo;
- int si_errno;
- int si_code;
- union
- {
- int __pad[(128 - 4*sizeof(int)) / sizeof(int)];
- struct {
- pid_t si_pid;
- uid_t si_uid;
- } __kill;
- struct {
- timer_t si_timerid;
- int si_overrun;
- char __pad[sizeof(uid_t) - sizeof(int)];
- union sigval si_sigval;
- int si_private;
- } __timer;
- struct {
- pid_t si_pid;
- uid_t si_uid;
- union sigval si_sigval;
- } __rt;
- struct {
- pid_t si_pid;
- uid_t si_uid;
- int si_status;
- clock_t si_utime;
- clock_t si_stime;
- } __sigchld;
- struct {
- void *si_addr;
- short addr_lsb;
- } __sigfault;
- struct {
- long si_band;
- int si_fd;
- } __sigpoll;
- } __si_fields;
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+typedef long long greg_t, gregset_t[23];
+typedef struct _fpstate {
+ unsigned short cwd, swd, ftw, fop;
+ unsigned long long rip, rdp;
+ unsigned mxcsr, mxcr_mask;
+ struct {
+ unsigned short significand[4], exponent, padding[3];
+ } _st[8];
+ struct {
+ unsigned element[4];
+ } _xmm[16];
+ unsigned padding[24];
+} *fpregset_t;
+struct sigcontext {
+ unsigned long r8, r9, r10, r11, r12, r13, r14, r15;
+ unsigned long rdi, rsi, rbp, rbx, rdx, rax, rcx, rsp, rip, eflags;
+ unsigned short cs, gs, fs, __pad0;
+ unsigned long err, trapno, oldmask, cr2;
+ struct _fpstate *fpstate;
+ unsigned long __reserved1[8];