diff options
-rw-r--r-- | sys/amd64/amd64/machdep.c | 4 | ||||
-rw-r--r-- | sys/amd64/include/sigframe.h | 17 | ||||
-rw-r--r-- | sys/i386/i386/machdep.c | 4 | ||||
-rw-r--r-- | sys/i386/include/sigframe.h | 17 |
4 files changed, 22 insertions, 20 deletions
diff --git a/sys/amd64/amd64/machdep.c b/sys/amd64/amd64/machdep.c index 7bd9188..aa8e179 100644 --- a/sys/amd64/amd64/machdep.c +++ b/sys/amd64/amd64/machdep.c @@ -533,7 +533,7 @@ osendsig(sig_t catcher, int sig, sigset_t *mask, u_long code) else { /* Old FreeBSD-style arguments. */ sf.sf_arg2 = code; - sf.sf_addr = (char *)regs->tf_err; + sf.sf_addr = regs->tf_err; sf.sf_ahu.sf_handler = catcher; } @@ -686,7 +686,7 @@ sendsig(catcher, sig, mask, code) else { /* Old FreeBSD-style arguments. */ sf.sf_siginfo = code; - sf.sf_addr = (char *)regs->tf_err; + sf.sf_addr = regs->tf_err; sf.sf_ahu.sf_handler = catcher; } diff --git a/sys/amd64/include/sigframe.h b/sys/amd64/include/sigframe.h index e7b47fa..eedc8c1 100644 --- a/sys/amd64/include/sigframe.h +++ b/sys/amd64/include/sigframe.h @@ -37,7 +37,7 @@ struct osigframe { /* - * The first three members may be used by applications. + * The first four members may be used by applications. */ register_t sf_signum; @@ -51,6 +51,8 @@ struct osigframe { /* Points to sf_siginfo.si_sc. */ register_t sf_scp; + register_t *sf_addr; + /* * The following arguments are not constrained by the * function call protocol. @@ -59,8 +61,6 @@ struct osigframe { * arguments. */ - char *sf_addr; - union { __osiginfohandler_t *sf_action; __sighandler_t *sf_handler; @@ -73,14 +73,15 @@ struct osigframe { struct sigframe { /* * The first four members may be used by applications. + * * NOTE: The 4th argument is undocumented, ill commented - * on and seems to be somewhat BSD "standard". - * Handlers installed with sigvec may be using it. + * on and seems to be somewhat BSD "standard". Handlers + * installed with sigvec may be using it. */ register_t sf_signum; - register_t sf_siginfo; /* code or pointer to sf_si */ - register_t sf_ucontext; /* points to sf_uc */ - char *sf_addr; /* undocumented 4th arg */ + register_t sf_siginfo; /* code or pointer to sf_si */ + register_t sf_ucontext; /* points to sf_uc */ + register_t *sf_addr; /* undocumented 4th arg */ union { __siginfohandler_t *sf_action; diff --git a/sys/i386/i386/machdep.c b/sys/i386/i386/machdep.c index 7bd9188..aa8e179 100644 --- a/sys/i386/i386/machdep.c +++ b/sys/i386/i386/machdep.c @@ -533,7 +533,7 @@ osendsig(sig_t catcher, int sig, sigset_t *mask, u_long code) else { /* Old FreeBSD-style arguments. */ sf.sf_arg2 = code; - sf.sf_addr = (char *)regs->tf_err; + sf.sf_addr = regs->tf_err; sf.sf_ahu.sf_handler = catcher; } @@ -686,7 +686,7 @@ sendsig(catcher, sig, mask, code) else { /* Old FreeBSD-style arguments. */ sf.sf_siginfo = code; - sf.sf_addr = (char *)regs->tf_err; + sf.sf_addr = regs->tf_err; sf.sf_ahu.sf_handler = catcher; } diff --git a/sys/i386/include/sigframe.h b/sys/i386/include/sigframe.h index e7b47fa..eedc8c1 100644 --- a/sys/i386/include/sigframe.h +++ b/sys/i386/include/sigframe.h @@ -37,7 +37,7 @@ struct osigframe { /* - * The first three members may be used by applications. + * The first four members may be used by applications. */ register_t sf_signum; @@ -51,6 +51,8 @@ struct osigframe { /* Points to sf_siginfo.si_sc. */ register_t sf_scp; + register_t *sf_addr; + /* * The following arguments are not constrained by the * function call protocol. @@ -59,8 +61,6 @@ struct osigframe { * arguments. */ - char *sf_addr; - union { __osiginfohandler_t *sf_action; __sighandler_t *sf_handler; @@ -73,14 +73,15 @@ struct osigframe { struct sigframe { /* * The first four members may be used by applications. + * * NOTE: The 4th argument is undocumented, ill commented - * on and seems to be somewhat BSD "standard". - * Handlers installed with sigvec may be using it. + * on and seems to be somewhat BSD "standard". Handlers + * installed with sigvec may be using it. */ register_t sf_signum; - register_t sf_siginfo; /* code or pointer to sf_si */ - register_t sf_ucontext; /* points to sf_uc */ - char *sf_addr; /* undocumented 4th arg */ + register_t sf_siginfo; /* code or pointer to sf_si */ + register_t sf_ucontext; /* points to sf_uc */ + register_t *sf_addr; /* undocumented 4th arg */ union { __siginfohandler_t *sf_action; |