aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2012-02-29 22:37:38 +0000
committerJoseph Myers <joseph@codesourcery.com>2012-02-29 22:37:38 +0000
commit0bab47b6b255e77bd69206ab0dcfa97331fefa50 (patch)
treec766dace6d2302bab3edf85887c1b44fb6e78fa4
parent0fcad3e243575f5b316a1b630fcd9ed2396fd0c8 (diff)
downloadglibc-0bab47b6b255e77bd69206ab0dcfa97331fefa50.tar
glibc-0bab47b6b255e77bd69206ab0dcfa97331fefa50.tar.gz
glibc-0bab47b6b255e77bd69206ab0dcfa97331fefa50.tar.bz2
glibc-0bab47b6b255e77bd69206ab0dcfa97331fefa50.zip
Fix x86 strcasecmp_l (bug 13786).
-rw-r--r--ChangeLog10
-rw-r--r--sysdeps/i386/i686/multiarch/strcasecmp_l-c.c2
-rw-r--r--sysdeps/i386/i686/multiarch/strcmp.S3
-rw-r--r--sysdeps/i386/i686/multiarch/strncase_l-c.c2
4 files changed, 16 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 59fc3c0d7b..e2bc926f40 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,15 @@
2012-02-29 Joseph Myers <joseph@codesourcery.com>
+ [BZ #13786]
+ * sysdeps/i386/i686/multiarch/strcmp.S [USE_AS_STRCASECMP_L]: Do
+ not include ../strcmp.S.
+ [USE_AS_STRNCASECMP_L]: Likewise.
+ * sysdeps/i386/i686/multiarch/strcasecmp_l-c.c
+ (__strcasecmp_l_ia32): Define as alias to __strcasecmp_l_nonascii.
+ * sysdeps/i386/i686/multiarch/strncase_l-c.c
+ (__strncasecmp_l_ia32): Define as alias to
+ __strncasecmp_l_nonascii.
+
[BZ #5794]
* math/libm-test.inc (expm1_test): Add test for bug 5794.
* sysdeps/i386/fpu/libm-test-ulps: Update.
diff --git a/sysdeps/i386/i686/multiarch/strcasecmp_l-c.c b/sysdeps/i386/i686/multiarch/strcasecmp_l-c.c
index d10e872568..d4fcd2b4a1 100644
--- a/sysdeps/i386/i686/multiarch/strcasecmp_l-c.c
+++ b/sysdeps/i386/i686/multiarch/strcasecmp_l-c.c
@@ -6,6 +6,8 @@ extern __typeof (strcasecmp_l) __strcasecmp_l_nonascii;
#define USE_IN_EXTENDED_LOCALE_MODEL 1
#include <string/strcasecmp.c>
+strong_alias (__strcasecmp_l_nonascii, __strcasecmp_l_ia32)
+
/* The needs of strcasecmp in libc are minimal, no need to go through
the IFUNC. */
strong_alias (__strcasecmp_l_nonascii, __GI___strcasecmp_l)
diff --git a/sysdeps/i386/i686/multiarch/strcmp.S b/sysdeps/i386/i686/multiarch/strcmp.S
index 5410d17e09..b3b9eb87bc 100644
--- a/sysdeps/i386/i686/multiarch/strcmp.S
+++ b/sysdeps/i386/i686/multiarch/strcmp.S
@@ -111,6 +111,7 @@ END(STRCMP)
# endif
#endif
-#ifndef USE_AS_STRNCMP
+#if !defined USE_AS_STRNCMP && !defined USE_AS_STRCASECMP_L \
+ && !defined USE_AS_STRNCASECMP_L
# include "../strcmp.S"
#endif
diff --git a/sysdeps/i386/i686/multiarch/strncase_l-c.c b/sysdeps/i386/i686/multiarch/strncase_l-c.c
index 0c68b8d1cb..7e601af271 100644
--- a/sysdeps/i386/i686/multiarch/strncase_l-c.c
+++ b/sysdeps/i386/i686/multiarch/strncase_l-c.c
@@ -6,6 +6,8 @@ extern __typeof (strncasecmp_l) __strncasecmp_l_nonascii;
#define USE_IN_EXTENDED_LOCALE_MODEL 1
#include <string/strncase.c>
+strong_alias (__strncasecmp_l_nonascii, __strncasecmp_l_ia32)
+
/* The needs of strcasecmp in libc are minimal, no need to go through
the IFUNC. */
strong_alias (__strncasecmp_l_nonascii, __GI___strncasecmp_l)