diff --git a/glibc-testsuite.changes b/glibc-testsuite.changes index 16e45fb..0177529 100644 --- a/glibc-testsuite.changes +++ b/glibc-testsuite.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Mon Oct 21 12:14:38 UTC 2013 - schwab@suse.de + +- Remove SSE4.2 implementation of strstr for x86-32 (bnc#843464) + ------------------------------------------------------------------- Mon Oct 14 09:32:44 UTC 2013 - schwab@suse.de diff --git a/glibc-testsuite.spec b/glibc-testsuite.spec index 2040362..ed5e4b6 100644 --- a/glibc-testsuite.spec +++ b/glibc-testsuite.spec @@ -211,6 +211,8 @@ Patch15: glibc-2.3.90-langpackdir.diff Patch18: glibc-cpusetsize.diff # PATCH-FEATURE-SLE Use nscd user for nscd Patch19: nscd-server-user.patch +# PATCH-FIX-OPENSUSE Remove SSE4.2 implementation of strstr for x86-32 (bnc#843464) +Patch20: i686-no-sse42-strstr.patch ### Locale related patches # PATCH-FIX-OPENSUSE Add additional locales @@ -459,6 +461,7 @@ rm nscd/s-stamp %patch15 -p1 %patch18 -p1 %patch19 -p1 +%patch20 -p1 %patch100 -p1 %patch101 -p1 diff --git a/glibc-utils.changes b/glibc-utils.changes index 16e45fb..0177529 100644 --- a/glibc-utils.changes +++ b/glibc-utils.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Mon Oct 21 12:14:38 UTC 2013 - schwab@suse.de + +- Remove SSE4.2 implementation of strstr for x86-32 (bnc#843464) + ------------------------------------------------------------------- Mon Oct 14 09:32:44 UTC 2013 - schwab@suse.de diff --git a/glibc-utils.spec b/glibc-utils.spec index 49a96ff..e9ad872 100644 --- a/glibc-utils.spec +++ b/glibc-utils.spec @@ -210,6 +210,8 @@ Patch15: glibc-2.3.90-langpackdir.diff Patch18: glibc-cpusetsize.diff # PATCH-FEATURE-SLE Use nscd user for nscd Patch19: nscd-server-user.patch +# PATCH-FIX-OPENSUSE Remove SSE4.2 implementation of strstr for x86-32 (bnc#843464) +Patch20: i686-no-sse42-strstr.patch ### Locale related patches # PATCH-FIX-OPENSUSE Add additional locales @@ -459,6 +461,7 @@ rm nscd/s-stamp %patch15 -p1 %patch18 -p1 %patch19 -p1 +%patch20 -p1 %patch100 -p1 %patch101 -p1 diff --git a/glibc.changes b/glibc.changes index 16e45fb..0177529 100644 --- a/glibc.changes +++ b/glibc.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Mon Oct 21 12:14:38 UTC 2013 - schwab@suse.de + +- Remove SSE4.2 implementation of strstr for x86-32 (bnc#843464) + ------------------------------------------------------------------- Mon Oct 14 09:32:44 UTC 2013 - schwab@suse.de diff --git a/glibc.spec b/glibc.spec index 9f8cc95..2e29d40 100644 --- a/glibc.spec +++ b/glibc.spec @@ -211,6 +211,8 @@ Patch15: glibc-2.3.90-langpackdir.diff Patch18: glibc-cpusetsize.diff # PATCH-FEATURE-SLE Use nscd user for nscd Patch19: nscd-server-user.patch +# PATCH-FIX-OPENSUSE Remove SSE4.2 implementation of strstr for x86-32 (bnc#843464) +Patch20: i686-no-sse42-strstr.patch ### Locale related patches # PATCH-FIX-OPENSUSE Add additional locales @@ -459,6 +461,7 @@ rm nscd/s-stamp %patch15 -p1 %patch18 -p1 %patch19 -p1 +%patch20 -p1 %patch100 -p1 %patch101 -p1 diff --git a/i686-no-sse42-strstr.patch b/i686-no-sse42-strstr.patch new file mode 100644 index 0000000..e8eab79 --- /dev/null +++ b/i686-no-sse42-strstr.patch @@ -0,0 +1,120 @@ +Index: glibc-2.18/sysdeps/i386/i686/multiarch/Makefile +=================================================================== +--- glibc-2.18.orig/sysdeps/i386/i686/multiarch/Makefile ++++ glibc-2.18/sysdeps/i386/i686/multiarch/Makefile +@@ -11,7 +11,7 @@ sysdep_routines += bzero-sse2 memset-sse + memmove-ssse3-rep bcopy-ssse3 bcopy-ssse3-rep \ + memset-sse2-rep bzero-sse2-rep strcmp-ssse3 \ + strcmp-sse4 strncmp-c strncmp-ssse3 strncmp-sse4 \ +- memcmp-ssse3 memcmp-sse4 strcasestr-nonascii varshift \ ++ memcmp-ssse3 memcmp-sse4 varshift \ + strlen-sse2 strlen-sse2-bsf strncpy-c strcpy-ssse3 \ + strncpy-ssse3 stpcpy-ssse3 stpncpy-ssse3 strcpy-sse2 \ + strncpy-sse2 stpcpy-sse2 stpncpy-sse2 strcat-ssse3 \ +@@ -25,14 +25,11 @@ sysdep_routines += bzero-sse2 memset-sse + strncase_l-c strncase-c strncase_l-ssse3 \ + strcasecmp_l-sse4 strncase_l-sse4 + ifeq (yes,$(config-cflags-sse4)) +-sysdep_routines += strcspn-c strpbrk-c strspn-c strstr-c strcasestr-c ++sysdep_routines += strcspn-c strpbrk-c strspn-c + CFLAGS-varshift.c += -msse4 + CFLAGS-strcspn-c.c += -msse4 + CFLAGS-strpbrk-c.c += -msse4 + CFLAGS-strspn-c.c += -msse4 +-CFLAGS-strstr.c += -msse4 +-CFLAGS-strcasestr.c += -msse4 +-CFLAGS-strcasestr-nonascii.c += -msse4 + endif + endif + +Index: glibc-2.18/sysdeps/i386/i686/multiarch/ifunc-impl-list.c +=================================================================== +--- glibc-2.18.orig/sysdeps/i386/i686/multiarch/ifunc-impl-list.c ++++ glibc-2.18/sysdeps/i386/i686/multiarch/ifunc-impl-list.c +@@ -141,12 +141,6 @@ __libc_ifunc_impl_list (const char *name + IFUNC_IMPL_ADD (array, i, strcasecmp_l, 1, + __strcasecmp_l_ia32)) + +- /* Support sysdeps/i386/i686/multiarch/strcasestr.c. */ +- IFUNC_IMPL (i, name, strcasestr, +- IFUNC_IMPL_ADD (array, i, strcasestr, HAS_SSE4_2, +- __strcasestr_sse42) +- IFUNC_IMPL_ADD (array, i, strcasestr, 1, __strcasestr_ia32)) +- + /* Support sysdeps/i386/i686/multiarch/strcat.S. */ + IFUNC_IMPL (i, name, strcat, + IFUNC_IMPL_ADD (array, i, strcat, HAS_SSSE3, __strcat_ssse3) +@@ -234,11 +228,6 @@ __libc_ifunc_impl_list (const char *name + IFUNC_IMPL_ADD (array, i, strspn, HAS_SSE4_2, __strspn_sse42) + IFUNC_IMPL_ADD (array, i, strspn, 1, __strspn_ia32)) + +- /* Support sysdeps/i386/i686/multiarch/strstr-c.c. */ +- IFUNC_IMPL (i, name, strstr, +- IFUNC_IMPL_ADD (array, i, strstr, HAS_SSE4_2, __strstr_sse42) +- IFUNC_IMPL_ADD (array, i, strstr, 1, __strstr_ia32)) +- + /* Support sysdeps/i386/i686/multiarch/wcschr.S. */ + IFUNC_IMPL (i, name, wcschr, + IFUNC_IMPL_ADD (array, i, wcschr, HAS_SSE2, __wcschr_sse2) +Index: glibc-2.18/sysdeps/i386/i686/multiarch/strcasestr-c.c +=================================================================== +--- glibc-2.18.orig/sysdeps/i386/i686/multiarch/strcasestr-c.c ++++ /dev/null +@@ -1,4 +0,0 @@ +-/* Multiple versions of strcasestr +- All versions must be listed in ifunc-impl-list.c. */ +-#define __strcasestr_sse2 __strcasestr_ia32 +-#include +Index: glibc-2.18/sysdeps/i386/i686/multiarch/strcasestr-nonascii.c +=================================================================== +--- glibc-2.18.orig/sysdeps/i386/i686/multiarch/strcasestr-nonascii.c ++++ /dev/null +@@ -1,2 +0,0 @@ +-#include +-#include +Index: glibc-2.18/sysdeps/i386/i686/multiarch/strcasestr.c +=================================================================== +--- glibc-2.18.orig/sysdeps/i386/i686/multiarch/strcasestr.c ++++ /dev/null +@@ -1 +0,0 @@ +-#include +Index: glibc-2.18/sysdeps/i386/i686/multiarch/strstr-c.c +=================================================================== +--- glibc-2.18.orig/sysdeps/i386/i686/multiarch/strstr-c.c ++++ /dev/null +@@ -1,29 +0,0 @@ +-/* Multiple versions of strstr +- All versions must be listed in ifunc-impl-list.c. */ +- +-#include "init-arch.h" +- +-#define STRSTR __strstr_ia32 +-#if defined SHARED && defined DO_VERSIONING && !defined NO_HIDDEN +-#undef libc_hidden_builtin_def +-#define libc_hidden_builtin_def(name) \ +- __hidden_ver1 (__strstr_ia32, __GI_strstr, __strstr_ia32); +-#endif +- +-/* Redefine strstr so that the compiler won't complain about the type +- mismatch with the IFUNC selector in strong_alias, below. */ +-#undef strstr +-#define strstr __redirect_strstr +- +-#include "string/strstr.c" +- +-extern __typeof (__redirect_strstr) __strstr_sse42 attribute_hidden; +-extern __typeof (__redirect_strstr) __strstr_ia32 attribute_hidden; +- +-/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle +- ifunc symbol properly. */ +-extern __typeof (__redirect_strstr) __libc_strstr; +-libc_ifunc (__libc_strstr, HAS_SSE4_2 ? __strstr_sse42 : __strstr_ia32) +- +-#undef strstr +-strong_alias (__libc_strstr, strstr) +Index: glibc-2.18/sysdeps/i386/i686/multiarch/strstr.c +=================================================================== +--- glibc-2.18.orig/sysdeps/i386/i686/multiarch/strstr.c ++++ /dev/null +@@ -1 +0,0 @@ +-#include