File i686-strcasecmp-fallback.patch of Package glibc.4601

	* sysdeps/i386/i686/multiarch/strcmp-sse4.S (__strcasecmp_sse4_2)
	(__strncasecmp_sse4_2) [PIC]: Restore %ebx before falling through
	to __strcasecmp_nonascii and __strncasecmp_nonascii.
	* sysdeps/i386/i686/multiarch/strcmp-ssse3.S (__strcasecmp_ssse3)
	(__strncasecmp_ssse3) [PIC]: Likewise.

Index: glibc-2.17.90/sysdeps/i386/i686/multiarch/strcmp-sse4.S
===================================================================
--- glibc-2.17.90.orig/sysdeps/i386/i686/multiarch/strcmp-sse4.S
+++ glibc-2.17.90/sysdeps/i386/i686/multiarch/strcmp-sse4.S
@@ -121,8 +121,14 @@ ENTRY (__strcasecmp_sse4_2)
 	movl	(%eax), %eax
 # endif
 	testl	$1, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%eax)
+# ifdef PIC
+	je	L(ascii)
+	POP	(%ebx)
+	jmp	__strcasecmp_nonascii
+# else
 	jne	__strcasecmp_nonascii
 	jmp	L(ascii)
+# endif
 END (__strcasecmp_sse4_2)
 #endif
 
@@ -152,8 +158,14 @@ ENTRY (__strncasecmp_sse4_2)
 	movl	(%eax), %eax
 # endif
 	testl	$1, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%eax)
+# ifdef PIC
+	je	L(ascii)
+	POP	(%ebx)
+	jmp	__strncasecmp_nonascii
+# else
 	jne	__strncasecmp_nonascii
 	jmp	L(ascii)
+# endif
 END (__strncasecmp_sse4_2)
 #endif
 
Index: glibc-2.17.90/sysdeps/i386/i686/multiarch/strcmp-ssse3.S
===================================================================
--- glibc-2.17.90.orig/sysdeps/i386/i686/multiarch/strcmp-ssse3.S
+++ glibc-2.17.90/sysdeps/i386/i686/multiarch/strcmp-ssse3.S
@@ -138,8 +138,14 @@ ENTRY (__strcasecmp_ssse3)
 	movl	(%eax), %eax
 # endif
 	testl	$1, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%eax)
+# ifdef PIC
+	je	L(ascii)
+	POP	(%ebx)
+	jmp	__strcasecmp_nonascii
+# else
 	jne	__strcasecmp_nonascii
 	jmp	L(ascii)
+# endif
 END (__strcasecmp_ssse3)
 #endif
 
@@ -169,8 +175,14 @@ ENTRY (__strncasecmp_ssse3)
 	movl	(%eax), %eax
 # endif
 	testl	$1, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%eax)
+# ifdef PIC
+	je	L(ascii)
+	POP	(%ebx)
+	jmp	__strncasecmp_nonascii
+# else
 	jne	__strncasecmp_nonascii
 	jmp	L(ascii)
+# endif
 END (__strncasecmp_ssse3)
 #endif
 
openSUSE Build Service is sponsored by