pixman: Branch 'master'

Matt Turner mattst88 at kemper.freedesktop.org
Sun Nov 17 17:44:45 PST 2013


 test/utils.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit f473fd1e7553a4e92a0d72bea360f05d005c9a88
Author: Søren Sandmann <ssp at redhat.com>
Date:   Sat Nov 16 18:57:01 2013 -0500

    test/utils.c: Make the stack unaligned only on 32 bit Windows
    
    The call_test_function() contains some assembly that deliberately
    causes the stack to be aligned to 32 bits rather than 128 bits on
    x86-32. The intention is to catch bugs that surface when pixman is
    called from code that only uses a 32 bit alignment.
    
    However, recent versions of GCC apparently make the assumption (either
    accidentally or deliberately) that that the incoming stack is aligned
    to 128 bits, where older versions only seemed to make this assumption
    when compiling with -msse2. This causes the vector code in the PRNG to
    now segfault when called from call_test_function() on x86-32.
    
    This patch fixes that by only making the stack unaligned on 32 bit
    Windows, where it would definitely be incorrect for GCC to assume that
    the incoming stack is aligned to 128 bits.
    
    V2: Put "defined(...)" around __GNUC__
    
    Reviewed-and-Tested-by: Matt Turner <mattst88 at gmail.com>
    Bugzilla: https://bugs.gentoo.org/show_bug.cgi?id=491110

diff --git a/test/utils.c b/test/utils.c
index 281f6b4..ebe0ccc 100644
--- a/test/utils.c
+++ b/test/utils.c
@@ -648,7 +648,7 @@ call_test_function (uint32_t    (*test_function)(int testnum, int verbose),
 {
     uint32_t retval;
 
-#if defined (__GNUC__) && (defined (__i386) || defined (__i386__))
+#if defined (__GNUC__) && defined (_WIN32) && (defined (__i386) || defined (__i386__))
     __asm__ (
 	/* Deliberately avoid aligning the stack to 16 bytes */
 	"pushl	%1\n\t"


More information about the xorg-commit mailing list