[RFC,04/34] hurd: Make exception subcode a long
Checks
Commit Message
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.
---
hurd/catch-exc.c | 2 +-
hurd/hurd/signal.h | 5 +++--
hurd/hurdfault.c | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
Comments
Applied, thanks!
Sergey Bugaev, le dim. 19 mars 2023 18:09:47 +0300, a ecrit:
> 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.
> ---
> hurd/catch-exc.c | 2 +-
> hurd/hurd/signal.h | 5 +++--
> hurd/hurdfault.c | 2 +-
> 3 files changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/hurd/catch-exc.c b/hurd/catch-exc.c
> index e8a9c798..5ee2233a 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 4e9f79b1..c33f974b 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 069c1c26..a81e7280 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
> )
> {
> --
> 2.39.2
>
@@ -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
)
{
@@ -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;
};
@@ -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
)
{