Page MenuHomeFreeBSD

lib/msun: export arch-specific fenv methods
ClosedPublic

Authored by kib on Mon, Apr 6, 5:37 PM.
Tags
None
Referenced Files
F153021537: D56283.id174993.diff
Sat, Apr 18, 4:35 PM
F153020107: D56283.id174992.diff
Sat, Apr 18, 4:22 PM
F153016818: D56283.id.diff
Sat, Apr 18, 3:49 PM
F153006059: D56283.id175131.diff
Sat, Apr 18, 2:27 PM
Unknown Object (File)
Thu, Apr 16, 5:50 PM
Unknown Object (File)
Thu, Apr 16, 11:19 AM
Unknown Object (File)
Thu, Apr 16, 11:14 AM
Unknown Object (File)
Thu, Apr 16, 9:23 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.Mon, Apr 6, 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.Wed, Apr 8, 2:25 PM

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