Re: [PATCH] newlib: change static to __fenv_static for fe{enable,disable,get}except

"Richard Earnshaw (lists)" <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <[email protected]>
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?= <[email protected]>
> 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ň <[email protected]>
> ---
>  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.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.