[Pixman] Test suite failures on 32-bit x86?

Søren Sandmann sandmann at cs.au.dk
Sat Nov 16 16:25:25 PST 2013


Siarhei Siamashka <siarhei.siamashka at gmail.com> writes:

>> Interesting. I can't reproduce this with the standard compiler on Fedora
>> 17 (which is also a gcc 4.7.2). Back when the PRNG was added, there was
>> some crash that only happened with a Fedora GCC, but not the Gentoo
>> one. I forget what the difference was though.
>
> This indeed seems to be GCC configuration dependent. Rebuilding GCC
> (now 4.7.3) without Gentoo patches resolves everything but the
> matrix-test, which fails in:
>
> 0x080dfe2c in __floatditf ()
> ...
>    0x080dfe28 <+360>:	mov    0x50(%esp),%eax
> => 0x080dfe2c <+364>:	movdqa 0x20(%esp),%xmm0
>    0x080dfe32 <+370>:	movdqa %xmm0,(%eax)
>    0x080dfe36 <+374>:	add    $0x40,%esp
>
> But this might be because GCC was still built in a configuration targeting
> SSE2 processors by default. A bit more tests are necessary, but I did
> not have time to run them yet.

It may be that the best solution is to only do the stack unaligment on
Windows given that the GCC developers believe that the ABI for Linux on
x86-32 calls for a 128 bit aligned stack on function entry.

On Windows it certain;ly would be wrong for GCC to make that assumption,
so the stack unalignment should be safe there. Though who knows, maybe
it will turn out that all compilers except GCC were actually using the
wrong ABI on Windows too.

The following patch disables the unaligning on all systems except GCC on
32 bit Windows.


Søren


More information about the Pixman mailing list