about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSergey Bugaev <bugaevc@gmail.com>2023-03-19 18:09:47 +0300
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2023-08-29 23:17:58 +0200
commit0d500bfdc0ce6e4d9c1446a45aa90b292446042a (patch)
tree2c8f67ea36d4d913d23691957970debb485f503a
parentf94ff95e936d41e28697bd4eac04954139b93558 (diff)
downloadglibc-0d500bfdc0ce6e4d9c1446a45aa90b292446042a.tar.gz
glibc-0d500bfdc0ce6e4d9c1446a45aa90b292446042a.tar.xz
glibc-0d500bfdc0ce6e4d9c1446a45aa90b292446042a.zip
hurd: Make exception subcode a long
On EXC_BAD_ACCESS, exception subcode is used to pass the faulting memory
address, so it needs to be (at least) pointer-sized. Thus, make it into
a long. This matches the corresponding change in GNU Mach.
Message-Id: <20230319151017.531737-5-bugaevc@gmail.com>

(cherry picked from commit d8ee5d614bc485f6d1752dfa0d60524b20945a56)
-rw-r--r--hurd/catch-exc.c2
-rw-r--r--hurd/hurd/signal.h5
-rw-r--r--hurd/hurdfault.c2
3 files changed, 5 insertions, 4 deletions
diff --git a/hurd/catch-exc.c b/hurd/catch-exc.c
index e8a9c7981f..5ee2233aa9 100644
--- a/hurd/catch-exc.c
+++ b/hurd/catch-exc.c
@@ -31,7 +31,7 @@ _S_catch_exception_raise (mach_port_t port,
 			  mach_msg_type_number_t codeCnt
 #else				/* Vanilla Mach 3.0 interface.  */
 			  integer_t exception,
-			  integer_t code, integer_t subcode
+			  integer_t code, long_integer_t subcode
 #endif
 			  )
 {
diff --git a/hurd/hurd/signal.h b/hurd/hurd/signal.h
index 4e9f79b19d..c33f974b1b 100644
--- a/hurd/hurd/signal.h
+++ b/hurd/hurd/signal.h
@@ -51,9 +51,10 @@ struct hurd_signal_preemptor;	/* <hurd/sigpreempt.h> */
 struct hurd_signal_detail
   {
     /* Codes from origination Mach exception_raise message.  */
-    integer_t exc, exc_code, exc_subcode;
+    integer_t exc, exc_code;
+    long_integer_t exc_subcode;
     /* Sigcode as passed or computed from exception codes.  */
-    integer_t code;
+    long_integer_t code;
     /* Error code as passed or extracted from exception codes.  */
     error_t error;
   };
diff --git a/hurd/hurdfault.c b/hurd/hurdfault.c
index 069c1c262c..a81e72803f 100644
--- a/hurd/hurdfault.c
+++ b/hurd/hurdfault.c
@@ -45,7 +45,7 @@ _hurdsig_fault_catch_exception_raise (mach_port_t port,
 				      mach_msg_type_number_t codeCnt
 #else				/* Vanilla Mach 3.0 interface.  */
 				      integer_t exception,
-				      integer_t code, integer_t subcode
+				      integer_t code, long_integer_t subcode
 #endif
 				      )
 {