about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2012-02-29 22:37:38 +0000
committerJoseph Myers <joseph@codesourcery.com>2012-06-25 21:43:15 +0000
commit3e5bea052bfaa8d0a073f5e924ccc882ce3909bc (patch)
tree523fc405a17f56e71bb44597a5ccc8dbf5e2c519
parente0ca0a0f7680a30aadc0aac30a446f5adc8eed27 (diff)
downloadglibc-3e5bea052bfaa8d0a073f5e924ccc882ce3909bc.tar.gz
glibc-3e5bea052bfaa8d0a073f5e924ccc882ce3909bc.tar.xz
glibc-3e5bea052bfaa8d0a073f5e924ccc882ce3909bc.zip
Fix x86 strcasecmp_l (bug 13786).
(cherry picked from commit 0bab47b6b255e77bd69206ab0dcfa97331fefa50)
-rw-r--r--ChangeLog12
-rw-r--r--NEWS2
-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
5 files changed, 19 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 94b14c3c23..ae32903f52 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -62,6 +62,18 @@
 	* sysdeps/x86_64/fpu/multiarch/s_tan-fma4.c (__branred): Don't
 	define.
 
+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.
+
 2012-02-27  David S. Miller  <davem@davemloft.net>
 
 	* sysdeps/ieee754/ldbl-128/s_nearbyintl.c (__nearbyintl): Do not
diff --git a/NEWS b/NEWS
index 2cbf346beb..c8fbcb0d01 100644
--- a/NEWS
+++ b/NEWS
@@ -10,7 +10,7 @@ Version 2.15.1
 * The following bugs are resolved with this release:
 
   411, 2547, 2548, 11365, 11494, 13583, 13731, 13732, 13733, 13747, 13748,
-  13749, 13753, 13771, 13774, 14059, 14167
+  13749, 13753, 13771, 13774, 13786, 14059, 14167
 
 Version 2.15
 
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 28e2d6154c..39fa517b2d 100644
--- a/sysdeps/i386/i686/multiarch/strcmp.S
+++ b/sysdeps/i386/i686/multiarch/strcmp.S
@@ -122,6 +122,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)