-#ifdef _GNU_SOURCE
-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];
-};
-#endif
-
-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 {
- void *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;
-};
-
-#define si_pid __si_fields.__sigchld.si_pid
-#define si_uid __si_fields.__sigchld.si_uid
-#define si_status __si_fields.__sigchld.si_status
-#define si_utime __si_fields.__sigchld.si_utime
-#define si_stime __si_fields.__sigchld.si_stime
-#define si_value __si_fields.__rt.si_sigval
-#define si_addr __si_fields.__sigfault.si_addr
-#define si_band __si_fields.__sigpoll.si_band
-