diff --git a/SOURCES/centos-arm32-NO_LONG_DOUBLE_MATH.patch b/SOURCES/centos-arm32-NO_LONG_DOUBLE_MATH.patch deleted file mode 100644 index 790c74a..0000000 --- a/SOURCES/centos-arm32-NO_LONG_DOUBLE_MATH.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff -Naurp a/stdio-common/printf_fp.c b/stdio-common/printf_fp.c ---- a/stdio-common/printf_fp.c 2021-02-03 16:46:26.887807279 +0000 -+++ b/stdio-common/printf_fp.c 2021-02-03 16:50:16.604469900 +0000 -@@ -151,6 +151,7 @@ static wchar_t *group_number (wchar_t *b - wchar_t thousands_sep, int ngroups) - internal_function; - -+#ifndef __NO_LONG_DOUBLE_MATH - static __always_inline int - isnanl_or_pseudo (long double in) - { -@@ -172,6 +173,7 @@ isnanl_or_pseudo (long double in) - return __isnanl (in); - #endif - } -+#endif - - - int diff --git a/SOURCES/glibc-armhfp-ELF_MACHINE_NO_REL-undefined.patch b/SOURCES/glibc-armhfp-ELF_MACHINE_NO_REL-undefined.patch deleted file mode 100644 index 78d7c4b..0000000 --- a/SOURCES/glibc-armhfp-ELF_MACHINE_NO_REL-undefined.patch +++ /dev/null @@ -1,36 +0,0 @@ -From patchwork Thu Jul 3 13:26:40 2014 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Subject: ARM: Define ELF_MACHINE_NO_REL -X-Patchwork-Submitter: Will Newton -X-Patchwork-Id: 366862 -Message-Id: <1404394000-13429-1-git-send-email-will.newton@linaro.org> -To: libc-alpha@sourceware.org -Date: Thu, 3 Jul 2014 14:26:40 +0100 -From: Will Newton -List-Id: - -Fix a -Wundef warning on ARM. - -ChangeLog: - -2014-07-03 Will Newton - - * sysdeps/arm/dl-machine.h (ELF_MACHINE_NO_REL): Define. ---- - sysdeps/arm/dl-machine.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/sysdeps/arm/dl-machine.h b/sysdeps/arm/dl-machine.h -index c5ffc93..d6b0c52 100644 ---- a/sysdeps/arm/dl-machine.h -+++ b/sysdeps/arm/dl-machine.h -@@ -296,6 +296,7 @@ elf_machine_plt_value (struct link_map *map, const Elf32_Rel *reloc, - /* ARM never uses Elf32_Rela relocations for the dynamic linker. - Prelinked libraries may use Elf32_Rela though. */ - #define ELF_MACHINE_NO_RELA defined RTLD_BOOTSTRAP -+#define ELF_MACHINE_NO_REL 0 - - /* Names of the architecture-specific auditing callback functions. */ - #define ARCH_LA_PLTENTER arm_gnu_pltenter diff --git a/SOURCES/glibc-rh1256317-armhfp-build-issue.patch b/SOURCES/glibc-rh1256317-armhfp-build-issue.patch deleted file mode 100644 index aa6e7fe..0000000 --- a/SOURCES/glibc-rh1256317-armhfp-build-issue.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/sysdeps/unix/arm/sysdep.S 2016-11-05 11:44:45.561945344 +0100 -+++ b/sysdeps/unix/arm/sysdep.S 2016-11-05 11:44:19.542069815 +0100 -@@ -37,7 +37,7 @@ - moveq r0, $EAGAIN /* Yes; translate it to EAGAIN. */ - #endif - --#ifndef IS_IN_rtld -+#if !IS_IN (rtld) - mov ip, lr - cfi_register (lr, ip) - mov r1, r0 diff --git a/SOURCES/glibc-rh1927536.patch b/SOURCES/glibc-rh1927536.patch new file mode 100644 index 0000000..1be9e89 --- /dev/null +++ b/SOURCES/glibc-rh1927536.patch @@ -0,0 +1,109 @@ +Move __isnanl_pseudo to its own file in sysdeps/x86/isnanl-pseudo.c so +that it only links into libc.so. This way it is only available to +functions in libc and should not affect libm. + +diff --git a/include/math.h b/include/math.h +index 4eddc81be0dccad9..c42c8101dd8ebc88 100644 +--- a/include/math.h ++++ b/include/math.h +@@ -7,8 +7,7 @@ + extern int __matherr (struct exception *__exc); + + # if IS_IN (libc) +-extern int __isnanl_pseudo (long double); +-hidden_proto (__isnanl_pseudo) ++extern int __isnanl_pseudo (long double) attribute_hidden; + #endif + + # if IS_IN (libc) || IS_IN (libm) +diff --git a/sysdeps/i386/fpu/s_isnanl.c b/sysdeps/i386/fpu/s_isnanl.c +index dc83d7a85fb3318b..816396d8fbc79dde 100644 +--- a/sysdeps/i386/fpu/s_isnanl.c ++++ b/sysdeps/i386/fpu/s_isnanl.c +@@ -41,23 +41,3 @@ int __isnanl(long double x) + } + hidden_def (__isnanl) + weak_alias (__isnanl, isnanl) +- +-#if IS_IN (libc) +-/* Exact backport from glibc-2.33, used only in printf_fp.c. */ +-int __isnanl_pseudo (long double x) +-{ +- int32_t se,hx,lx,pn; +- GET_LDOUBLE_WORDS(se,hx,lx,x); +- se = (se & 0x7fff) << 1; +- /* Detect pseudo-normal numbers, i.e. exponent is non-zero and the top +- bit of the significand is not set. */ +- pn = (uint32_t)((~hx & 0x80000000) & (se|(-se)))>>31; +- /* Clear the significand bit when computing mantissa. */ +- lx |= hx & 0x7fffffff; +- se |= (uint32_t)(lx|(-lx))>>31; +- se = 0xfffe - se; +- +- return (int)(((uint32_t)(se)) >> 16) | pn; +-} +-hidden_def (__isnanl_pseudo) +-#endif +diff --git a/sysdeps/x86/Makefile b/sysdeps/x86/Makefile +index f1da941dbbadadb3..d2f7b05db6ff6f72 100644 +--- a/sysdeps/x86/Makefile ++++ b/sysdeps/x86/Makefile +@@ -22,3 +22,7 @@ endif + ifeq ($(subdir),math) + tests += tst-ldbl-nonnormal-printf + endif # $(subdir) == math ++ ++ifeq ($(subdir),stdio-common) ++sysdep_routines += isnanl-pseudo ++endif +diff --git a/sysdeps/x86/isnanl-pseudo.c b/sysdeps/x86/isnanl-pseudo.c +new file mode 100644 +index 0000000000000000..95aba4672ba51a16 +--- /dev/null ++++ b/sysdeps/x86/isnanl-pseudo.c +@@ -0,0 +1,45 @@ ++/* s_isnanl.c -- long double version for i387 of s_isnan.c. ++ * Conversion to long double by Ulrich Drepper, ++ * Cygnus Support, drepper@cygnus.com. ++ */ ++ ++/* ++ * ==================================================== ++ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. ++ * ++ * Developed at SunPro, a Sun Microsystems, Inc. business. ++ * Permission to use, copy, modify, and distribute this ++ * software is freely granted, provided that this notice ++ * is preserved. ++ * ==================================================== ++ */ ++ ++#if defined(LIBM_SCCS) && !defined(lint) ++static char rcsid[] = "$NetBSD: $"; ++#endif ++ ++/* ++ * isnanl(x) returns 1 is x is nan, else 0; ++ * no branching! ++ */ ++ ++#include ++#include ++ ++int ++attribute_hidden ++__isnanl_pseudo(long double x) ++{ ++ int32_t se,hx,lx,pn; ++ GET_LDOUBLE_WORDS(se,hx,lx,x); ++ se = (se & 0x7fff) << 1; ++ /* Detect pseudo-normal numbers, i.e. exponent is non-zero and the top ++ bit of the significand is not set. */ ++ pn = (uint32_t)((~hx & 0x80000000) & (se|(-se)))>>31; ++ /* Clear the significand bit when computing mantissa. */ ++ lx |= hx & 0x7fffffff; ++ se |= (uint32_t)(lx|(-lx))>>31; ++ se = 0xfffe - se; ++ ++ return (int)(((uint32_t)(se)) >> 16) | pn; ++} diff --git a/SPECS/glibc.spec b/SPECS/glibc.spec index 4d0c67c..d455851 100644 --- a/SPECS/glibc.spec +++ b/SPECS/glibc.spec @@ -1,6 +1,6 @@ %define glibcsrcdir glibc-2.17-c758a686 %define glibcversion 2.17 -%define glibcrelease 323%{?dist} +%define glibcrelease 324%{?dist} ############################################################################## # We support the following options: # --with/--without, @@ -249,11 +249,6 @@ Patch0068: glibc-rh1349982.patch # These changes were brought forward from RHEL 6 for compatibility Patch0069: glibc-rh1448107.patch -# Armhfp build issue -Patch9997: centos-arm32-NO_LONG_DOUBLE_MATH.patch -Patch9998: glibc-armhfp-ELF_MACHINE_NO_REL-undefined.patch -Patch9999: glibc-rh1256317-armhfp-build-issue.patch - Patch1000: glibc-rh905877.patch Patch1001: glibc-rh958652.patch Patch1002: glibc-rh977870.patch @@ -1645,6 +1640,7 @@ Patch2857: glibc-rh1812119-2.patch Patch2858: glibc-rh1883162.patch Patch2859: glibc-rh1925204-1.patch Patch2860: glibc-rh1925204-2.patch +Patch2861: glibc-rh1927536.patch ############################################################################## # End of glibc patches. @@ -3015,12 +3011,7 @@ package or when debugging this package. %patch2858 -p1 %patch2859 -p1 %patch2860 -p1 - -%ifarch %{arm} -%patch9998 -p1 -%patch9999 -p1 -%patch9997 -p1 -%endif +%patch2861 -p1 ############################################################################## # %%prep - Additional prep required... @@ -4208,6 +4199,9 @@ rm -f *.filelist* %endif %changelog +* Fri Mar 26 2021 Siddhesh Poyarekar - 2.17-324 +- Move __isnanl_pseudo into its own file and link only into libc (#1927536) + * Fri Feb 05 2021 Siddhesh Poyarekar - 2.17-323 - Fix isnanl check in printf. (#1925204)