uClibc: add signal info for seccomp related SIGSYS
[openwrt/openwrt.git] / toolchain / uClibc / patches-0.9.33.2 / 995-add-sigsys-to-siginfo_t-union.patch
diff --git a/toolchain/uClibc/patches-0.9.33.2/995-add-sigsys-to-siginfo_t-union.patch b/toolchain/uClibc/patches-0.9.33.2/995-add-sigsys-to-siginfo_t-union.patch
new file mode 100644 (file)
index 0000000..4894a56
--- /dev/null
@@ -0,0 +1,145 @@
+Index: uClibc/libc/sysdeps/linux/common/bits/siginfo.h
+===================================================================
+--- uClibc.orig/libc/sysdeps/linux/common/bits/siginfo.h
++++ uClibc/libc/sysdeps/linux/common/bits/siginfo.h
+@@ -104,6 +104,14 @@ typedef struct siginfo
+           long int si_band;   /* Band event for SIGPOLL.  */
+           int si_fd;
+         } _sigpoll;
++
++      /* SIGSYS.  */
++      struct
++        {
++          void *_call_addr;   /* Calling user insn.  */
++          int _syscall;       /* Triggering system call number.  */
++          unsigned int _arch; /* AUDIT_ARCH_* of syscall.  */
++        } _sigsys;
+       } _sifields;
+   } siginfo_t;
+@@ -122,6 +130,9 @@ typedef struct siginfo
+ # define si_addr      _sifields._sigfault.si_addr
+ # define si_band      _sifields._sigpoll.si_band
+ # define si_fd                _sifields._sigpoll.si_fd
++# define si_call_addr _sifields._sigsys._call_addr
++# define si_syscall   _sifields._sigsys._syscall
++# define si_arch      _sifields._sigsys._arch
+ /* Values for `si_code'.  Positive values are reserved for kernel-generated
+Index: uClibc/libc/sysdeps/linux/alpha/bits/siginfo.h
+===================================================================
+--- uClibc.orig/libc/sysdeps/linux/alpha/bits/siginfo.h
++++ uClibc/libc/sysdeps/linux/alpha/bits/siginfo.h
+@@ -98,6 +98,14 @@ typedef struct siginfo
+           int si_band;        /* Band event for SIGPOLL.  */
+           int si_fd;
+         } _sigpoll;
++
++      /* SIGSYS.  */
++      struct
++        {
++          void *_call_addr;   /* Calling user insn.  */
++          int _syscall;       /* Triggering system call number.  */
++          unsigned int _arch; /* AUDIT_ARCH_* of syscall.  */
++        } _sigsys;
+       } _sifields;
+   } siginfo_t;
+@@ -116,6 +124,9 @@ typedef struct siginfo
+ # define si_addr      _sifields._sigfault.si_addr
+ # define si_band      _sifields._sigpoll.si_band
+ # define si_fd                _sifields._sigpoll.si_fd
++# define si_call_addr _sifields._sigsys._call_addr
++# define si_syscall   _sifields._sigsys._syscall
++# define si_arch      _sifields._sigsys._arch
+ /* Values for `si_code'.  Positive values are reserved for kernel-generated
+Index: uClibc/libc/sysdeps/linux/ia64/bits/siginfo.h
+===================================================================
+--- uClibc.orig/libc/sysdeps/linux/ia64/bits/siginfo.h
++++ uClibc/libc/sysdeps/linux/ia64/bits/siginfo.h
+@@ -103,6 +103,14 @@ typedef struct siginfo
+           long int si_band;   /* Band event for SIGPOLL.  */
+           int si_fd;
+         } _sigpoll;
++
++      /* SIGSYS.  */
++      struct
++        {
++          void *_call_addr;   /* Calling user insn.  */
++          int _syscall;       /* Triggering system call number.  */
++          unsigned int _arch; /* AUDIT_ARCH_* of syscall.  */
++        } _sigsys;
+       } _sifields;
+   } siginfo_t;
+@@ -121,6 +129,9 @@ typedef struct siginfo
+ # define si_addr      _sifields._sigfault.si_addr
+ # define si_band      _sifields._sigpoll.si_band
+ # define si_fd                _sifields._sigpoll.si_fd
++# define si_call_addr _sifields._sigsys._call_addr
++# define si_syscall   _sifields._sigsys._syscall
++# define si_arch      _sifields._sigsys._arch
+ # ifdef __USE_GNU
+ #  define si_imm      _sifields._sigfault._si_imm
+Index: uClibc/libc/sysdeps/linux/mips/bits/siginfo.h
+===================================================================
+--- uClibc.orig/libc/sysdeps/linux/mips/bits/siginfo.h
++++ uClibc/libc/sysdeps/linux/mips/bits/siginfo.h
+@@ -107,6 +107,14 @@ typedef struct siginfo
+           __uid_t si_uid;     /* Real user ID of sending process.  */
+           sigval_t si_sigval; /* Signal value.  */
+         } _rt;
++
++      /* SIGSYS.  */
++      struct
++        {
++          void *_call_addr;   /* Calling user insn.  */
++          int _syscall;       /* Triggering system call number.  */
++          unsigned int _arch; /* AUDIT_ARCH_* of syscall.  */
++        } _sigsys;
+       } _sifields;
+   } siginfo_t;
+@@ -123,6 +131,9 @@ typedef struct siginfo
+ # define si_addr      _sifields._sigfault.si_addr
+ # define si_band      _sifields._sigpoll.si_band
+ # define si_fd                _sifields._sigpoll.si_fd
++# define si_call_addr _sifields._sigsys._call_addr
++# define si_syscall   _sifields._sigsys._syscall
++# define si_arch      _sifields._sigsys._arch
+ /* Values for `si_code'.  Positive values are reserved for kernel-generated
+Index: uClibc/libc/sysdeps/linux/sparc/bits/siginfo.h
+===================================================================
+--- uClibc.orig/libc/sysdeps/linux/sparc/bits/siginfo.h
++++ uClibc/libc/sysdeps/linux/sparc/bits/siginfo.h
+@@ -105,6 +105,14 @@ typedef struct siginfo
+           int si_band;        /* Band event for SIGPOLL.  */
+           int si_fd;
+         } _sigpoll;
++
++      /* SIGSYS.  */
++      struct
++        {
++          void *_call_addr;   /* Calling user insn.  */
++          int _syscall;       /* Triggering system call number.  */
++          unsigned int _arch; /* AUDIT_ARCH_* of syscall.  */
++        } _sigsys;
+       } _sifields;
+   } siginfo_t;
+@@ -124,6 +132,9 @@ typedef struct siginfo
+ # define si_trapno    _sifields._sigfault.si_trapno
+ # define si_band      _sifields._sigpoll.si_band
+ # define si_fd                _sifields._sigpoll.si_fd
++# define si_call_addr _sifields._sigsys._call_addr
++# define si_syscall   _sifields._sigsys._syscall
++# define si_arch      _sifields._sigsys._arch
+ /* Values for `si_code'.  Positive values are reserved for kernel-generated