On 4 February 2012 14:26, Alex Barcelo <abarc...@ac.upc.edu> wrote:
> I am barely able to understand this inline function:
>
> static inline int sas_ss_flags(unsigned long sp)
> {
>    return (target_sigaltstack_used.ss_size == 0 ? SS_DISABLE
>            : on_sig_stack(sp) ? SS_ONSTACK : 0);
> }
> (signal.c @97)
>
> ... and it seems wrong to me when used in the following function. I
> have a test program that uses sigaltstack to do some stack
> manipulation. It doesn't work.
>
> The function:
>    ...
>    if ((ka->sa_flags & TARGET_SA_ONSTACK) &&
>        (/* here maybe a "!" */ sas_ss_flags(oldsp))) {
>    ....
> (signal.c, get_sigframe @4121)

This looks like a bug, yes -- the other architectures have the !
(or equivalent code) in their get_sigframe() implementations so
probably ppc is just wrong here.

There are a few other architectures whose get_sigframe doesn't call
sas_ss_flags() at all -- they might also be wrong but I haven't checked.

-- PMM

Reply via email to