Page MenuHomeFreeBSD

lib/msun: export arch-specific fenv methods
ClosedPublic

Authored by kib on Apr 6 2026, 5:37 PM.
Tags
None
Referenced Files
Unknown Object (File)
Fri, May 15, 12:29 PM
Unknown Object (File)
Thu, May 14, 11:27 AM
Unknown Object (File)
Thu, May 14, 5:43 AM
Unknown Object (File)
Wed, May 13, 7:35 PM
Unknown Object (File)
Wed, May 13, 6:45 PM
Unknown Object (File)
Wed, May 13, 4:43 PM
Unknown Object (File)
Sun, May 10, 7:00 PM
Unknown Object (File)
Thu, May 7, 1:01 AM
Subscribers

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

kib requested review of this revision.Apr 6 2026, 5:37 PM

Remove conditional include of the arch symbol map. All arches provide it, after the patch.

Provide actual implementation for fegetenv, feenableexcept, fedisableexcept on aarch64.

Typo?

--- flt_rounds.pico ---
In file included from /opt/poudriere/jails/16c/usr/src/lib/libc/aarch64/gen/flt_rounds.c:29:
/opt/poudriere/jails/16c/usr/src/lib/msun/aarch64/fenv.h:97:1: error: expected identifier or '('
   97 | {
      | ^
1 error generated.
*** [flt_rounds.pico] Error code 1

make[4]: stopped making "all" in /opt/poudriere/jails/16c/usr/src/lib/libc
lib/msun/aarch64/fenv.h
97 ↗(On Diff #174993)

Typo?

--- flt_rounds.pico ---
In file included from /opt/poudriere/jails/16c/usr/src/lib/libc/aarch64/gen/flt_rounds.c:29:
/opt/poudriere/jails/16c/usr/src/lib/msun/aarch64/fenv.h:97:1: error: expected identifier or '('
   97 | {
      | ^
1 error generated.
*** [flt_rounds.pico] Error code 1

make[4]: stopped making "all" in /opt/poudriere/jails/16c/usr/src/lib/libc
--- lib/msun__L ---
/opt/poudriere/jails/16c/usr/src/lib/msun/aarch64/fenv.c:103:2: error: redefinition of 'fegetenv'
  103 | (fegetenv)(fenv_t *envp)
      |  ^
/opt/poudriere/jails/16c/usr/src/lib/msun/aarch64/fenv.c:79:2: note: previous definition is here
   79 | (fegetenv)(fenv_t *envp)
      |  ^
/opt/poudriere/jails/16c/usr/src/lib/msun/aarch64/fenv.c:111:31: error: incompatible pointer to integer conversion passing 'fenv_t *' (aka 'unsigned long *') to parameter of type 'int' [-Wint-conversion]
  111 |         return (__feenableexcept_int(envp));
      |                                      ^~~~
/opt/poudriere/jails/16c/usr/src/lib/msun/aarch64/fenv.h:241:26: note: passing argument to parameter '__mask' here
  241 | __feenableexcept_int(int __mask)
      |                          ^
/opt/poudriere/jails/16c/usr/src/lib/msun/aarch64/fenv.c:117:32: error: incompatible pointer to integer conversion passing 'fenv_t *' (aka 'unsigned long *') to parameter of type 'int' [-Wint-conversion]
  117 |         return (__fedisableexcept_int(envp));
      |                                       ^~~~
/opt/poudriere/jails/16c/usr/src/lib/msun/aarch64/fenv.h:252:27: note: passing argument to parameter '__mask' here
  252 | __fedisableexcept_int(int __mask)
      |                           ^
3 errors generated.

The version that builds with TARGET=arm64

now jail build fine, symbols presented in libm.so.5, try to build math consumers

Confirmed: it works for aarch64, finally.

math/py-numpy1
math/Imath
devel/boost-python-libs
builds fine now

devel/llvm20 (+flang)
still building and not failed yet

Just reminder: stable/15 is affected too

Ping? I want to fix this regression. If no feedback is provided, I plan to commit the change tomorrow.

This revision is now accepted and ready to land.Apr 8 2026, 2:25 PM

Dimitry, I am sorry, just committed a second before your approval.