Re: git: 96a685c229f2 - main - lib/msun/aarch64: provide export file for arch-specific fenv methods

From: Mark Millard <marklmi_at_yahoo.com>
Date: Thu, 09 Apr 2026 04:52:04 UTC
On 4/8/26 07:32, Konstantin Belousov wrote:
> The branch main has been updated by kib:
> 
> URL: https://cgit.FreeBSD.org/src/commit/?id=96a685c229f2ce440591f98d33d36776e56dd55c
> 
> commit 96a685c229f2ce440591f98d33d36776e56dd55c
> Author:     Konstantin Belousov <kib@FreeBSD.org>
> AuthorDate: 2026-04-06 16:41:23 +0000
> Commit:     Konstantin Belousov <kib@FreeBSD.org>
> CommitDate: 2026-04-08 14:32:00 +0000
> 
>     lib/msun/aarch64: provide export file for arch-specific fenv methods
>     
>     Reported and tested by: fluffy
>     Reviewed by:    emaste
>     Fixes:  3a01e1e1a50cb9a9594aac2148dc920a6b295428
>     Sponsored by:   The FreeBSD Foundation
>     MFC after:      1 week
>     Differential revision:  https://reviews.freebsd.org/D56283

I have noted in:

<https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=294143>

that this changes the status of some of what had been reported about
variability in the handling of "Variability in defining fegetexcept,
feenableexcept, and fedisableexcept across platforms".

> ---
>  lib/msun/aarch64/Symbol.map | 10 ++++++++++
>  lib/msun/aarch64/fenv.c     | 18 ++++++++++++++++++
>  lib/msun/aarch64/fenv.h     | 14 +++++++++-----
>  3 files changed, 37 insertions(+), 5 deletions(-)
> 
> diff --git a/lib/msun/aarch64/Symbol.map b/lib/msun/aarch64/Symbol.map
> new file mode 100644
> index 000000000000..b468c814ff06
> --- /dev/null
> +++ b/lib/msun/aarch64/Symbol.map
> @@ -0,0 +1,10 @@
> +FBSD_1.9 {
> +	fesetexceptflag;
> +	feraiseexcept;
> +	fegetenv;
> +	feholdexcept;
> +	feupdateenv;
> +	feenableexcept;
> +	fedisableexcept;
> +	fegetexcept;
> +};
> diff --git a/lib/msun/aarch64/fenv.c b/lib/msun/aarch64/fenv.c
> index a428a9d8a271..3d7e467880c7 100644
> --- a/lib/msun/aarch64/fenv.c
> +++ b/lib/msun/aarch64/fenv.c
> @@ -98,3 +98,21 @@ int
>  {
>  	return (__feupdateenv_int(envp));
>  }
> +
> +int
> +(feenableexcept)(int mask)
> +{
> +	return (__feenableexcept_int(mask));
> +}
> +
> +int
> +(fedisableexcept)(int mask)
> +{
> +	return (__fedisableexcept_int(mask));
> +}
> +
> +int
> +(fegetexcept)(void)
> +{
> +	return (__fegetexcept_int());
> +}
> diff --git a/lib/msun/aarch64/fenv.h b/lib/msun/aarch64/fenv.h
> index 32a03ee1eb49..5d47940cf9eb 100644
> --- a/lib/msun/aarch64/fenv.h
> +++ b/lib/msun/aarch64/fenv.h
> @@ -92,6 +92,9 @@ int fegetenv(fenv_t *);
>  int feholdexcept(fenv_t *);
>  int fesetenv(const fenv_t *);
>  int feupdateenv(const fenv_t *);
> +int feenableexcept(int);
> +int fedisableexcept(int);
> +int fegetexcept(void);
>  
>  #define	feclearexcept(a)	__feclearexcept_int(a)
>  #define	fegetexceptflag(e, a)	__fegetexceptflag_int(e, a)
> @@ -104,6 +107,9 @@ int feupdateenv(const fenv_t *);
>  #define	feholdexcept(e)		__feholdexcept_int(e)
>  #define	fesetenv(e)		__fesetenv_int(e)
>  #define	feupdateenv(e)		__feupdateenv_int(e)
> +#define	feenableexcept(a)	__feenableexcept_int(a)
> +#define	fedisableexcept(a)	__fedisableexcept_int(a)
> +#define	fegetexcept()		__fegetexcept_int()
>  
>  __fenv_static inline int
>  __feclearexcept_int(int __excepts)
> @@ -233,10 +239,8 @@ __feupdateenv_int(const fenv_t *__envp)
>  
>  #if __BSD_VISIBLE
>  
> -/* We currently provide no external definitions of the functions below. */
> -
>  static inline int
> -feenableexcept(int __mask)
> +__feenableexcept_int(int __mask)
>  {
>  	fenv_t __old_r, __new_r;
>  
> @@ -247,7 +251,7 @@ feenableexcept(int __mask)
>  }
>  
>  static inline int
> -fedisableexcept(int __mask)
> +__fedisableexcept_int(int __mask)
>  {
>  	fenv_t __old_r, __new_r;
>  
> @@ -258,7 +262,7 @@ fedisableexcept(int __mask)
>  }
>  
>  static inline int
> -fegetexcept(void)
> +__fegetexcept_int(void)
>  {
>  	fenv_t __r;
>  
> 
> 


-- 
===
Mark Millard
marklmi at yahoo.com