update siginfo struct for linux v4.6
authorSzabolcs Nagy <nsz@port70.net>
Thu, 26 May 2016 20:06:10 +0000 (22:06 +0200)
committerRich Felker <dalias@aerifal.cx>
Thu, 9 Jun 2016 17:40:13 +0000 (13:40 -0400)
x86 protection key faults are reported in the si_pkey field,
added in linux commit cd0ea35ff5511cde299a61c21a95889b4a71464e

include/signal.h

index c6323c613ddfcd75729d8664684e565cf5308161..a16094c515694068b06bac8d0093d8787026e7f2 100644 (file)
@@ -74,6 +74,7 @@ typedef struct sigaltstack stack_t;
 #define SEGV_MAPERR 1
 #define SEGV_ACCERR 2
 #define SEGV_BNDERR 3
+#define SEGV_PKUERR 4
 
 #define BUS_ADRALN 1
 #define BUS_ADRERR 2
@@ -123,10 +124,13 @@ typedef struct {
                struct {
                        void *si_addr;
                        short si_addr_lsb;
-                       struct {
-                               void *si_lower;
-                               void *si_upper;
-                       } __addr_bnd;
+                       union {
+                               struct {
+                                       void *si_lower;
+                                       void *si_upper;
+                               } __addr_bnd;
+                               unsigned si_pkey;
+                       } __first;
                } __sigfault;
                struct {
                        long si_band;
@@ -147,8 +151,9 @@ typedef struct {
 #define si_value   __si_fields.__si_common.__second.si_value
 #define si_addr    __si_fields.__sigfault.si_addr
 #define si_addr_lsb __si_fields.__sigfault.si_addr_lsb
-#define si_lower   __si_fields.__sigfault.__addr_bnd.si_lower
-#define si_upper   __si_fields.__sigfault.__addr_bnd.si_upper
+#define si_lower   __si_fields.__sigfault.__first.__addr_bnd.si_lower
+#define si_upper   __si_fields.__sigfault.__first.__addr_bnd.si_upper
+#define si_pkey    __si_fields.__sigfault.__first.si_pkey
 #define si_band    __si_fields.__sigpoll.si_band
 #define si_fd      __si_fields.__sigpoll.si_fd
 #define si_timerid __si_fields.__si_common.__first.__timer.si_timerid