aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@gmail.com>2011-11-01 16:46:23 -0400
committerUlrich Drepper <drepper@gmail.com>2011-11-01 16:46:23 -0400
commit34372fc6d3e7bb8870905a6ac124bb2217e3800a (patch)
treed3c72b43b1edd7a32a137e7c0ae2a0f66074b85e
parentfadb59f8d322e5c7ec3c2dd2cbf5d44baf5eddd9 (diff)
downloadglibc-34372fc6d3e7bb8870905a6ac124bb2217e3800a.zip
glibc-34372fc6d3e7bb8870905a6ac124bb2217e3800a.tar.gz
glibc-34372fc6d3e7bb8870905a6ac124bb2217e3800a.tar.bz2
Fix test of non-ASCII locales in x86-64 strcasecmp et.al.
-rw-r--r--ChangeLog3
-rw-r--r--sysdeps/x86_64/multiarch/strcmp-sse42.S4
-rw-r--r--sysdeps/x86_64/strcmp.S6
3 files changed, 8 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index b8bfd16..f18c5cb 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 b93eda1..7a50ff0 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 165073e..6e5bdaa 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