diff options
author | Ulrich Drepper <drepper@gmail.com> | 2011-11-01 16:46:23 -0400 |
---|---|---|
committer | Ulrich Drepper <drepper@gmail.com> | 2011-11-01 16:46:23 -0400 |
commit | 34372fc6d3e7bb8870905a6ac124bb2217e3800a (patch) | |
tree | d3c72b43b1edd7a32a137e7c0ae2a0f66074b85e | |
parent | fadb59f8d322e5c7ec3c2dd2cbf5d44baf5eddd9 (diff) | |
download | glibc-34372fc6d3e7bb8870905a6ac124bb2217e3800a.tar.gz glibc-34372fc6d3e7bb8870905a6ac124bb2217e3800a.tar.xz glibc-34372fc6d3e7bb8870905a6ac124bb2217e3800a.zip |
Fix test of non-ASCII locales in x86-64 strcasecmp et.al.
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | sysdeps/x86_64/multiarch/strcmp-sse42.S | 4 | ||||
-rw-r--r-- | sysdeps/x86_64/strcmp.S | 6 |
3 files changed, 8 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog index b8bfd16c84..f18c5cbf4b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2011-11-01 Ulrich Drepper <drepper@gmail.com> + * 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 b93eda13b4..7a50ff05db 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 165073e907..6e5bdaaf2e 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 |