Re: git: 96a685c229f2 - main - lib/msun/aarch64: provide export file for arch-specific fenv methods
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