diff options
5 files changed, 1 insertions, 349 deletions
diff --git a/meta/recipes-core/glibc/glibc-version.inc b/meta/recipes-core/glibc/glibc-version.inc index 4c72eedf41..c2d68979eb 100644 --- a/meta/recipes-core/glibc/glibc-version.inc +++ b/meta/recipes-core/glibc/glibc-version.inc | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | SRCBRANCH ?= "release/2.31/master" | 1 | SRCBRANCH ?= "release/2.31/master" |
| 2 | PV = "2.31+git${SRCPV}" | 2 | PV = "2.31+git${SRCPV}" |
| 3 | SRCREV_glibc ?= "71f2b249a28e17eac0e47c53af44d5c5b65101aa" | 3 | SRCREV_glibc ?= "109474122400ca7d60782b131dc867a5c1f2fe55" |
| 4 | SRCREV_localedef ?= "cd9f958c4c94a638fa7b2b4e21627364f1a1a655" | 4 | SRCREV_localedef ?= "cd9f958c4c94a638fa7b2b4e21627364f1a1a655" |
| 5 | 5 | ||
| 6 | GLIBC_GIT_URI ?= "git://sourceware.org/git/glibc.git" | 6 | GLIBC_GIT_URI ?= "git://sourceware.org/git/glibc.git" |
diff --git a/meta/recipes-core/glibc/glibc/0030-Improve-IFUNC-check-BZ-25506.patch b/meta/recipes-core/glibc/glibc/0030-Improve-IFUNC-check-BZ-25506.patch deleted file mode 100644 index 1cb398d2bc..0000000000 --- a/meta/recipes-core/glibc/glibc/0030-Improve-IFUNC-check-BZ-25506.patch +++ /dev/null | |||
| @@ -1,47 +0,0 @@ | |||
| 1 | From 87a698a21646b7ee620923ef5ffa9735471a8ddd Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Fangrui Song <maskray@google.com> | ||
| 3 | Date: Tue, 4 Feb 2020 21:55:44 -0800 | ||
| 4 | Subject: [PATCH] Improve IFUNC check [BZ #25506] | ||
| 5 | |||
| 6 | GNU ld's RISCV port does not support IFUNC. ld -no-pie produces no | ||
| 7 | relocation and the test passed incorrectly. Be more rigid by testing | ||
| 8 | IRELATIVE explicitly. | ||
| 9 | |||
| 10 | Upstream-Status: Backport [https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=87a698a21646b7ee620923ef5ffa9735471a8ddd] | ||
| 11 | Tested-by: Aurelien Jarno <aurelien@aurel32.net> | ||
| 12 | Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> | ||
| 13 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
| 14 | --- | ||
| 15 | configure | 2 +- | ||
| 16 | configure.ac | 2 +- | ||
| 17 | 2 files changed, 2 insertions(+), 2 deletions(-) | ||
| 18 | |||
| 19 | diff --git a/configure b/configure | ||
| 20 | index b959d2d988..3b98ec312f 100755 | ||
| 21 | --- a/configure | ||
| 22 | +++ b/configure | ||
| 23 | @@ -4035,7 +4035,7 @@ if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \ | ||
| 24 | -o conftest conftest.S 1>&5 2>&5; then | ||
| 25 | # Do a link to see if the backend supports IFUNC relocs. | ||
| 26 | $READELF -r conftest 1>&5 | ||
| 27 | - LC_ALL=C $READELF -r conftest | grep 'no relocations' >/dev/null || { | ||
| 28 | + LC_ALL=C $READELF -Wr conftest | grep -q 'IRELATIVE\|R_SPARC_JMP_IREL' && { | ||
| 29 | libc_cv_ld_gnu_indirect_function=yes | ||
| 30 | } | ||
| 31 | fi | ||
| 32 | diff --git a/configure.ac b/configure.ac | ||
| 33 | index 49b900c1ed..e20034f301 100644 | ||
| 34 | --- a/configure.ac | ||
| 35 | +++ b/configure.ac | ||
| 36 | @@ -649,7 +649,7 @@ if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \ | ||
| 37 | -o conftest conftest.S 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then | ||
| 38 | # Do a link to see if the backend supports IFUNC relocs. | ||
| 39 | $READELF -r conftest 1>&AS_MESSAGE_LOG_FD | ||
| 40 | - LC_ALL=C $READELF -r conftest | grep 'no relocations' >/dev/null || { | ||
| 41 | + LC_ALL=C $READELF -Wr conftest | grep -q 'IRELATIVE\|R_SPARC_JMP_IREL' && { | ||
| 42 | libc_cv_ld_gnu_indirect_function=yes | ||
| 43 | } | ||
| 44 | fi | ||
| 45 | -- | ||
| 46 | 2.25.1 | ||
| 47 | |||
diff --git a/meta/recipes-core/glibc/glibc/0031-Fix-build-with-GCC-10-when-long-double-double.patch b/meta/recipes-core/glibc/glibc/0031-Fix-build-with-GCC-10-when-long-double-double.patch deleted file mode 100644 index 72622961ad..0000000000 --- a/meta/recipes-core/glibc/glibc/0031-Fix-build-with-GCC-10-when-long-double-double.patch +++ /dev/null | |||
| @@ -1,170 +0,0 @@ | |||
| 1 | From 49348beafe9ba150c9bd48595b3f372299bddbb0 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Joseph Myers <joseph@codesourcery.com> | ||
| 3 | Date: Tue, 17 Mar 2020 22:57:42 +0000 | ||
| 4 | Subject: [PATCH] Fix build with GCC 10 when long double = double. | ||
| 5 | |||
| 6 | On platforms where long double has the same ABI as double, glibc | ||
| 7 | defines long double functions as aliases for the corresponding double | ||
| 8 | functions. The declarations of those functions in <math.h> are | ||
| 9 | disabled to avoid problems with aliases having incompatible types, but | ||
| 10 | GCC 10 now gives errors for incompatible types when the long double | ||
| 11 | function is known to GCC as a built-in function, not just when there | ||
| 12 | is an incompatible header declaration. | ||
| 13 | |||
| 14 | This patch fixes those errors by using appropriate | ||
| 15 | -fno-builtin-<function> options to compile the double functions. The | ||
| 16 | list of CFLAGS-* settings is an appropriately adapted version of that | ||
| 17 | in sysdeps/ieee754/ldbl-opt/Makefile used there for building nldbl-*.c | ||
| 18 | files; in particular, the options are used even if GCC does not | ||
| 19 | currently have a built-in function of a given function, so that adding | ||
| 20 | such a built-in function in future will not break the glibc build. | ||
| 21 | Thus, various of the CFLAGS-* settings are only for future-proofing | ||
| 22 | and may not currently be needed (and it's possible some could be | ||
| 23 | irrelevant for other reasons). | ||
| 24 | |||
| 25 | Tested with build-many-glibcs.py for arm-linux-gnueabi (compilers and | ||
| 26 | glibcs builds), where it fixes the build that previously failed. | ||
| 27 | |||
| 28 | Upstream-Status: Backport [https://sourceware.org/git/?p=glibc.git;a=commit;h=49348beafe9ba150c9bd48595b3f372299bddbb0] | ||
| 29 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
| 30 | |||
| 31 | --- | ||
| 32 | math/Makefile | 122 ++++++++++++++++++++++++++++++++++++++++++++++++++ | ||
| 33 | 1 file changed, 122 insertions(+) | ||
| 34 | |||
| 35 | diff --git a/math/Makefile b/math/Makefile | ||
| 36 | index 84a8b94c74..0a5a40430e 100644 | ||
| 37 | --- a/math/Makefile | ||
| 38 | +++ b/math/Makefile | ||
| 39 | @@ -650,6 +650,128 @@ ifneq ($(long-double-fcts),yes) | ||
| 40 | # We won't compile the `long double' code at all. Tell the `double' code | ||
| 41 | # to define aliases for the `FUNCl' names. | ||
| 42 | math-CPPFLAGS += -DNO_LONG_DOUBLE | ||
| 43 | +# GCC 10 diagnoses aliases with types conflicting with built-in | ||
| 44 | +# functions. | ||
| 45 | +CFLAGS-w_acos.c += -fno-builtin-acosl | ||
| 46 | +CFLAGS-w_acosh.c += -fno-builtin-acoshl | ||
| 47 | +CFLAGS-w_asin.c += -fno-builtin-asinl | ||
| 48 | +CFLAGS-s_asinh.c += -fno-builtin-asinhl | ||
| 49 | +CFLAGS-s_atan.c += -fno-builtin-atanl | ||
| 50 | +CFLAGS-w_atan2.c += -fno-builtin-atan2l | ||
| 51 | +CFLAGS-w_atanh.c += -fno-builtin-atanhl | ||
| 52 | +CFLAGS-s_cabs.c += -fno-builtin-cabsl | ||
| 53 | +CFLAGS-s_cacos.c += -fno-builtin-cacosl | ||
| 54 | +CFLAGS-s_cacosh.c += -fno-builtin-cacoshl | ||
| 55 | +CFLAGS-s_canonicalize.c += -fno-builtin-canonicalizel | ||
| 56 | +CFLAGS-s_carg.c += -fno-builtin-cargl | ||
| 57 | +CFLAGS-s_casin.c += -fno-builtin-casinl | ||
| 58 | +CFLAGS-s_casinh.c += -fno-builtin-casinhl | ||
| 59 | +CFLAGS-s_catan.c += -fno-builtin-catanl | ||
| 60 | +CFLAGS-s_catanh.c += -fno-builtin-catanhl | ||
| 61 | +CFLAGS-s_cbrt.c += -fno-builtin-cbrtl | ||
| 62 | +CFLAGS-s_ccos.c += -fno-builtin-ccosl | ||
| 63 | +CFLAGS-s_ccosh.c += -fno-builtin-ccoshl | ||
| 64 | +CFLAGS-s_ceil.c += -fno-builtin-ceill | ||
| 65 | +CFLAGS-s_cexp.c += -fno-builtin-cexpl | ||
| 66 | +CFLAGS-s_cimag.c += -fno-builtin-cimagl | ||
| 67 | +CFLAGS-s_clog.c += -fno-builtin-clogl | ||
| 68 | +CFLAGS-s_clog10.c += -fno-builtin-clog10l | ||
| 69 | +CFLAGS-s_conj.c += -fno-builtin-conjl | ||
| 70 | +CFLAGS-s_copysign.c += -fno-builtin-copysignl | ||
| 71 | +CFLAGS-s_cos.c += -fno-builtin-cosl | ||
| 72 | +CFLAGS-w_cosh.c += -fno-builtin-coshl | ||
| 73 | +CFLAGS-s_cpow.c += -fno-builtin-cpowl | ||
| 74 | +CFLAGS-s_cproj.c += -fno-builtin-cprojl | ||
| 75 | +CFLAGS-s_creal.c += -fno-builtin-creall | ||
| 76 | +CFLAGS-s_csin.c += -fno-builtin-csinl | ||
| 77 | +CFLAGS-s_csinh.c += -fno-builtin-csinhl | ||
| 78 | +CFLAGS-s_csqrt.c += -fno-builtin-csqrtl | ||
| 79 | +CFLAGS-s_ctan.c += -fno-builtin-ctanl | ||
| 80 | +CFLAGS-s_ctanh.c += -fno-builtin-ctanhl | ||
| 81 | +CFLAGS-s_dadd.c += -fno-builtin-daddl | ||
| 82 | +CFLAGS-s_ddiv.c += -fno-builtin-ddivl | ||
| 83 | +CFLAGS-s_dmul.c += -fno-builtin-dmull | ||
| 84 | +CFLAGS-s_dsub.c += -fno-builtin-dsubl | ||
| 85 | +CFLAGS-s_erf.c += -fno-builtin-erfl | ||
| 86 | +CFLAGS-s_erfc.c += -fno-builtin-erfcl | ||
| 87 | +CFLAGS-e_exp.c += -fno-builtin-expl | ||
| 88 | +CFLAGS-w_exp10.c += -fno-builtin-exp10l | ||
| 89 | +CFLAGS-e_exp2.c += -fno-builtin-exp2l | ||
| 90 | +CFLAGS-s_expm1.c += -fno-builtin-expm1l | ||
| 91 | +CFLAGS-s_fabs.c += -fno-builtin-fabsl | ||
| 92 | +CFLAGS-s_fadd.c += -fno-builtin-faddl | ||
| 93 | +CFLAGS-s_fdim.c += -fno-builtin-fdiml | ||
| 94 | +CFLAGS-s_fdiv.c += -fno-builtin-fdivl | ||
| 95 | +CFLAGS-s_finite.c += -fno-builtin-finitel | ||
| 96 | +CFLAGS-s_floor.c += -fno-builtin-floorl | ||
| 97 | +CFLAGS-s_fma.c += -fno-builtin-fmal | ||
| 98 | +CFLAGS-s_fmax.c += -fno-builtin-fmaxl | ||
| 99 | +CFLAGS-s_fmaxmag.c += -fno-builtin-fmaxmagl | ||
| 100 | +CFLAGS-s_fmin.c += -fno-builtin-fminl | ||
| 101 | +CFLAGS-s_fminmag.c += -fno-builtin-fminmagl | ||
| 102 | +CFLAGS-w_fmod.c += -fno-builtin-fmodl | ||
| 103 | +CFLAGS-s_fmul.c += -fno-builtin-fmull | ||
| 104 | +CFLAGS-s_frexp.c += -fno-builtin-frexpl | ||
| 105 | +CFLAGS-s_fromfp.c += -fno-builtin-fromfpl | ||
| 106 | +CFLAGS-s_fromfpx.c += -fno-builtin-fromfpxl | ||
| 107 | +CFLAGS-s_fsub.c += -fno-builtin-fsubl | ||
| 108 | +CFLAGS-s_gamma.c += -fno-builtin-gammal | ||
| 109 | +CFLAGS-s_getpayload.c += -fno-builtin-getpayloadl | ||
| 110 | +CFLAGS-w_hypot.c += -fno-builtin-hypotl | ||
| 111 | +CFLAGS-w_ilogb.c += -fno-builtin-ilogbl | ||
| 112 | +CFLAGS-s_isinf.c += -fno-builtin-isinfl | ||
| 113 | +CFLAGS-s_isnan.c += -fno-builtin-isnanl | ||
| 114 | +CFLAGS-w_j0.c += -fno-builtin-j0l | ||
| 115 | +CFLAGS-w_j1.c += -fno-builtin-j1l | ||
| 116 | +CFLAGS-w_jn.c += -fno-builtin-jnl | ||
| 117 | +CFLAGS-s_ldexp.c += -fno-builtin-ldexpl | ||
| 118 | +CFLAGS-w_lgamma.c += -fno-builtin-lgammal | ||
| 119 | +CFLAGS-w_lgamma_r.c += -fno-builtin-lgammal_r | ||
| 120 | +CFLAGS-w_llogb.c += -fno-builtin-llogbl | ||
| 121 | +CFLAGS-s_llrint.c += -fno-builtin-llrintl | ||
| 122 | +CFLAGS-s_llround.c += -fno-builtin-llroundl | ||
| 123 | +CFLAGS-e_log.c += -fno-builtin-logl | ||
| 124 | +CFLAGS-w_log10.c += -fno-builtin-log10l | ||
| 125 | +CFLAGS-w_log1p.c += -fno-builtin-log1pl | ||
| 126 | +CFLAGS-e_log2.c += -fno-builtin-log2l | ||
| 127 | +CFLAGS-s_logb.c += -fno-builtin-logbl | ||
| 128 | +CFLAGS-s_lrint.c += -fno-builtin-lrintl | ||
| 129 | +CFLAGS-s_lround.c += -fno-builtin-lroundl | ||
| 130 | +CFLAGS-s_modf.c += -fno-builtin-modfl | ||
| 131 | +CFLAGS-s_nan.c += -fno-builtin-nanl | ||
| 132 | +CFLAGS-s_nearbyint.c += -fno-builtin-nearbyintl | ||
| 133 | +CFLAGS-s_nextafter.c += -fno-builtin-nextafterl | ||
| 134 | +CFLAGS-s_nextdown.c += -fno-builtin-nextdownl | ||
| 135 | +CFLAGS-s_nexttoward.c += -fno-builtin-nexttoward -fno-builtin-nexttowardl | ||
| 136 | +CFLAGS-s_nexttowardf.c += -fno-builtin-nexttowardf | ||
| 137 | +CFLAGS-s_nextup.c += -fno-builtin-nextupl | ||
| 138 | +CFLAGS-e_pow.c += -fno-builtin-powl | ||
| 139 | +CFLAGS-w_remainder.c += -fno-builtin-remainderl -fno-builtin-dreml | ||
| 140 | +CFLAGS-s_remquo.c += -fno-builtin-remquol | ||
| 141 | +CFLAGS-s_rint.c += -fno-builtin-rintl | ||
| 142 | +CFLAGS-s_round.c += -fno-builtin-roundl | ||
| 143 | +CFLAGS-s_roundeven.c += -fno-builtin-roundevenl | ||
| 144 | +CFLAGS-w_scalb.c += -fno-builtin-scalbl | ||
| 145 | +CFLAGS-w_scalbln.c += -fno-builtin-scalblnl | ||
| 146 | +CFLAGS-s_scalbn.c += -fno-builtin-scalbnl | ||
| 147 | +CFLAGS-s_setpayload.c += -fno-builtin-setpayloadl | ||
| 148 | +CFLAGS-s_setpayloadsig.c += -fno-builtin-setpayloadsigl | ||
| 149 | +CFLAGS-s_significand.c += -fno-builtin-significandl | ||
| 150 | +CFLAGS-s_sin.c += -fno-builtin-sinl | ||
| 151 | +CFLAGS-s_sincos.c += -fno-builtin-sincosl | ||
| 152 | +CFLAGS-w_sinh.c += -fno-builtin-sinhl | ||
| 153 | +CFLAGS-w_sqrt.c += -fno-builtin-sqrtl | ||
| 154 | +CFLAGS-s_tan.c += -fno-builtin-tanl | ||
| 155 | +CFLAGS-s_tanh.c += -fno-builtin-tanhl | ||
| 156 | +CFLAGS-w_tgamma.c += -fno-builtin-tgammal | ||
| 157 | +CFLAGS-s_totalorder.c += -fno-builtin-totalorderl | ||
| 158 | +CFLAGS-s_totalordermag.c += -fno-builtin-totalordermagl | ||
| 159 | +CFLAGS-s_trunc.c += -fno-builtin-truncl | ||
| 160 | +CFLAGS-s_ufromfp.c += -fno-builtin-ufromfpl | ||
| 161 | +CFLAGS-s_ufromfpx.c += -fno-builtin-ufromfpxl | ||
| 162 | +CFLAGS-s_y0.c += -fno-builtin-y0l | ||
| 163 | +CFLAGS-s_y1.c += -fno-builtin-y1l | ||
| 164 | +CFLAGS-s_yn.c += -fno-builtin-ynl | ||
| 165 | endif | ||
| 166 | |||
| 167 | # These files quiet sNaNs in a way that is optimized away without | ||
| 168 | -- | ||
| 169 | 2.26.0 | ||
| 170 | |||
diff --git a/meta/recipes-core/glibc/glibc/CVE-2020-10029.patch b/meta/recipes-core/glibc/glibc/CVE-2020-10029.patch deleted file mode 100644 index 22a15f5fdc..0000000000 --- a/meta/recipes-core/glibc/glibc/CVE-2020-10029.patch +++ /dev/null | |||
| @@ -1,128 +0,0 @@ | |||
| 1 | From ce265ec5bc25ec35fba53807abac1b0c8469895e Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Joseph Myers <joseph@codesourcery.com> | ||
| 3 | Date: Wed, 12 Feb 2020 23:31:56 +0000 | ||
| 4 | Subject: [PATCH] Avoid ldbl-96 stack corruption from range reduction of | ||
| 5 | |||
| 6 | pseudo-zero (bug 25487). | ||
| 7 | |||
| 8 | Bug 25487 reports stack corruption in ldbl-96 sinl on a pseudo-zero | ||
| 9 | argument (an representation where all the significand bits, including | ||
| 10 | the explicit high bit, are zero, but the exponent is not zero, which | ||
| 11 | is not a valid representation for the long double type). | ||
| 12 | |||
| 13 | Although this is not a valid long double representation, existing | ||
| 14 | practice in this area (see bug 4586, originally marked invalid but | ||
| 15 | subsequently fixed) is that we still seek to avoid invalid memory | ||
| 16 | accesses as a result, in case of programs that treat arbitrary binary | ||
| 17 | data as long double representations, although the invalid | ||
| 18 | representations of the ldbl-96 format do not need to be consistently | ||
| 19 | handled the same as any particular valid representation. | ||
| 20 | |||
| 21 | This patch makes the range reduction detect pseudo-zero and unnormal | ||
| 22 | representations that would otherwise go to __kernel_rem_pio2, and | ||
| 23 | returns a NaN for them instead of continuing with the range reduction | ||
| 24 | process. (Pseudo-zero and unnormal representations whose unbiased | ||
| 25 | exponent is less than -1 have already been safely returned from the | ||
| 26 | function before this point without going through the rest of range | ||
| 27 | reduction.) Pseudo-zero representations would previously result in | ||
| 28 | the value passed to __kernel_rem_pio2 being all-zero, which is | ||
| 29 | definitely unsafe; unnormal representations would previously result in | ||
| 30 | a value passed whose high bit is zero, which might well be unsafe | ||
| 31 | since that is not a form of input expected by __kernel_rem_pio2. | ||
| 32 | |||
| 33 | Tested for x86_64. | ||
| 34 | |||
| 35 | CVE: CVE-2020-10029 | ||
| 36 | Upstream-Status: Backport [https://sourceware.org/git/gitweb.cgi?p=glibc.git; | ||
| 37 | a=patch;h=9333498794cde1d5cca518badf79533a24114b6f] | ||
| 38 | Signed-off-by: Zhixiong Chi <zhixiong.chi@windriver.com> | ||
| 39 | |||
| 40 | --- | ||
| 41 | sysdeps/ieee754/ldbl-96/Makefile | 3 ++- | ||
| 42 | sysdeps/ieee754/ldbl-96/e_rem_pio2l.c | 12 +++++++++ | ||
| 43 | sysdeps/ieee754/ldbl-96/test-sinl-pseudo.c | 41 ++++++++++++++++++++++++++++++ | ||
| 44 | 3 files changed, 55 insertions(+), 1 deletion(-) | ||
| 45 | create mode 100644 sysdeps/ieee754/ldbl-96/test-sinl-pseudo.c | ||
| 46 | |||
| 47 | diff --git a/sysdeps/ieee754/ldbl-96/Makefile b/sysdeps/ieee754/ldbl-96/Makefile | ||
| 48 | index b103254..052c1c7 100644 | ||
| 49 | --- a/sysdeps/ieee754/ldbl-96/Makefile | ||
| 50 | +++ b/sysdeps/ieee754/ldbl-96/Makefile | ||
| 51 | @@ -17,5 +17,6 @@ | ||
| 52 | # <https://www.gnu.org/licenses/>. | ||
| 53 | |||
| 54 | ifeq ($(subdir),math) | ||
| 55 | -tests += test-canonical-ldbl-96 test-totalorderl-ldbl-96 | ||
| 56 | +tests += test-canonical-ldbl-96 test-totalorderl-ldbl-96 test-sinl-pseudo | ||
| 57 | +CFLAGS-test-sinl-pseudo.c += -fstack-protector-all | ||
| 58 | endif | ||
| 59 | diff --git a/sysdeps/ieee754/ldbl-96/e_rem_pio2l.c b/sysdeps/ieee754/ldbl-96/e_rem_pio2l.c | ||
| 60 | index 805de22..1aeccb4 100644 | ||
| 61 | --- a/sysdeps/ieee754/ldbl-96/e_rem_pio2l.c | ||
| 62 | +++ b/sysdeps/ieee754/ldbl-96/e_rem_pio2l.c | ||
| 63 | @@ -210,6 +210,18 @@ __ieee754_rem_pio2l (long double x, long double *y) | ||
| 64 | return 0; | ||
| 65 | } | ||
| 66 | |||
| 67 | + if ((i0 & 0x80000000) == 0) | ||
| 68 | + { | ||
| 69 | + /* Pseudo-zero and unnormal representations are not valid | ||
| 70 | + representations of long double. We need to avoid stack | ||
| 71 | + corruption in __kernel_rem_pio2, which expects input in a | ||
| 72 | + particular normal form, but those representations do not need | ||
| 73 | + to be consistently handled like any particular floating-point | ||
| 74 | + value. */ | ||
| 75 | + y[1] = y[0] = __builtin_nanl (""); | ||
| 76 | + return 0; | ||
| 77 | + } | ||
| 78 | + | ||
| 79 | /* Split the 64 bits of the mantissa into three 24-bit integers | ||
| 80 | stored in a double array. */ | ||
| 81 | exp = j0 - 23; | ||
| 82 | diff --git a/sysdeps/ieee754/ldbl-96/test-sinl-pseudo.c b/sysdeps/ieee754/ldbl-96/test-sinl-pseudo.c | ||
| 83 | new file mode 100644 | ||
| 84 | index 0000000..f59b977 | ||
| 85 | --- /dev/null | ||
| 86 | +++ b/sysdeps/ieee754/ldbl-96/test-sinl-pseudo.c | ||
| 87 | @@ -0,0 +1,41 @@ | ||
| 88 | +/* Test sinl for pseudo-zeros and unnormals for ldbl-96 (bug 25487). | ||
| 89 | + Copyright (C) 2020 Free Software Foundation, Inc. | ||
| 90 | + This file is part of the GNU C Library. | ||
| 91 | + | ||
| 92 | + The GNU C Library is free software; you can redistribute it and/or | ||
| 93 | + modify it under the terms of the GNU Lesser General Public | ||
| 94 | + License as published by the Free Software Foundation; either | ||
| 95 | + version 2.1 of the License, or (at your option) any later version. | ||
| 96 | + | ||
| 97 | + The GNU C Library is distributed in the hope that it will be useful, | ||
| 98 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 99 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
| 100 | + Lesser General Public License for more details. | ||
| 101 | + | ||
| 102 | + You should have received a copy of the GNU Lesser General Public | ||
| 103 | + License along with the GNU C Library; if not, see | ||
| 104 | + <https://www.gnu.org/licenses/>. */ | ||
| 105 | + | ||
| 106 | +#include <math.h> | ||
| 107 | +#include <math_ldbl.h> | ||
| 108 | +#include <stdint.h> | ||
| 109 | + | ||
| 110 | +static int | ||
| 111 | +do_test (void) | ||
| 112 | +{ | ||
| 113 | + for (int i = 0; i < 64; i++) | ||
| 114 | + { | ||
| 115 | + uint64_t sig = i == 63 ? 0 : 1ULL << i; | ||
| 116 | + long double ld; | ||
| 117 | + SET_LDOUBLE_WORDS (ld, 0x4141, | ||
| 118 | + sig >> 32, sig & 0xffffffffULL); | ||
| 119 | + /* The requirement is that no stack overflow occurs when the | ||
| 120 | + pseudo-zero or unnormal goes through range reduction. */ | ||
| 121 | + volatile long double ldr; | ||
| 122 | + ldr = sinl (ld); | ||
| 123 | + (void) ldr; | ||
| 124 | + } | ||
| 125 | + return 0; | ||
| 126 | +} | ||
| 127 | + | ||
| 128 | +#include <support/test-driver.c> | ||
diff --git a/meta/recipes-core/glibc/glibc_2.31.bb b/meta/recipes-core/glibc/glibc_2.31.bb index 6605fd3967..2032311b27 100644 --- a/meta/recipes-core/glibc/glibc_2.31.bb +++ b/meta/recipes-core/glibc/glibc_2.31.bb | |||
| @@ -40,9 +40,6 @@ SRC_URI = "${GLIBC_GIT_URI};branch=${SRCBRANCH};name=glibc \ | |||
| 40 | file://0027-intl-Emit-no-lines-in-bison-generated-files.patch \ | 40 | file://0027-intl-Emit-no-lines-in-bison-generated-files.patch \ |
| 41 | file://0028-inject-file-assembly-directives.patch \ | 41 | file://0028-inject-file-assembly-directives.patch \ |
| 42 | file://0029-locale-prevent-maybe-uninitialized-errors-with-Os-BZ.patch \ | 42 | file://0029-locale-prevent-maybe-uninitialized-errors-with-Os-BZ.patch \ |
| 43 | file://CVE-2020-10029.patch \ | ||
| 44 | file://0030-Improve-IFUNC-check-BZ-25506.patch \ | ||
| 45 | file://0031-Fix-build-with-GCC-10-when-long-double-double.patch \ | ||
| 46 | " | 43 | " |
| 47 | S = "${WORKDIR}/git" | 44 | S = "${WORKDIR}/git" |
| 48 | B = "${WORKDIR}/build-${TARGET_SYS}" | 45 | B = "${WORKDIR}/build-${TARGET_SYS}" |
