[PATCH] newlib: change static to __fenv_static for fe{enable,disable,get}except
Richard Earnshaw (lists)
Richard.Earnshaw@arm.com
Thu Jul 3 14:40:15 GMT 2025
On 03/07/2025 13:28, Radek Barton wrote:
> Hello.
>
> As a follow up of https://sourceware.org/pipermail/newlib/2025/021872.html, I am sending alternative approach how to fix the undefine references issue.
>
This is getting closer, but it still changes the behaviour on non-cygwin platforms. I think I'd introduce a new macro, perhaps something like
#ifdef __CYGWIN__
#define __cygwin_fenv_static __fenv_static
#else
#define __cygwin_fenv_static static
#endif
then use __cygwin_fenv_static for the cases you want to change.
This should then keep the existing behaviour on elf systems.
> Radek
>
> ---
> From 4218cbb3360fc45514569703ac9089f0cc2ad748 Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?Radek=20Barto=C5=88?= <radek.barton@microsoft.com>
> Date: Thu, 3 Jul 2025 12:00:22 +0200
> Subject: [PATCH] newlib: change static to __fenv_static for
> fe{enable,disable,get}except
> MIME-Version: 1.0
> Content-Type: text/plain; charset=UTF-8
> Content-Transfer-Encoding: 8bit
>
> This fixes undefined references to those functions when building cygwin1.dll for AArch64.
>
> Signed-off-by: Radek Bartoň <radek.barton@microsoft.com>
> ---
> newlib/libc/machine/aarch64/sys/fenv.h | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/newlib/libc/machine/aarch64/sys/fenv.h b/newlib/libc/machine/aarch64/sys/fenv.h
> index 6b0879269..212612725 100644
> --- a/newlib/libc/machine/aarch64/sys/fenv.h
> +++ b/newlib/libc/machine/aarch64/sys/fenv.h
> @@ -82,7 +82,7 @@ extern const fenv_t *_fe_dfl_env;
>
> /* We currently provide no external definitions of the functions below. */
This comment will need updating as well to describe the requirements for cygwin.
>
> -static inline int
> +__fenv_static inline int
> feenableexcept(int __mask)
> {
> fenv_t __old_r, __new_r;
> @@ -93,7 +93,7 @@ feenableexcept(int __mask)
> return ((__old_r >> _FPUSW_SHIFT) & FE_ALL_EXCEPT);
> }
>
> -static inline int
> +__fenv_static inline int
> fedisableexcept(int __mask)
> {
> fenv_t __old_r, __new_r;
> @@ -104,7 +104,7 @@ fedisableexcept(int __mask)
> return ((__old_r >> _FPUSW_SHIFT) & FE_ALL_EXCEPT);
> }
>
> -static inline int
> +__fenv_static inline int
> fegetexcept(void)
> {
> fenv_t __r;
R.
More information about the Newlib
mailing list