diff options
author | Sergey Bugaev <bugaevc@gmail.com> | 2023-03-19 18:09:47 +0300 |
---|---|---|
committer | Andreas K. Hüttel <dilfridge@gentoo.org> | 2023-09-16 11:32:14 +0200 |
commit | e1df3aea91964019167e3c8c921a7b352b9cacff (patch) | |
tree | 27c978c92695fe95203a10d7549c87fbaecacda2 | |
parent | x86: Fix incorrect scope of setting `shared_per_thread` [BZ# 30745] (diff) | |
download | glibc-e1df3aea91964019167e3c8c921a7b352b9cacff.tar.gz glibc-e1df3aea91964019167e3c8c921a7b352b9cacff.tar.bz2 glibc-e1df3aea91964019167e3c8c921a7b352b9cacff.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)
(cherry picked from commit 0d500bfdc0ce6e4d9c1446a45aa90b292446042a)
-rw-r--r-- | hurd/catch-exc.c | 2 | ||||
-rw-r--r-- | hurd/hurd/signal.h | 5 | ||||
-rw-r--r-- | hurd/hurdfault.c | 2 |
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 ) { |