Fix femode_t conditionals for arc and or1k

Two of the architecture bits/fenv.h headers define femode_t if
__GLIBC_USE (IEC_60559_BFP_EXT), instead of the correct condition
__GLIBC_USE (IEC_60559_BFP_EXT_C23) (both were added after commit
0175c9e9be, but were probably first
developed before it and then not updated to take account of its
changes).  This results in failures of the installed headers check for
fenv.h when building with GCC 15 (defaults to -std=gnu23 - we don't
yet have an installed-headers test specifically for C23 mode and don't
yet require a compiler with such a mode for building glibc) together
with a combination of options leaving C23 features enabled, since the
declarations of functions using femode_t use the correct conditions;
see
<https://sourceware.org/pipermail/libc-testresults/2024q4/013163.html>.
Fix the conditionals to get <fenv.h> to work correctly in C23 mode
again.

Tested with build-many-glibcs.py (arc-linux-gnu, arch-linux-gnuhf,
or1k-linux-gnu-hard, or1k-linux-gnu-soft).
This commit is contained in:
Joseph Myers 2024-11-19 22:25:39 +00:00
parent 3ef7e42861
commit d899b48a30
2 changed files with 2 additions and 2 deletions

View File

@ -69,7 +69,7 @@ typedef struct
/* If the default argument is used we use this value. */ /* If the default argument is used we use this value. */
#define FE_DFL_ENV ((const fenv_t *) -1) #define FE_DFL_ENV ((const fenv_t *) -1)
#if __GLIBC_USE (IEC_60559_BFP_EXT) #if __GLIBC_USE (IEC_60559_BFP_EXT_C23)
/* Type representing floating-point control modes. */ /* Type representing floating-point control modes. */
typedef unsigned int femode_t; typedef unsigned int femode_t;

View File

@ -79,7 +79,7 @@ typedef unsigned int fenv_t;
/* If the default argument is used we use this value. */ /* If the default argument is used we use this value. */
#define FE_DFL_ENV ((const fenv_t *) -1l) #define FE_DFL_ENV ((const fenv_t *) -1l)
#if __GLIBC_USE (IEC_60559_BFP_EXT) #if __GLIBC_USE (IEC_60559_BFP_EXT_C23)
/* Type representing floating-point control modes. */ /* Type representing floating-point control modes. */
typedef unsigned int femode_t; typedef unsigned int femode_t;