zGRYFPiAWFPEltnqbJqfvm1uV1QX6BNydD06gMSpF/sIPRKLnO s1oX/e5dBgqMIoaoTKke5aYNf0mT6g4mKfJi86AgYMuFWR4UtDlzVgvjqdB7ml57Rx3KOF Zd+qkrTpxdepT0yKfRiH+Gy3ntuVTf0XfHWaHQ9jHxWkf7FrqMzMRwGS9Wh0W3ApSweoQy V6CJkDZpUvdz3vVQaNK1LqR4NPP/WT7HA04SC/zruqDMzTediqkEn1gFMZMmigXoc0MoKc LgifecCfZ6X5aGvdMihgHijbqbw66/yV+m25PPa7itkFUEhJATuzbqE978EcnA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775458491; a=rsa-sha256; cv=none; b=Q7/piSxaiU2tEeQkv5YcxLLIR2ASN79aPq8kcYJxRcZYA3YLnS4PmnmClxrfwPtBtZaNpe OuKvOKuKgpXV5rD4XFf1r7SJaC3uLo64nS0CQgpA9D5NWEvRzlVF2nkzwogGU4wA7x2TSh VoeAsec7F16Gkp2up0G0XyXOqgQm1w2JUr/NeLxQCpvAaLlg8j7oOb/nNRHwTYOaW74Vu7 5eXqRqy/TR3NN21lmYxovvqA5WBam5n5Lni0atUObFMIEq54ctpFx1OJl5VLTZdQJYKoGx BJCPOAca+iypxqAoFG+zZYppYuPOXN9ExHIHfN4M/dUcN67NmQ1JrVefANSHCw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775458491; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Rwlafs7qb45upbBAGbq9/YUsYncTyHwSTwasSuV/uCA=; b=KCGPVK96j0JuCRss94segsOtFNW2MCg9d/HFP4Ikb2gF4vlfWm/aywEu8fvjC6aeiDgZeP eJHQtP8mRo5TL0bR9f9lITRBdWqVIqZAc34Nqw76a240wUVq7CMrtWt68oV80NODI355iY 8MDbEIXCl82POhoAVufu+zjSIB9YBRlGZUZG4pP6ZhcykI8LNMcyAf4nG2yIa3P/7kyHM7 Ke9k5jA+1NuoIKnKzIg33obx+PMx1XdXQ18oyHIy6aQnhQiMYkXqERAa4M/gCnABwsZzRI jGtzT+IXXIiTjxzAUa82qQtpbGlFX/oiKt0/vbz860ttCibMSqS2AJDMNpHPSQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fq0SW1vwSzjMt for ; Mon, 06 Apr 2026 06:54:51 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 34335 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 06 Apr 2026 06:54:51 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: faca80fb6688 - stable/15 - msun/arm: convert fenv functions to proper linkage List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: faca80fb6688f0203544f6bf854092f0383cf436 Auto-Submitted: auto-generated Date: Mon, 06 Apr 2026 06:54:51 +0000 Message-Id: <69d358bb.34335.5eb11414@gitrepo.freebsd.org> The branch stable/15 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=faca80fb6688f0203544f6bf854092f0383cf436 commit faca80fb6688f0203544f6bf854092f0383cf436 Author: Konstantin Belousov AuthorDate: 2026-03-29 03:10:18 +0000 Commit: Konstantin Belousov CommitDate: 2026-04-05 07:47:10 +0000 msun/arm: convert fenv functions to proper linkage PR: 277958 (cherry picked from commit 70674434e2424d61262322702d0415e54d8cc1a2) --- lib/msun/arm/fenv.c | 133 +++++++++++++++++++++++++++++++++++++++++----------- lib/msun/arm/fenv.h | 58 ++++++++++++++++++----- 2 files changed, 150 insertions(+), 41 deletions(-) diff --git a/lib/msun/arm/fenv.c b/lib/msun/arm/fenv.c index c8edf3fef037..620a05d51b90 100644 --- a/lib/msun/arm/fenv.c +++ b/lib/msun/arm/fenv.c @@ -76,19 +76,83 @@ 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)); +} + +int +(feenableexcept)(int mask) +{ + return (__feenableexcept_int(mask)); +} + +int +(fedisableexcept)(int mask) +{ + return (__fedisableexcept_int(mask)); +} + +int +(fegetexcept)(void) +{ + return (__fegetexcept_int()); +} #else /* !FENV_MANGLE && SOFTFP_ABI */ /* Set by libc when the VFP unit is enabled */ @@ -158,7 +222,8 @@ __softfp_round_from_vfp(int round) } } -int feclearexcept(int __excepts) +int +(feclearexcept)(int __excepts) { if (_libc_arm_fpu_present) @@ -168,7 +233,8 @@ int feclearexcept(int __excepts) return (0); } -int fegetexceptflag(fexcept_t *__flagp, int __excepts) +int +(fegetexceptflag)(fexcept_t *__flagp, int __excepts) { fexcept_t __vfp_flagp; @@ -182,7 +248,8 @@ int fegetexceptflag(fexcept_t *__flagp, int __excepts) return (0); } -int fesetexceptflag(const fexcept_t *__flagp, int __excepts) +int +(fesetexceptflag)(const fexcept_t *__flagp, int __excepts) { if (_libc_arm_fpu_present) @@ -192,7 +259,8 @@ int fesetexceptflag(const fexcept_t *__flagp, int __excepts) return (0); } -int feraiseexcept(int __excepts) +int +(feraiseexcept)(int __excepts) { if (_libc_arm_fpu_present) @@ -202,7 +270,8 @@ int feraiseexcept(int __excepts) return (0); } -int fetestexcept(int __excepts) +int +(fetestexcept)(int __excepts) { int __got_excepts; @@ -214,7 +283,8 @@ int fetestexcept(int __excepts) return (__got_excepts); } -int fegetround(void) +int +(fegetround)(void) { if (_libc_arm_fpu_present) @@ -222,7 +292,8 @@ int fegetround(void) return __softfp_fegetround(); } -int fesetround(int __round) +int +(fesetround)(int __round) { if (_libc_arm_fpu_present) @@ -232,7 +303,8 @@ int fesetround(int __round) return (0); } -int fegetenv(fenv_t *__envp) +int +(fegetenv)(fenv_t *__envp) { fenv_t __vfp_envp; @@ -245,7 +317,8 @@ int fegetenv(fenv_t *__envp) return (0); } -int feholdexcept(fenv_t *__envp) +int +(feholdexcept)(fenv_t *__envp) { fenv_t __vfp_envp; @@ -258,7 +331,8 @@ int feholdexcept(fenv_t *__envp) return (0); } -int fesetenv(const fenv_t *__envp) +int +(fesetenv)(const fenv_t *__envp) { if (_libc_arm_fpu_present) @@ -268,7 +342,8 @@ int fesetenv(const fenv_t *__envp) return (0); } -int feupdateenv(const fenv_t *__envp) +int +(feupdateenv)(const fenv_t *__envp) { if (_libc_arm_fpu_present) @@ -278,7 +353,8 @@ int feupdateenv(const fenv_t *__envp) return (0); } -int feenableexcept(int __mask) +int +(feenableexcept)(int __mask) { int __unmasked; @@ -290,7 +366,8 @@ int feenableexcept(int __mask) return (__unmasked); } -int fedisableexcept(int __mask) +int +(fedisableexcept)(int __mask) { int __unmasked; @@ -302,7 +379,8 @@ int fedisableexcept(int __mask) return (__unmasked); } -int fegetexcept(void) +int +(fegetexcept)(void) { int __unmasked; @@ -315,4 +393,3 @@ int fegetexcept(void) } #endif - diff --git a/lib/msun/arm/fenv.h b/lib/msun/arm/fenv.h index 14638dd33aa7..78ca9ef0f589 100644 --- a/lib/msun/arm/fenv.h +++ b/lib/msun/arm/fenv.h @@ -112,7 +112,39 @@ int fegetexcept(void); #define _FPU_MASK_SHIFT 8 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 *); +int fegetexcept(void); +#if __BSD_VISIBLE +int feenableexcept(int); +int fedisableexcept(int); +int fegetexcept(void); +#endif + #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) +#if __BSD_VISIBLE +#define feenableexcept(a) __feenableexcept_int(a) +#define fedisableexcept(a) __fedisableexcept_int(a) +#define fegetexcept() __fegetexcept_int() +#endif __fenv_static inline int __feclearexcept_int(int __excepts) @@ -126,7 +158,7 @@ __feclearexcept_int(int __excepts) } __fenv_static inline int -fegetexceptflag(fexcept_t *__flagp, int __excepts) +__fegetexceptflag_int(fexcept_t *__flagp, int __excepts) { fexcept_t __fpsr; @@ -136,7 +168,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 __fpsr; @@ -148,7 +180,7 @@ fesetexceptflag(const fexcept_t *__flagp, int __excepts) } __fenv_static inline int -feraiseexcept(int __excepts) +__feraiseexcept_int(int __excepts) { fexcept_t __ex = __excepts; @@ -157,7 +189,7 @@ feraiseexcept(int __excepts) } __fenv_static inline int -fetestexcept(int __excepts) +__fetestexcept_int(int __excepts) { fexcept_t __fpsr; @@ -166,7 +198,7 @@ fetestexcept(int __excepts) } __fenv_static inline int -fegetround(void) +__fegetround_int(void) { fenv_t __fpsr; @@ -175,7 +207,7 @@ fegetround(void) } __fenv_static inline int -fesetround(int __round) +__fesetround_int(int __round) { fenv_t __fpsr; @@ -187,7 +219,7 @@ fesetround(int __round) } __fenv_static inline int -fegetenv(fenv_t *__envp) +__fegetenv_int(fenv_t *__envp) { vmrs_fpscr(*__envp); @@ -195,7 +227,7 @@ fegetenv(fenv_t *__envp) } __fenv_static inline int -feholdexcept(fenv_t *__envp) +__feholdexcept_int(fenv_t *__envp) { fenv_t __env; @@ -207,7 +239,7 @@ feholdexcept(fenv_t *__envp) } __fenv_static inline int -fesetenv(const fenv_t *__envp) +__fesetenv_int(const fenv_t *__envp) { vmsr_fpscr(*__envp); @@ -215,7 +247,7 @@ fesetenv(const fenv_t *__envp) } __fenv_static inline int -feupdateenv(const fenv_t *__envp) +__feupdateenv_int(const fenv_t *__envp) { fexcept_t __fpsr; @@ -230,7 +262,7 @@ feupdateenv(const fenv_t *__envp) /* We currently provide no external definitions of the functions below. */ __fenv_static inline int -feenableexcept(int __mask) +__feenableexcept_int(int __mask) { fenv_t __old_fpsr, __new_fpsr; @@ -242,7 +274,7 @@ feenableexcept(int __mask) } __fenv_static inline int -fedisableexcept(int __mask) +__fedisableexcept_int(int __mask) { fenv_t __old_fpsr, __new_fpsr; @@ -254,7 +286,7 @@ fedisableexcept(int __mask) } __fenv_static inline int -fegetexcept(void) +__fegetexcept_int(void) { fenv_t __fpsr;