diff --git a/gb18030.patch.bz2 b/gb18030.patch.bz2 new file mode 100644 index 0000000..2bf0402 --- /dev/null +++ b/gb18030.patch.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6d06c85b314ec365a1430a47d2867bf1191ce5d3771d9647bc3bcf31873228a +size 299733 diff --git a/glibc-2.15-math64crash.patch b/glibc-2.15-math64crash.patch new file mode 100644 index 0000000..5bcfe5e --- /dev/null +++ b/glibc-2.15-math64crash.patch @@ -0,0 +1,187 @@ +The following patch comes from Arch Linux - and is just a workaround +until the real problem is fixed. + +diff --git a/sysdeps/x86_64/fpu/multiarch/Makefile b/sysdeps/x86_64/fpu/multiarch/Makefile +index be68903..a032da8 100644 +--- a/sysdeps/x86_64/fpu/multiarch/Makefile ++++ b/sysdeps/x86_64/fpu/multiarch/Makefile +@@ -1,5 +1,5 @@ + ifeq ($(subdir),math) +-libm-sysdep_routines += s_floor-c s_ceil-c s_floorf-c s_ceilf-c \ ++libm-sysdep_routines += s_floorf-c s_ceilf-c \ + s_rint-c s_rintf-c s_nearbyint-c s_nearbyintf-c + + ifeq ($(have-mfma4),yes) +diff --git a/sysdeps/x86_64/fpu/multiarch/s_ceil-c.c b/sysdeps/x86_64/fpu/multiarch/s_ceil-c.c +deleted file mode 100644 +index 6a5ea3f..0000000 +--- a/sysdeps/x86_64/fpu/multiarch/s_ceil-c.c ++++ /dev/null +@@ -1,2 +0,0 @@ +-#define __ceil __ceil_c +-#include +diff --git a/sysdeps/x86_64/fpu/multiarch/s_ceil.S b/sysdeps/x86_64/fpu/multiarch/s_ceil.S +deleted file mode 100644 +index d0f8da3..0000000 +--- a/sysdeps/x86_64/fpu/multiarch/s_ceil.S ++++ /dev/null +@@ -1,40 +0,0 @@ +-/* Copyright (C) 2011 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- Contributed by Ulrich Drepper , 2011. +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public +- License as published by the Free Software Foundation; either +- version 2.1 of the License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with the GNU C Library; if not, write to the Free +- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +- 02111-1307 USA. */ +- +-#include +-#include +- +- +-ENTRY(__ceil) +- .type __ceil, @gnu_indirect_function +- call __get_cpu_features@plt +- movq %rax, %rdx +- leaq __ceil_sse41(%rip), %rax +- testl $bit_SSE4_1, CPUID_OFFSET+index_SSE4_1(%rdx) +- jnz 2f +- leaq __ceil_c(%rip), %rax +-2: ret +-END(__ceil) +-weak_alias (__ceil, ceil) +- +- +-ENTRY(__ceil_sse41) +- roundsd $2, %xmm0, %xmm0 +- ret +-END(__ceil_sse41) +diff --git a/sysdeps/x86_64/fpu/multiarch/s_floor-c.c b/sysdeps/x86_64/fpu/multiarch/s_floor-c.c +deleted file mode 100644 +index 68733b6..0000000 +--- a/sysdeps/x86_64/fpu/multiarch/s_floor-c.c ++++ /dev/null +@@ -1,3 +0,0 @@ +-#undef __floor +-#define __floor __floor_c +-#include +diff --git a/sysdeps/x86_64/fpu/multiarch/s_floor.S b/sysdeps/x86_64/fpu/multiarch/s_floor.S +deleted file mode 100644 +index 514ea95..0000000 +--- a/sysdeps/x86_64/fpu/multiarch/s_floor.S ++++ /dev/null +@@ -1,40 +0,0 @@ +-/* Copyright (C) 2011 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- Contributed by Ulrich Drepper , 2011. +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public +- License as published by the Free Software Foundation; either +- version 2.1 of the License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with the GNU C Library; if not, write to the Free +- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +- 02111-1307 USA. */ +- +-#include +-#include +- +- +-ENTRY(__floor) +- .type __floor, @gnu_indirect_function +- call __get_cpu_features@plt +- movq %rax, %rdx +- leaq __floor_sse41(%rip), %rax +- testl $bit_SSE4_1, CPUID_OFFSET+index_SSE4_1(%rdx) +- jnz 2f +- leaq __floor_c(%rip), %rax +-2: ret +-END(__floor) +-weak_alias (__floor, floor) +- +- +-ENTRY(__floor_sse41) +- roundsd $1, %xmm0, %xmm0 +- ret +-END(__floor_sse41) +diff --git a/sysdeps/x86_64/fpu/multiarch/s_sin.c b/sysdeps/x86_64/fpu/multiarch/s_sin.c +deleted file mode 100644 +index 1ba9dbc..0000000 +--- a/sysdeps/x86_64/fpu/multiarch/s_sin.c ++++ /dev/null +@@ -1,31 +0,0 @@ +-#if defined HAVE_FMA4_SUPPORT || defined HAVE_AVX_SUPPORT +-# include +-# include +-# undef NAN +- +-extern double __cos_sse2 (double); +-extern double __sin_sse2 (double); +-extern double __cos_avx (double); +-extern double __sin_avx (double); +-# ifdef HAVE_FMA4_SUPPORT +-extern double __cos_fma4 (double); +-extern double __sin_fma4 (double); +-# else +-# undef HAS_FMA4 +-# define HAS_FMA4 0 +-# define __cos_fma4 ((void *) 0) +-# define __sin_fma4 ((void *) 0) +-# endif +- +-libm_ifunc (__cos, HAS_FMA4 ? __cos_fma4 : HAS_AVX ? __cos_avx : __cos_sse2); +-weak_alias (__cos, cos) +- +-libm_ifunc (__sin, HAS_FMA4 ? __sin_fma4 : HAS_AVX ? __sin_avx : __sin_sse2); +-weak_alias (__sin, sin) +- +-# define __cos __cos_sse2 +-# define __sin __sin_sse2 +-#endif +- +- +-#include +diff --git a/sysdeps/x86_64/fpu/multiarch/s_tan.c b/sysdeps/x86_64/fpu/multiarch/s_tan.c +deleted file mode 100644 +index 8f6601e..0000000 +--- a/sysdeps/x86_64/fpu/multiarch/s_tan.c ++++ /dev/null +@@ -1,21 +0,0 @@ +-#if defined HAVE_FMA4_SUPPORT || defined HAVE_AVX_SUPPORT +-# include +-# include +- +-extern double __tan_sse2 (double); +-extern double __tan_avx (double); +-# ifdef HAVE_FMA4_SUPPORT +-extern double __tan_fma4 (double); +-# else +-# undef HAS_FMA4 +-# define HAS_FMA4 0 +-# define __tan_fma4 ((void *) 0) +-# endif +- +-libm_ifunc (tan, HAS_FMA4 ? __tan_fma4 : HAS_AVX ? __tan_avx : __tan_sse2); +- +-# define tan __tan_sse2 +-#endif +- +- +-#include diff --git a/glibc-2.16-scanf.patch b/glibc-2.16-scanf.patch new file mode 100644 index 0000000..940a341 --- /dev/null +++ b/glibc-2.16-scanf.patch @@ -0,0 +1,31 @@ +commit 20b38e0301279a37a3f1e769843933bcc0d5f736 +Author: Paul Pluzhnikov +Date: Sun Jan 8 20:13:35 2012 -0500 + + sscanf always calls realloc + + +2012-01-05 Paul Pluzhnikov + + * stdio-common/vfscanf.c (_IO_vfscanf_internal): Use alloca when + appropriate. + +diff --git a/stdio-common/vfscanf.c b/stdio-common/vfscanf.c +index 0e71deb..e18a6c3 100644 +--- a/stdio-common/vfscanf.c ++++ b/stdio-common/vfscanf.c +@@ -1,4 +1,4 @@ +-/* Copyright (C) 1991-2006, 2007, 2010, 2011 Free Software Foundation, Inc. ++/* Copyright (C) 1991-2007, 2010, 2011, 2012 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or +@@ -274,7 +274,7 @@ _IO_vfscanf_internal (_IO_FILE *s, const char *format, _IO_va_list argptr, + CHAR_T *old = wp; \ + size_t newsize = (UCHAR_MAX + 1 > 2 * wpmax \ + ? UCHAR_MAX + 1 : 2 * wpmax); \ +- if (use_malloc || __libc_use_alloca (newsize)) \ ++ if (use_malloc || !__libc_use_alloca (newsize)) \ + { \ + wp = realloc (use_malloc ? wp : NULL, newsize); \ + if (wp == NULL) \ diff --git a/glibc-2.3.4-gb18030-big5hkscs.diff.bz2 b/glibc-2.3.4-gb18030-big5hkscs.diff.bz2 deleted file mode 100644 index 939c711..0000000 --- a/glibc-2.3.4-gb18030-big5hkscs.diff.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b9ad9e58edeea033b1e06ae3648f6adfce0dbf3f3e84b6ec77dda9fa5cf3a58d -size 1034566 diff --git a/glibc-ppc-getcontext.patch b/glibc-ppc-getcontext.patch new file mode 100644 index 0000000..adbfdb5 --- /dev/null +++ b/glibc-ppc-getcontext.patch @@ -0,0 +1,40 @@ +commit d1f741e9120669883c6fc0f6fc53b9d35e5015ce +Author: Will Schmidt +Date: Sun Jan 8 21:32:57 2012 -0500 + + Fix typo in Linux/PPC32 getcontext + +2011-01-05 Will Schmidt + + * sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S: Fix a + typo #include statement. + + + * include/sys/cdefs.h: Define __attribute_alloc_size. +diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S +index dad1074..46f3dea 100644 +--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S ++++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S +@@ -1,5 +1,5 @@ + /* Save current context. +- Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc. ++ Copyright (C) 2002, 2004, 2005, 2012 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or +@@ -54,12 +54,12 @@ versioned_symbol (libc, __getcontext, getcontext, GLIBC_2_3_4) + + #if SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4) + compat_text_section +- +-# undef __CONTEXT_FUNC_NAME ++ ++# undef __CONTEXT_FUNC_NAME + # define __CONTEXT_FUNC_NAME __novec_getcontext + # undef __CONTEXT_ENABLE_VRS + +-# clude "getcontext-common.S" ++# include "getcontext-common.S" + + .previous + diff --git a/glibc.changes b/glibc.changes index c5dcb54..abdb862 100644 --- a/glibc.changes +++ b/glibc.changes @@ -1,3 +1,28 @@ +------------------------------------------------------------------- +Tue Jan 10 12:31:14 UTC 2012 - aj@suse.de + +- Remove all math ifuncs on x86-64. + +------------------------------------------------------------------- +Tue Jan 10 09:53:58 UTC 2012 - aj@suse.de + +- Remove math ifuncs that cause crashes in apache2 and + gdk-pixbuf-query-loaders-64 (bnc#740109) for now + (glibc-2.15-math64crash.patch). +- nscd needs the same glibc version, add require. + +------------------------------------------------------------------- +Mon Jan 9 08:17:08 UTC 2012 - aj@suse.de + +- Fix realloc usage in vfscanf (glibc-2.16-scanf.patch) +- Fix getcontext on powerpc 32-bit (glibc-ppc-getcontext.patch) + +------------------------------------------------------------------- +Wed Jan 4 09:34:28 UTC 2012 - aj@suse.de + +- Remove patch glibc-2.3.4-gb18030-big5hkscs.diff.bz2 and + replace it by gb18030.patch.bz2 (synced with Fedora 16). + ------------------------------------------------------------------- Tue Jan 3 19:42:17 UTC 2012 - aj@suse.de diff --git a/glibc.spec b/glibc.spec index 4fd0217..0ab50e7 100644 --- a/glibc.spec +++ b/glibc.spec @@ -129,7 +129,7 @@ Patch16: glibc-2.4.90-no_NO.diff # PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines Patch20: glibc-2.4-china.diff # PATCH-FIX-OPENSUSE Fix gb18030 code bnc#54080 -Patch21: glibc-2.3.4-gb18030-big5hkscs.diff.bz2 +Patch21: gb18030.patch.bz2 # PATCH-FIX-OPENSUSE Handle timestamp, adjust nscd.conf Patch22: glibc-2.4.90-nscd.diff # PATCH-FIX-OPENSUSE Fix path for nscd databases @@ -188,8 +188,14 @@ Patch82: crypt_blowfish-1.2-hack_around_arm.diff Patch84: nscd-avoid-gcc-warning.diff # PATCH-FIX-OPENSUSE fixed build-compare by omitting one more date - meissner@suse.de Patch87: glibc-nodate.patch -# PATCH-FIX-OPENSUSE revert pthread-cond-wait change since it causes hangs +# PATCH-FIX-OPENSUSE revert pthread-cond-wait change since it causes hangs - aj@suse.de Patch88: pthread-cond-wait-revert.patch +# PATCH-FIX-UPSTREAM Fix realloc usage in vfscanf - aj@suse.de +Patch89: glibc-2.16-scanf.patch +# PATCH-FIX-UPSTREAM Fix getcontext on 32-bit powerpc - aj@suse.de +Patch90: glibc-ppc-getcontext.patch +# PATCH-FIX-OPENSUSE Revert some math ifuncs (bnc#740109) - aj@suse.de +Patch91: glibc-2.15-math64crash.patch %description The GNU C Library provides the most important standard libraries used @@ -256,6 +262,7 @@ License: LGPL-2.1+ Group: System/Daemons Provides: aaa_base:/etc/init.d/nscd Provides: glibc:/usr/sbin/nscd +Requires: glibc = %{version} Requires(preun): %insserv_prereq Requires(post): %insserv_prereq Requires(postun): %insserv_prereq @@ -372,8 +379,7 @@ mv crypt_blowfish-%crypt_bf_version/*.[chS] crypt/ %patch14 %patch16 %patch20 -# XXX Did not patch for 2.14: -#%patch21 +%patch21 -p1 # avoid changing nscd_stat.c mtime to avoid code generation # differences on each rebuild touch -r nscd/nscd_stat.c nscd/s-stamp @@ -406,6 +412,9 @@ rm nscd/s-stamp %patch84 %patch87 -p0 %patch88 -p1 -R +%patch89 -p1 +%patch90 -p1 +%patch91 -p1 # # Inconsistency detected by ld.so: dl-close.c: 719: _dl_close: Assertion `map->l_init_called' failed! @@ -505,6 +514,9 @@ PARALLEL="%{?_smp_mflags}" # fails to build otherwise - need to recheck and fix %define enable_stackguard_randomization 0 %endif +# Remove completely, these give some strange crashes with dlopen +# See bnc#740109 +rm -rf sysdeps/x86_64/fpu/multiarch configure_and_build_glibc() { local dirname="$1"; shift