Subject: Re: siginfo changes Q
To: None <>
From: Christos Zoulas <>
List: port-arm
Date: 10/18/2003 17:46:36
In article <>,
Allen Briggs <> wrote:
>There seems to be an inconsistency in the siginfo changes for arm.
>The C library uses a 'version' of 0, 1, or 2, depending on the path
>into the signal code.  So a running -current kernel could see any
>of those versions coming in through sigaction().  The kernel checks
>the version number, calling sendsig_sigcontext() if the version is
>< 2, otherwise calling sendsig_siginfo().

This is not what it does. To quote the code:

         * Trampoline ABI version 0 is reserved for the legacy
         * kernel-provided on-stack trampoline.  Conversely, if we are
         * using a non-0 ABI version, we must have a trampoline.  Only
         * validate the vers if a new sigaction was supplied. Emulations
         * use legacy kernel trampolines with version 0, alternatively
         * check for that too.
        if ((vers != 0 && tramp == NULL) ||
            (nsa != NULL &&
            ((vers == 0) ?
                (p->p_emul->e_sigcode == NULL) :
                !SIGTRAMP_VALID(vers))) ||
            (vers == 0 && tramp != NULL))
                return (EINVAL);

>This seems OK, except
>that it does that check only if COMPAT_16 is defined.  And it only
>includes the sendsig_sigcontext if COMPAT_13 or COMPAT_16 is defined.

So it will never proceed to call sendsig_sigcontext if COMPAT_16 is not

The problem is that m68k does not defined SIGTRAMP_VALID, and still
has the old code get_have_sigreturn() stuff.




need to be updated so that the code works like in the x86 case.