-struct __siginfo
-{
- int si_signo;
- int si_errno;
- int si_code;
- union
- {
- char __pad[128 - 3*sizeof(int)];
- struct {
- pid_t si_pid;
- uid_t si_uid;
- union sigval si_sigval;
- } __rt;
- struct {
- unsigned int si_timer1;
- unsigned int si_timer2;
- } __timer;
- 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;
- } __sigfault;
- struct {
- long int si_band;
- int si_fd;
- } __sigpoll;
- } __si_fields;
+#ifdef _GNU_SOURCE
+#define REG_GS 0
+#define REG_FS 1
+#define REG_ES 2
+#define REG_DS 3
+#define REG_EDI 4
+#define REG_ESI 5
+#define REG_EBP 6
+#define REG_ESP 7
+#define REG_EBX 8
+#define REG_EDX 9
+#define REG_ECX 10
+#define REG_EAX 11
+#define REG_TRAPNO 12
+#define REG_ERR 13
+#define REG_EIP 14
+#define REG_CS 15
+#define REG_EFL 16
+#define REG_UESP 17
+#define REG_SS 18
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+typedef int greg_t, gregset_t[19];
+typedef struct _fpstate {
+ unsigned long cw, sw, tag, ipoff, cssel, dataoff, datasel;
+ struct {
+ unsigned short significand[4], exponent;
+ } _st[8];
+ unsigned long status;
+} *fpregset_t;
+struct sigcontext {
+ unsigned short gs, __gsh, fs, __fsh, es, __esh, ds, __dsh;
+ unsigned long edi, esi, ebp, esp, ebx, edx, ecx, eax;
+ unsigned long trapno, err, eip;
+ unsigned short cs, __csh;
+ unsigned long eflags, esp_at_signal;
+ unsigned short ss, __ssh;
+ struct _fpstate *fpstate;
+ unsigned long oldmask, cr2;