[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [PATCH] test/input: Replace negative architecture test by test for 64-bit



Geert Uytterhoeven <geert@linux-m68k.org> writes:

> The test for double-aligned members in dix_valuator_alloc() currently
> depends on "if !defined(__i386__) && !defined(__sh__)". This covers
> m68k, where it fails.
>
> According to the comment, the test should be limited to 64-bit
> platforms only. Hence check if sizeof(long) == 8 instead.

MIPS N32 needs doubles to be 8 byte aligned, while it has 32 bit longs
and pointers (the CPU registers are 64 bit).  libxi has a similar
conditional for structure padding which prevented sigbuses of all
GTK3-using programs there.

Should the comment be changed, or the negative test expanded?  I don't
know how it could be determined without checking specific architecture
names.

>
> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
> ---
> Untested for now
>
>  test/input.c |   10 +++++-----
>  1 files changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/test/input.c b/test/input.c
> index be988a4..ed29bdc 100644
> --- a/test/input.c
> +++ b/test/input.c
> @@ -1384,11 +1384,11 @@ dix_valuator_alloc(void)
>  
>          assert(v);
>          assert(v->numAxes == num_axes);
> -#if !defined(__i386__) && !defined(__sh__)
> -        /* must be double-aligned on 64 bit */
> -        assert(((void *) v->axisVal - (void *) v) % sizeof(double) == 0);
> -        assert(((void *) v->axes - (void *) v) % sizeof(double) == 0);
> -#endif
> +        if (sizeof(long) == 8) {
> +            /* must be double-aligned on 64 bit */
> +            assert(((void *) v->axisVal - (void *) v) % sizeof(double) == 0);
> +            assert(((void *) v->axes - (void *) v) % sizeof(double) == 0);
> +        }
>          num_axes++;
>      }

Attachment: pgpZ9lkMns46d.pgp
Description: PGP signature


Reply to: