d6a4807f94
Drop upstream patch: 0001-sh-Fix-building-with-gcc5-6.patch https://sourceware.org/git/?p=glibc.git;a=commit;h=d40dbe722f004f999b589de776f7e57e564dda01 0002-CVE-2017-1000366-Ignore-LD_LIBRARY_PATH-for-AT_SECUR.patch https://sourceware.org/git/?p=glibc.git;a=commit;h=f6110a8fee2ca36f8e2d2abecf3cba9fa7b8ea7d 0003-ld.so-Reject-overly-long-LD_PRELOAD-path-elements.patch https://sourceware.org/git/?p=glibc.git;a=commit;h=6d0ba622891bed9d8394eef1935add53003b12e8 0004-ld.so-Reject-overly-long-LD_AUDIT-path-elements.patch https://sourceware.org/git/?p=glibc.git;a=commit;h=81b82fb966ffbd94353f793ad17116c6088dedd9 0005-fix-binutils-2-29-build.patch https://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff_plain;h=388b4f1a02f3a801965028bbfcd48d905638b797 0006-i686-Add-missing-IS_IN-libc-guards-to-vectorized-strcspn.patch https://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff_plain;h=69052a3a95da37169a08f9e59b2cc1808312753c 0006-sh4-trap.patch https://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff_plain;h=db3d848e154b00071f4a5e729d5884efad410109 But 2.26 version introduced quite a few regressions on x86, x86_64 and powerpc64le when float128 support was added. All these issues are now fixed in the glibc 2.26 stable branch. Backport patches from glibc 2.26 stable branch related to bug 21930. Take all patches listed in this bug report in order to have all fix for this issue [1] [2]. Fixes gnuradio build: [...]/sysroot/usr/include/boost/functional/hash/detail/hash_float.hpp: In function ‘std::size_t boost::hash_detail::float_hash_value(T)’: [...]/sysroot/usr/include/boost/functional/hash/detail/hash_float.hpp:210:21: error: expected primary-expression before ‘float’ switch (fpclassify(v)) ^ [...]/sysroot/usr/include/boost/functional/hash/detail/hash_float.hpp:210:21: error: expected primary-expression before ‘long’ switch (fpclassify(v)) ^ [...]/sysroot/usr/include/boost/functional/hash/detail/hash_float.hpp:210:21: error: found ‘:’ in nested-name-specifier, expected ‘::’ switch (fpclassify(v)) ^ [...]/sysroot/usr/include/boost/functional/hash/detail/hash_float.hpp:210:21: error: ‘_Float128’ is not a class or namespace switch (fpclassify(v)) ^ [...]/sysroot/usr/include/boost/functional/hash/detail/hash_float.hpp:210:21: error: ‘_Generic’ was not declared in this scope switch (fpclassify(v)) ^ Also backport fix for glibc bug 22146. Without this patch some C++ applications (jsoncpp, mesa3d and kodi) fail to build due to an issue while building the toolchain. A test in the libstdc++ configure script fail when -Os and float128 are used. See the bug report for details [3]. [1] https://sourceware.org/ml/libc-alpha/2017-08/msg00586.html [2] https://sourceware.org/bugzilla/show_bug.cgi?id=21930 [3] https://sourceware.org/bugzilla/show_bug.cgi?id=22146 Signed-off-by: Romain Naour <romain.naour@gmail.com> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Tested-by: Bernd Kuhls <bernd.kuhls@t-online.de> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
64 lines
2.5 KiB
Diff
64 lines
2.5 KiB
Diff
From 33f54cf4f81a51e5c8cbfb2408edd439bdee9435 Mon Sep 17 00:00:00 2001
|
|
From: "Gabriel F. T. Gomes" <gabriel@inconstante.eti.br>
|
|
Date: Wed, 20 Sep 2017 15:10:26 -0300
|
|
Subject: [PATCH] Let fpclassify use the builtin when optimizing for size in
|
|
C++ mode (bug 22146)
|
|
|
|
When optimization for size is on (-Os), fpclassify does not use the
|
|
type-generic __builtin_fpclassify builtin, instead it uses __MATH_TG.
|
|
However, when library support for float128 is available, __MATH_TG uses
|
|
__builtin_types_compatible_p, which is not available in C++ mode.
|
|
|
|
On the other hand, libstdc++ undefines (in cmath) many macros from
|
|
math.h, including fpclassify, so that it can provide its own functions.
|
|
However, during its configure tests, libstdc++ just tests for the
|
|
availability of the macros (it does not undefine them, nor does it
|
|
provide its own functions).
|
|
|
|
Finally, when libstdc++ is configured with optimization for size
|
|
enabled, its configure tests include math.h and get the definition of
|
|
fpclassify that uses __MATH_TG (and __builtin_types_compatible_p).
|
|
Since libstdc++ does not undefine the macros during its configure tests,
|
|
they fail.
|
|
|
|
This patch lets fpclassify use the builtin in C++ mode, even when
|
|
optimization for size is on. This allows the configure test in
|
|
libstdc++ to work.
|
|
|
|
Tested for powerpc64le and x86_64.
|
|
|
|
[BZ #22146]
|
|
math/math.h: Let fpclassify use the builtin in C++ mode, even
|
|
when optimazing for size.
|
|
|
|
(cherry picked from commit c5c4a626098ec884b8527356abdf2a4bb7b6bf27)
|
|
|
|
[Romain rebase on glibc 2.26)
|
|
Signed-off-by: Romain Naour <romain.naour@gmail.com>
|
|
---
|
|
math/math.h | 8 +++++++-
|
|
1 file changed, 7 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/math/math.h b/math/math.h
|
|
index 7c0fc6d..f9348ec 100644
|
|
--- a/math/math.h
|
|
+++ b/math/math.h
|
|
@@ -402,7 +402,13 @@ enum
|
|
|
|
/* Return number of classification appropriate for X. */
|
|
# if __GNUC_PREREQ (4,4) && !defined __SUPPORT_SNAN__ \
|
|
- && !defined __OPTIMIZE_SIZE__
|
|
+ && (!defined __OPTIMIZE_SIZE__ || defined __cplusplus)
|
|
+ /* The check for __cplusplus allows the use of the builtin, even
|
|
+ when optimization for size is on. This is provided for
|
|
+ libstdc++, only to let its configure test work when it is built
|
|
+ with -Os. No further use of this definition of fpclassify is
|
|
+ expected in C++ mode, since libstdc++ provides its own version
|
|
+ of fpclassify in cmath (which undefines fpclassify). */
|
|
# define fpclassify(x) __builtin_fpclassify (FP_NAN, FP_INFINITE, \
|
|
FP_NORMAL, FP_SUBNORMAL, FP_ZERO, x)
|
|
# else
|
|
--
|
|
2.9.5
|
|
|