https://gcc.gnu.org/g:e23e5370d5855fc18b9f6f3fb680fcd2971e7a79
commit r15-3904-ge23e5370d5855fc18b9f6f3fb680fcd2971e7a79 Author: Jakub Jelinek <ja...@redhat.com> Date: Thu Sep 26 23:45:22 2024 +0200 libstdc++: Fix freebsd/dragonfly build [PR116859] As reported in the PR, the system headers libstdc++ changes result in -Werror=expansion-to-defined errors on FreeBSD and supposedly on DragonFly too. The following patch fixes those by performing the preprocessor test right away, rather than using defined in the macro definitions. I think neither __ISO_C_VISIBLE nor __LONG_LONG_SUPPORTED should normally change during compilation. 2024-09-26 Jakub Jelinek <ja...@redhat.com> PR libstdc++/116859 * config/os/bsd/freebsd/os_defines.h (_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC, _GLIBCXX_USE_C99_FLOAT_TRANSCENDENTALS_DYNAMIC): Avoid -Wexpansion-to-defined warnings. * config/os/bsd/dragonfly/os_defines.h (_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC): Likewise. Diff: --- libstdc++-v3/config/os/bsd/dragonfly/os_defines.h | 6 +++++- libstdc++-v3/config/os/bsd/freebsd/os_defines.h | 12 ++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/libstdc++-v3/config/os/bsd/dragonfly/os_defines.h b/libstdc++-v3/config/os/bsd/dragonfly/os_defines.h index 5c48ca9ee656..e030fa3dc872 100644 --- a/libstdc++-v3/config/os/bsd/dragonfly/os_defines.h +++ b/libstdc++-v3/config/os/bsd/dragonfly/os_defines.h @@ -36,6 +36,10 @@ #define _GLIBCXX_USE_C99_CHECK 1 #define _GLIBCXX_USE_C99_DYNAMIC (!(__ISO_C_VISIBLE >= 1999)) #define _GLIBCXX_USE_C99_LONG_LONG_CHECK 1 -#define _GLIBCXX_USE_C99_LONG_LONG_DYNAMIC (_GLIBCXX_USE_C99_DYNAMIC || !defined __LONG_LONG_SUPPORTED) +#if _GLIBCXX_USE_C99_DYNAMIC || !defined __LONG_LONG_SUPPORTED +#define _GLIBCXX_USE_C99_LONG_LONG_DYNAMIC 1 +#else +#define _GLIBCXX_USE_C99_LONG_LONG_DYNAMIC 0 +#endif #endif diff --git a/libstdc++-v3/config/os/bsd/freebsd/os_defines.h b/libstdc++-v3/config/os/bsd/freebsd/os_defines.h index 6c931821329e..0d63ae6cec4c 100644 --- a/libstdc++-v3/config/os/bsd/freebsd/os_defines.h +++ b/libstdc++-v3/config/os/bsd/freebsd/os_defines.h @@ -36,8 +36,16 @@ #define _GLIBCXX_USE_C99_CHECK 1 #define _GLIBCXX_USE_C99_DYNAMIC (!(__ISO_C_VISIBLE >= 1999)) #define _GLIBCXX_USE_C99_LONG_LONG_CHECK 1 -#define _GLIBCXX_USE_C99_LONG_LONG_DYNAMIC (_GLIBCXX_USE_C99_DYNAMIC || !defined __LONG_LONG_SUPPORTED) +#if _GLIBCXX_USE_C99_DYNAMIC || !defined __LONG_LONG_SUPPORTED +#define _GLIBCXX_USE_C99_LONG_LONG_DYNAMIC 1 +#else +#define _GLIBCXX_USE_C99_LONG_LONG_DYNAMIC 0 +#endif #define _GLIBCXX_USE_C99_FLOAT_TRANSCENDENTALS_CHECK 1 -#define _GLIBCXX_USE_C99_FLOAT_TRANSCENDENTALS_DYNAMIC defined _XOPEN_SOURCE +#ifdef _XOPEN_SOURCE +#define _GLIBCXX_USE_C99_FLOAT_TRANSCENDENTALS_DYNAMIC 1 +#else +#define _GLIBCXX_USE_C99_FLOAT_TRANSCENDENTALS_DYNAMIC 0 +#endif #endif