Accepting request 816574 from home:Andreas_Schwab:Factory
- long-double-alias.patch: Fix build with GCC 10 when long double = double - nscd-gc-cycle.patch: nscd: bump GC cycle during cache pruning (bsc#1171878, BZ #26130) OBS-URL: https://build.opensuse.org/request/show/816574 OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=565
This commit is contained in:
parent
0c1833dfc6
commit
129004b05a
@ -1,3 +1,10 @@
|
||||
-------------------------------------------------------------------
|
||||
Tue Jun 23 08:32:23 UTC 2020 - Andreas Schwab <schwab@suse.de>
|
||||
|
||||
- long-double-alias.patch: Fix build with GCC 10 when long double = double
|
||||
- nscd-gc-cycle.patch: nscd: bump GC cycle during cache pruning
|
||||
(bsc#1171878, BZ #26130)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon May 18 12:25:49 UTC 2020 - Andreas Schwab <schwab@suse.de>
|
||||
|
||||
|
10
glibc.spec
10
glibc.spec
@ -263,6 +263,8 @@ Patch306: glibc-fix-double-loopback.diff
|
||||
Patch1000: riscv-syscall-clobber.patch
|
||||
# PATCH-FIX-UPSTREAM Avoid ldbl-96 stack corruption from range reduction of pseudo-zero (CVE-2020-10029, BZ #25487)
|
||||
Patch1001: ldbl-96-rem-pio2l.patch
|
||||
# PATCH-FIX-UPSTREAM Fix build with GCC 10 when long double = double
|
||||
Patch1002: long-double-alias.patch
|
||||
|
||||
###
|
||||
# Patches awaiting upstream approval
|
||||
@ -273,6 +275,8 @@ Patch2000: fix-locking-in-_IO_cleanup.patch
|
||||
Patch2001: ldconfig-concurrency.patch
|
||||
# PATCH-FIX-UPSTREAM Fix buffer overrun in EUC-KR conversion module (BZ #24973)
|
||||
Patch2002: euc-kr-overrun.patch
|
||||
# PATCH-FIX-UPSTREAM nscd: bump GC cycle during cache pruning (BZ #26130)
|
||||
Patch2003: nscd-gc-cycle.patch
|
||||
|
||||
# Non-glibc patches
|
||||
# PATCH-FIX-OPENSUSE Remove debianisms from manpages
|
||||
@ -475,10 +479,12 @@ makedb: A program to create a database for nss
|
||||
|
||||
%patch1000 -p1
|
||||
%patch1001 -p1
|
||||
%patch1002 -p1
|
||||
|
||||
%patch2000 -p1
|
||||
%patch2001 -p1
|
||||
%patch2002 -p1
|
||||
%patch2003 -p1
|
||||
|
||||
%patch3000
|
||||
|
||||
@ -690,7 +696,7 @@ configure_and_build_glibc() {
|
||||
# Build html documentation
|
||||
#
|
||||
%if %{build_html}
|
||||
make -C cc-base html
|
||||
make %{?_smp_mflags} -C cc-base html
|
||||
%endif
|
||||
|
||||
%check
|
||||
@ -701,7 +707,7 @@ export SUSE_ASNEEDED=0
|
||||
export TIMEOUTFACTOR=16
|
||||
# The testsuite does its own malloc checking
|
||||
unset MALLOC_CHECK_
|
||||
make -C cc-base -k check || {
|
||||
make %{?_smp_mflags} -C cc-base -k check || {
|
||||
cd cc-base
|
||||
o=$-
|
||||
set +x
|
||||
|
166
long-double-alias.patch
Normal file
166
long-double-alias.patch
Normal file
@ -0,0 +1,166 @@
|
||||
From 49348beafe9ba150c9bd48595b3f372299bddbb0 Mon Sep 17 00:00:00 2001
|
||||
From: Joseph Myers <joseph@codesourcery.com>
|
||||
Date: Tue, 17 Mar 2020 22:57:42 +0000
|
||||
Subject: [PATCH] Fix build with GCC 10 when long double = double.
|
||||
|
||||
On platforms where long double has the same ABI as double, glibc
|
||||
defines long double functions as aliases for the corresponding double
|
||||
functions. The declarations of those functions in <math.h> are
|
||||
disabled to avoid problems with aliases having incompatible types, but
|
||||
GCC 10 now gives errors for incompatible types when the long double
|
||||
function is known to GCC as a built-in function, not just when there
|
||||
is an incompatible header declaration.
|
||||
|
||||
This patch fixes those errors by using appropriate
|
||||
-fno-builtin-<function> options to compile the double functions. The
|
||||
list of CFLAGS-* settings is an appropriately adapted version of that
|
||||
in sysdeps/ieee754/ldbl-opt/Makefile used there for building nldbl-*.c
|
||||
files; in particular, the options are used even if GCC does not
|
||||
currently have a built-in function of a given function, so that adding
|
||||
such a built-in function in future will not break the glibc build.
|
||||
Thus, various of the CFLAGS-* settings are only for future-proofing
|
||||
and may not currently be needed (and it's possible some could be
|
||||
irrelevant for other reasons).
|
||||
|
||||
Tested with build-many-glibcs.py for arm-linux-gnueabi (compilers and
|
||||
glibcs builds), where it fixes the build that previously failed.
|
||||
---
|
||||
math/Makefile | 122 ++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 122 insertions(+)
|
||||
|
||||
diff --git a/math/Makefile b/math/Makefile
|
||||
index 84a8b94c74..0a5a40430e 100644
|
||||
--- a/math/Makefile
|
||||
+++ b/math/Makefile
|
||||
@@ -650,6 +650,128 @@ ifneq ($(long-double-fcts),yes)
|
||||
# We won't compile the `long double' code at all. Tell the `double' code
|
||||
# to define aliases for the `FUNCl' names.
|
||||
math-CPPFLAGS += -DNO_LONG_DOUBLE
|
||||
+# GCC 10 diagnoses aliases with types conflicting with built-in
|
||||
+# functions.
|
||||
+CFLAGS-w_acos.c += -fno-builtin-acosl
|
||||
+CFLAGS-w_acosh.c += -fno-builtin-acoshl
|
||||
+CFLAGS-w_asin.c += -fno-builtin-asinl
|
||||
+CFLAGS-s_asinh.c += -fno-builtin-asinhl
|
||||
+CFLAGS-s_atan.c += -fno-builtin-atanl
|
||||
+CFLAGS-w_atan2.c += -fno-builtin-atan2l
|
||||
+CFLAGS-w_atanh.c += -fno-builtin-atanhl
|
||||
+CFLAGS-s_cabs.c += -fno-builtin-cabsl
|
||||
+CFLAGS-s_cacos.c += -fno-builtin-cacosl
|
||||
+CFLAGS-s_cacosh.c += -fno-builtin-cacoshl
|
||||
+CFLAGS-s_canonicalize.c += -fno-builtin-canonicalizel
|
||||
+CFLAGS-s_carg.c += -fno-builtin-cargl
|
||||
+CFLAGS-s_casin.c += -fno-builtin-casinl
|
||||
+CFLAGS-s_casinh.c += -fno-builtin-casinhl
|
||||
+CFLAGS-s_catan.c += -fno-builtin-catanl
|
||||
+CFLAGS-s_catanh.c += -fno-builtin-catanhl
|
||||
+CFLAGS-s_cbrt.c += -fno-builtin-cbrtl
|
||||
+CFLAGS-s_ccos.c += -fno-builtin-ccosl
|
||||
+CFLAGS-s_ccosh.c += -fno-builtin-ccoshl
|
||||
+CFLAGS-s_ceil.c += -fno-builtin-ceill
|
||||
+CFLAGS-s_cexp.c += -fno-builtin-cexpl
|
||||
+CFLAGS-s_cimag.c += -fno-builtin-cimagl
|
||||
+CFLAGS-s_clog.c += -fno-builtin-clogl
|
||||
+CFLAGS-s_clog10.c += -fno-builtin-clog10l
|
||||
+CFLAGS-s_conj.c += -fno-builtin-conjl
|
||||
+CFLAGS-s_copysign.c += -fno-builtin-copysignl
|
||||
+CFLAGS-s_cos.c += -fno-builtin-cosl
|
||||
+CFLAGS-w_cosh.c += -fno-builtin-coshl
|
||||
+CFLAGS-s_cpow.c += -fno-builtin-cpowl
|
||||
+CFLAGS-s_cproj.c += -fno-builtin-cprojl
|
||||
+CFLAGS-s_creal.c += -fno-builtin-creall
|
||||
+CFLAGS-s_csin.c += -fno-builtin-csinl
|
||||
+CFLAGS-s_csinh.c += -fno-builtin-csinhl
|
||||
+CFLAGS-s_csqrt.c += -fno-builtin-csqrtl
|
||||
+CFLAGS-s_ctan.c += -fno-builtin-ctanl
|
||||
+CFLAGS-s_ctanh.c += -fno-builtin-ctanhl
|
||||
+CFLAGS-s_dadd.c += -fno-builtin-daddl
|
||||
+CFLAGS-s_ddiv.c += -fno-builtin-ddivl
|
||||
+CFLAGS-s_dmul.c += -fno-builtin-dmull
|
||||
+CFLAGS-s_dsub.c += -fno-builtin-dsubl
|
||||
+CFLAGS-s_erf.c += -fno-builtin-erfl
|
||||
+CFLAGS-s_erfc.c += -fno-builtin-erfcl
|
||||
+CFLAGS-e_exp.c += -fno-builtin-expl
|
||||
+CFLAGS-w_exp10.c += -fno-builtin-exp10l
|
||||
+CFLAGS-e_exp2.c += -fno-builtin-exp2l
|
||||
+CFLAGS-s_expm1.c += -fno-builtin-expm1l
|
||||
+CFLAGS-s_fabs.c += -fno-builtin-fabsl
|
||||
+CFLAGS-s_fadd.c += -fno-builtin-faddl
|
||||
+CFLAGS-s_fdim.c += -fno-builtin-fdiml
|
||||
+CFLAGS-s_fdiv.c += -fno-builtin-fdivl
|
||||
+CFLAGS-s_finite.c += -fno-builtin-finitel
|
||||
+CFLAGS-s_floor.c += -fno-builtin-floorl
|
||||
+CFLAGS-s_fma.c += -fno-builtin-fmal
|
||||
+CFLAGS-s_fmax.c += -fno-builtin-fmaxl
|
||||
+CFLAGS-s_fmaxmag.c += -fno-builtin-fmaxmagl
|
||||
+CFLAGS-s_fmin.c += -fno-builtin-fminl
|
||||
+CFLAGS-s_fminmag.c += -fno-builtin-fminmagl
|
||||
+CFLAGS-w_fmod.c += -fno-builtin-fmodl
|
||||
+CFLAGS-s_fmul.c += -fno-builtin-fmull
|
||||
+CFLAGS-s_frexp.c += -fno-builtin-frexpl
|
||||
+CFLAGS-s_fromfp.c += -fno-builtin-fromfpl
|
||||
+CFLAGS-s_fromfpx.c += -fno-builtin-fromfpxl
|
||||
+CFLAGS-s_fsub.c += -fno-builtin-fsubl
|
||||
+CFLAGS-s_gamma.c += -fno-builtin-gammal
|
||||
+CFLAGS-s_getpayload.c += -fno-builtin-getpayloadl
|
||||
+CFLAGS-w_hypot.c += -fno-builtin-hypotl
|
||||
+CFLAGS-w_ilogb.c += -fno-builtin-ilogbl
|
||||
+CFLAGS-s_isinf.c += -fno-builtin-isinfl
|
||||
+CFLAGS-s_isnan.c += -fno-builtin-isnanl
|
||||
+CFLAGS-w_j0.c += -fno-builtin-j0l
|
||||
+CFLAGS-w_j1.c += -fno-builtin-j1l
|
||||
+CFLAGS-w_jn.c += -fno-builtin-jnl
|
||||
+CFLAGS-s_ldexp.c += -fno-builtin-ldexpl
|
||||
+CFLAGS-w_lgamma.c += -fno-builtin-lgammal
|
||||
+CFLAGS-w_lgamma_r.c += -fno-builtin-lgammal_r
|
||||
+CFLAGS-w_llogb.c += -fno-builtin-llogbl
|
||||
+CFLAGS-s_llrint.c += -fno-builtin-llrintl
|
||||
+CFLAGS-s_llround.c += -fno-builtin-llroundl
|
||||
+CFLAGS-e_log.c += -fno-builtin-logl
|
||||
+CFLAGS-w_log10.c += -fno-builtin-log10l
|
||||
+CFLAGS-w_log1p.c += -fno-builtin-log1pl
|
||||
+CFLAGS-e_log2.c += -fno-builtin-log2l
|
||||
+CFLAGS-s_logb.c += -fno-builtin-logbl
|
||||
+CFLAGS-s_lrint.c += -fno-builtin-lrintl
|
||||
+CFLAGS-s_lround.c += -fno-builtin-lroundl
|
||||
+CFLAGS-s_modf.c += -fno-builtin-modfl
|
||||
+CFLAGS-s_nan.c += -fno-builtin-nanl
|
||||
+CFLAGS-s_nearbyint.c += -fno-builtin-nearbyintl
|
||||
+CFLAGS-s_nextafter.c += -fno-builtin-nextafterl
|
||||
+CFLAGS-s_nextdown.c += -fno-builtin-nextdownl
|
||||
+CFLAGS-s_nexttoward.c += -fno-builtin-nexttoward -fno-builtin-nexttowardl
|
||||
+CFLAGS-s_nexttowardf.c += -fno-builtin-nexttowardf
|
||||
+CFLAGS-s_nextup.c += -fno-builtin-nextupl
|
||||
+CFLAGS-e_pow.c += -fno-builtin-powl
|
||||
+CFLAGS-w_remainder.c += -fno-builtin-remainderl -fno-builtin-dreml
|
||||
+CFLAGS-s_remquo.c += -fno-builtin-remquol
|
||||
+CFLAGS-s_rint.c += -fno-builtin-rintl
|
||||
+CFLAGS-s_round.c += -fno-builtin-roundl
|
||||
+CFLAGS-s_roundeven.c += -fno-builtin-roundevenl
|
||||
+CFLAGS-w_scalb.c += -fno-builtin-scalbl
|
||||
+CFLAGS-w_scalbln.c += -fno-builtin-scalblnl
|
||||
+CFLAGS-s_scalbn.c += -fno-builtin-scalbnl
|
||||
+CFLAGS-s_setpayload.c += -fno-builtin-setpayloadl
|
||||
+CFLAGS-s_setpayloadsig.c += -fno-builtin-setpayloadsigl
|
||||
+CFLAGS-s_significand.c += -fno-builtin-significandl
|
||||
+CFLAGS-s_sin.c += -fno-builtin-sinl
|
||||
+CFLAGS-s_sincos.c += -fno-builtin-sincosl
|
||||
+CFLAGS-w_sinh.c += -fno-builtin-sinhl
|
||||
+CFLAGS-w_sqrt.c += -fno-builtin-sqrtl
|
||||
+CFLAGS-s_tan.c += -fno-builtin-tanl
|
||||
+CFLAGS-s_tanh.c += -fno-builtin-tanhl
|
||||
+CFLAGS-w_tgamma.c += -fno-builtin-tgammal
|
||||
+CFLAGS-s_totalorder.c += -fno-builtin-totalorderl
|
||||
+CFLAGS-s_totalordermag.c += -fno-builtin-totalordermagl
|
||||
+CFLAGS-s_trunc.c += -fno-builtin-truncl
|
||||
+CFLAGS-s_ufromfp.c += -fno-builtin-ufromfpl
|
||||
+CFLAGS-s_ufromfpx.c += -fno-builtin-ufromfpxl
|
||||
+CFLAGS-s_y0.c += -fno-builtin-y0l
|
||||
+CFLAGS-s_y1.c += -fno-builtin-y1l
|
||||
+CFLAGS-s_yn.c += -fno-builtin-ynl
|
||||
endif
|
||||
|
||||
# These files quiet sNaNs in a way that is optimized away without
|
||||
--
|
||||
2.26.2
|
||||
|
42
nscd-gc-cycle.patch
Normal file
42
nscd-gc-cycle.patch
Normal file
@ -0,0 +1,42 @@
|
||||
From 4350db8d5e45dc4ec63e5fabc6bdc3a9425769dc Mon Sep 17 00:00:00 2001
|
||||
From: Andreas Schwab <schwab@suse.de>
|
||||
Date: Wed, 17 Jun 2020 16:05:13 +0200
|
||||
Subject: [PATCH] nscd: bump GC cycle during cache pruning (bug 26130)
|
||||
|
||||
While nscd prunes a cache it becomes inconsistent temporarily, which is
|
||||
visible to clients if that cache is shared. Bump the GC cycle counter so
|
||||
that the clients notice the modification window.
|
||||
---
|
||||
nscd/cache.c | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/nscd/cache.c b/nscd/cache.c
|
||||
index 94163d9ce3..2ceac94c23 100644
|
||||
--- a/nscd/cache.c
|
||||
+++ b/nscd/cache.c
|
||||
@@ -453,6 +453,11 @@ prune_cache (struct database_dyn *table, time_t now, int fd)
|
||||
pthread_rwlock_wrlock (&table->lock);
|
||||
}
|
||||
|
||||
+ /* Now we start modifying the data. Make sure all readers of the
|
||||
+ data are aware of this and temporarily don't use the data. */
|
||||
+ ++table->head->gc_cycle;
|
||||
+ assert ((table->head->gc_cycle & 1) == 1);
|
||||
+
|
||||
while (first <= last)
|
||||
{
|
||||
if (mark[first])
|
||||
@@ -493,6 +498,10 @@ prune_cache (struct database_dyn *table, time_t now, int fd)
|
||||
++first;
|
||||
}
|
||||
|
||||
+ /* Now we are done modifying the data. */
|
||||
+ ++table->head->gc_cycle;
|
||||
+ assert ((table->head->gc_cycle & 1) == 0);
|
||||
+
|
||||
/* It's all done. */
|
||||
pthread_rwlock_unlock (&table->lock);
|
||||
|
||||
--
|
||||
2.26.2
|
||||
|
Loading…
Reference in New Issue
Block a user