about summary refs log tree commit diff
path: root/include
diff options
context:
space:
mode:
authorSzabolcs Nagy <nsz@port70.net>2016-05-26 22:06:10 +0200
committerRich Felker <dalias@aerifal.cx>2016-06-09 13:40:13 -0400
commit19f87240d5e1d198b4e1115ed8210ae29519f837 (patch)
tree53503b9653216ccaca2971fc8f778f094723af2a /include
parent7ea37c7aa40ba4d3d46a4427402dfef09ef0253b (diff)
downloadmusl-19f87240d5e1d198b4e1115ed8210ae29519f837.tar.gz
musl-19f87240d5e1d198b4e1115ed8210ae29519f837.tar.xz
musl-19f87240d5e1d198b4e1115ed8210ae29519f837.zip
update siginfo struct for linux v4.6
x86 protection key faults are reported in the si_pkey field,
added in linux commit cd0ea35ff5511cde299a61c21a95889b4a71464e
Diffstat (limited to 'include')
-rw-r--r--include/signal.h17
1 files changed, 11 insertions, 6 deletions
diff --git a/include/signal.h b/include/signal.h
index c6323c61..a16094c5 100644
--- a/include/signal.h
+++ b/include/signal.h
@@ -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