Message ID | 8760jhcovg.fsf@e105548-lin.cambridge.arm.com |
---|---|
State | New |
Headers | show |
On 10/03/17 12:12 +0000, Richard Sandiford wrote: >libstdc++-v3 configure checks whether old glibc inline definitions >of isnan would conflict with the libstdc++-v3 definitions and >works around them if so. But if g++ 6.x build A is used to build >another g++ 6.x B, the configure step for B will pick up the math.h >installed alongside A instead of the glibc version. configure will >then assume that the workaround isn't necessary, leaving B with a >broken cmath. > >isinf already worked around this. This patch extends the same fix >to isnan. (Thanks to George for the fix.) Huh, I wonder why I only did it for one of them. >Tested on arch64-linux-gnu. OK for trunk and 6.x? OK, thanks.
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4 index d9859aa..5998fe6 100644 --- a/libstdc++-v3/acinclude.m4 +++ b/libstdc++-v3/acinclude.m4 @@ -2297,7 +2297,8 @@ AC_DEFUN([GLIBCXX_CHECK_MATH11_PROTO], [ AC_MSG_CHECKING([for obsolete isnan function in <math.h>]) AC_CACHE_VAL(glibcxx_cv_obsolete_isnan, [ AC_COMPILE_IFELSE([AC_LANG_SOURCE( - [#include <math.h> + [#define _GLIBCXX_INCLUDE_NEXT_C_HEADERS + #include <math.h> #undef isnan namespace std { using ::isnan; diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure index 9bb9862..29456c4 100755 --- a/libstdc++-v3/configure +++ b/libstdc++-v3/configure @@ -18390,6 +18390,7 @@ else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ +#define _GLIBCXX_INCLUDE_NEXT_C_HEADERS #include <math.h> #undef isnan namespace std {