git: 492843d5269f - stable/15 - msun/aarch64: convert fenv functions to proper linkage
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 06 Apr 2026 06:54:47 UTC
The branch stable/15 has been updated by kib:
URL: https://cgit.FreeBSD.org/src/commit/?id=492843d5269f22592d7694111e92200bf577633c
commit 492843d5269f22592d7694111e92200bf577633c
Author: Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2026-03-28 23:13:44 +0000
Commit: Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2026-04-05 07:47:10 +0000
msun/aarch64: convert fenv functions to proper linkage
PR: 277958
(cherry picked from commit 3a01e1e1a50cb9a9594aac2148dc920a6b295428)
---
lib/msun/aarch64/fenv.c | 72 ++++++++++++++++++++++++++++++++++++++++---------
lib/msun/aarch64/fenv.h | 41 +++++++++++++++++++++-------
2 files changed, 90 insertions(+), 23 deletions(-)
diff --git a/lib/msun/aarch64/fenv.c b/lib/msun/aarch64/fenv.c
index 4c54656be7d3..5d626f66516f 100644
--- a/lib/msun/aarch64/fenv.c
+++ b/lib/msun/aarch64/fenv.c
@@ -44,16 +44,62 @@ int
return (__feclearexcept_int(excepts));
}
-extern inline int fegetexceptflag(fexcept_t *__flagp, int __excepts);
-extern inline int fesetexceptflag(const fexcept_t *__flagp, int __excepts);
-extern inline int feraiseexcept(int __excepts);
-extern inline int fetestexcept(int __excepts);
-extern inline int fegetround(void);
-extern inline int fesetround(int __round);
-extern inline int fegetenv(fenv_t *__envp);
-extern inline int feholdexcept(fenv_t *__envp);
-extern inline int fesetenv(const fenv_t *__envp);
-extern inline int feupdateenv(const fenv_t *__envp);
-extern inline int feenableexcept(int __mask);
-extern inline int fedisableexcept(int __mask);
-extern inline int fegetexcept(void);
+int
+(fegetexceptflag)(fexcept_t *flagp, int excepts)
+{
+ return (__fegetexceptflag_int(flagp, excepts));
+}
+
+int
+(fesetexceptflag)(const fexcept_t *flagp, int excepts)
+{
+ return (__fesetexceptflag_int(flagp, excepts));
+}
+
+int
+(feraiseexcept)(int excepts)
+{
+ return (__feraiseexcept_int(excepts));
+}
+
+int
+(fetestexcept)(int excepts)
+{
+ return (__fetestexcept_int(excepts));
+}
+
+int
+(fegetround)(void)
+{
+ return (__fegetround_int());
+}
+
+int
+(fesetround)(int round)
+{
+ return (__fesetround_int(round));
+}
+
+int
+(fegetenv)(fenv_t *envp)
+{
+ return (__fegetenv_int(envp));
+}
+
+int
+(feholdexcept)(fenv_t *envp)
+{
+ return (__feholdexcept_int(envp));
+}
+
+int
+(fesetenv)(const fenv_t *envp)
+{
+ return (__fesetenv_int(envp));
+}
+
+int
+(feupdateenv)(const fenv_t *envp)
+{
+ return (__feupdateenv_int(envp));
+}
diff --git a/lib/msun/aarch64/fenv.h b/lib/msun/aarch64/fenv.h
index d125978b887b..32a03ee1eb49 100644
--- a/lib/msun/aarch64/fenv.h
+++ b/lib/msun/aarch64/fenv.h
@@ -82,7 +82,28 @@ extern const fenv_t __fe_dfl_env;
#define __msr_fpsr(__r) __asm __volatile("msr fpsr, %0" : : "r" (__r))
int feclearexcept(int);
+int fegetexceptflag(fexcept_t *, int);
+int fesetexceptflag(const fexcept_t *, int);
+int feraiseexcept(int);
+int fetestexcept(int);
+int fegetround(void);
+int fesetround(int);
+int fegetenv(fenv_t *);
+int feholdexcept(fenv_t *);
+int fesetenv(const fenv_t *);
+int feupdateenv(const fenv_t *);
+
#define feclearexcept(a) __feclearexcept_int(a)
+#define fegetexceptflag(e, a) __fegetexceptflag_int(e, a)
+#define fesetexceptflag(e, a) __fesetexceptflag_int(e, a)
+#define feraiseexcept(a) __feraiseexcept_int(a)
+#define fetestexcept(a) __fetestexcept_int(a)
+#define fegetround() __fegetround_int()
+#define fesetround(a) __fesetround_int(a)
+#define fegetenv(e) __fegetenv_int(e)
+#define feholdexcept(e) __feholdexcept_int(e)
+#define fesetenv(e) __fesetenv_int(e)
+#define feupdateenv(e) __feupdateenv_int(e)
__fenv_static inline int
__feclearexcept_int(int __excepts)
@@ -96,7 +117,7 @@ __feclearexcept_int(int __excepts)
}
__fenv_static inline int
-fegetexceptflag(fexcept_t *__flagp, int __excepts)
+__fegetexceptflag_int(fexcept_t *__flagp, int __excepts)
{
fexcept_t __r;
@@ -106,7 +127,7 @@ fegetexceptflag(fexcept_t *__flagp, int __excepts)
}
__fenv_static inline int
-fesetexceptflag(const fexcept_t *__flagp, int __excepts)
+__fesetexceptflag_int(const fexcept_t *__flagp, int __excepts)
{
fexcept_t __r;
@@ -118,7 +139,7 @@ fesetexceptflag(const fexcept_t *__flagp, int __excepts)
}
__fenv_static inline int
-feraiseexcept(int __excepts)
+__feraiseexcept_int(int __excepts)
{
fexcept_t __r;
@@ -129,7 +150,7 @@ feraiseexcept(int __excepts)
}
__fenv_static inline int
-fetestexcept(int __excepts)
+__fetestexcept_int(int __excepts)
{
fexcept_t __r;
@@ -138,7 +159,7 @@ fetestexcept(int __excepts)
}
__fenv_static inline int
-fegetround(void)
+__fegetround_int(void)
{
fenv_t __r;
@@ -147,7 +168,7 @@ fegetround(void)
}
__fenv_static inline int
-fesetround(int __round)
+__fesetround_int(int __round)
{
fenv_t __r;
@@ -161,7 +182,7 @@ fesetround(int __round)
}
__fenv_static inline int
-fegetenv(fenv_t *__envp)
+__fegetenv_int(fenv_t *__envp)
{
__uint64_t fpcr;
__uint64_t fpsr;
@@ -174,7 +195,7 @@ fegetenv(fenv_t *__envp)
}
__fenv_static inline int
-feholdexcept(fenv_t *__envp)
+__feholdexcept_int(fenv_t *__envp)
{
fenv_t __r;
@@ -191,7 +212,7 @@ feholdexcept(fenv_t *__envp)
}
__fenv_static inline int
-fesetenv(const fenv_t *__envp)
+__fesetenv_int(const fenv_t *__envp)
{
__msr_fpcr((*__envp) >> 32);
@@ -200,7 +221,7 @@ fesetenv(const fenv_t *__envp)
}
__fenv_static inline int
-feupdateenv(const fenv_t *__envp)
+__feupdateenv_int(const fenv_t *__envp)
{
fexcept_t __r;