From: Ulrich Drepper Date: Tue, 1 Nov 2011 20:46:23 +0000 (-0400) Subject: Fix test of non-ASCII locales in x86-64 strcasecmp et.al. X-Git-Tag: glibc-2.15~120 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=34372fc6d3e7bb8870905a6ac124bb2217e3800a;p=thirdparty%2Fglibc.git Fix test of non-ASCII locales in x86-64 strcasecmp et.al. --- diff --git a/ChangeLog b/ChangeLog index b8bfd16c84f..f18c5cbf4bf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2011-11-01 Ulrich Drepper + * sysdeps/x86_64/strcmp.S: Fix test for non-ASCII locales. + * sysdeps/x86_64/multiarch/strcmp-sse42.S: Likewise. + * posix/tst-rfc3484.c: Add missing __free_in6ai dummy function. * posix/tst-rfc3484-2.c: Likewise. * posix/tst-rfc3484-3.c: Likewise. diff --git a/sysdeps/x86_64/multiarch/strcmp-sse42.S b/sysdeps/x86_64/multiarch/strcmp-sse42.S index b93eda13b46..7a50ff05db7 100644 --- a/sysdeps/x86_64/multiarch/strcmp-sse42.S +++ b/sysdeps/x86_64/multiarch/strcmp-sse42.S @@ -104,7 +104,7 @@ STRCMP_SSE42: # else movq (%rdx), %rax # endif - testl $0, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%rax) + testl $1, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%rax) jne __strcasecmp_l_nonascii #endif #ifdef USE_AS_STRNCASECMP_L @@ -115,7 +115,7 @@ STRCMP_SSE42: # else movq (%rcx), %rax # endif - testl $0, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%rax) + testl $1, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%rax) jne __strncasecmp_l_nonascii #endif diff --git a/sysdeps/x86_64/strcmp.S b/sysdeps/x86_64/strcmp.S index 165073e907e..6e5bdaaf2ea 100644 --- a/sysdeps/x86_64/strcmp.S +++ b/sysdeps/x86_64/strcmp.S @@ -1,5 +1,5 @@ /* Highly optimized version for x86-64. - Copyright (C) 1999, 2000, 2002, 2003, 2005, 2009, 2010 + Copyright (C) 1999, 2000, 2002, 2003, 2005, 2009, 2010, 2011 Free Software Foundation, Inc. This file is part of the GNU C Library. Based on i686 version contributed by Ulrich Drepper @@ -157,7 +157,7 @@ END (BP_SYM (STRCMP)) # else movq (%rdx), %rax # endif - testl $0, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%rax) + testl $1, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%rax) jne __strcasecmp_l_nonascii # elif defined USE_AS_STRNCASECMP_L /* We have to fall back on the C implementation for locales @@ -167,7 +167,7 @@ END (BP_SYM (STRCMP)) # else movq (%rcx), %rax # endif - testl $0, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%rax) + testl $1, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%rax) jne __strncasecmp_l_nonascii # endif