From nobody Mon Apr 06 17:41:40 2026 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4fqGyG3j0xz6YR8w; Mon, 06 Apr 2026 17:48:06 +0000 (UTC) (envelope-from fluffy@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "R13" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4fqGyG1xMVz3Hrs; Mon, 06 Apr 2026 17:48:06 +0000 (UTC) (envelope-from fluffy@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775497686; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=kDLtqY3AuWrlGAEJ7OsHsRqcMtIPcCeRVcnjmcAPV2s=; b=R8rNBBdgBVfs/uYqDYfzx0CUJ2cgzB2ZxHhse39qgg+bCN3sEwLzNSs/L8uOFDb4ww59uN gcXj6THw3Md7vAsIQ9Go3FD+8l/NtOVHvNSQeDwjMXkiLCNSWQsl5GHVE1esjU0mG47kbT Sfyh8Gn7s7TiwD35i3x77PgNRtmy/4F+2mFqiSsIcbrLHNdxIEiYI9HGmKgXVr7Zb6hO3Z 0ddV5XSzIR7whSIjLGhcifN5n9hl/1vuSaJhKoUP6PidE+NNXMQtGHldhjgUe55hwk5QKY ERBVqZoeQasznlG7n+ggeo/73L8Nu+o4Gd6VXCOEC3lU9CEzgriyTOxsKE5tIA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775497686; a=rsa-sha256; cv=none; b=eEgugXy4TsFzXfy0qkhQrcPlOgKgWi4MrqIR352Yb3+42t34NW768//kIUr8Sdc39qqkcX xuzSieu8FseS1bfcYQq0OofucFZWdQqx2Ce0qPvVQHVAN0wzhMOotliEFDKMv0fR+9lHhB xaYfR4aDwV3TxuHaGgeoNwnA1tN76JiaVpe6S87UKw7LsiLsmOz4pkZnawsULPDru/Kk5X Oq/FJSt0ck6ijOaVj0QFog+fxEL/N1B8S5AnzY+PLDE04vKdsWhHVojShilWb0gyiSYo+h erTnm1tO6DkSdMnUnDFHTKGXz4xrmDavaZMhQ2iBw8zcqkYux9h91LMIv7P5nw== 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=1775497686; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=kDLtqY3AuWrlGAEJ7OsHsRqcMtIPcCeRVcnjmcAPV2s=; b=SZx0oy24B0yvJV0MsF/QvdOj8zcHbz+5j2CCt/uoevUGAmMXXRnYg2+wkpnbD0z6XdBfq2 6DwXESP86geRVqLD3JO0u/K/zGQlLXWWFaXgQezkbKjVT7XeO9+hp0flTnVi51j70rGKKI pwa5GaLTbhc2oooM/oHRIt5JzuVsg0CnYv4UZKBsI14YVAnQBm9PH24zhZOkZMlKskFuqk k8zGDdEHk8oXvxEimSXGvry+mv0rRWJf4LuFzCgH13k7XUVc8AMjVu/0qo6zM4oW9HHxXJ 5LWsO7cPzCYXje4dXBiPqDlpLieeKDrbvn912xBtru9HcGvBuq2xwsvGL+PI3g== Received: from [2a05:3580:e727:cd00::10:0] (unknown [IPv6:2a05:3580:e727:cd00:6028:73dc:5e69:9ca0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) (Authenticated sender: fluffy) by smtp.freebsd.org (Postfix) with ESMTPSA id 4fqGyF1yz9z1Cqy; Mon, 06 Apr 2026 17:48:05 +0000 (UTC) (envelope-from fluffy@FreeBSD.org) Date: Mon, 6 Apr 2026 20:41:40 +0300 From: Dima Panov To: Konstantin Belousov Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Message-ID: <724be016-85a3-4dfa-8b18-abcfe384b0fc@FreeBSD.org> In-Reply-To: References: <69caafbb.408c4.7b20a1e1@gitrepo.freebsd.org> <1f2ad4f0-a4ab-4f15-a779-5f1a6db9912b@FreeBSD.org> <8022afad-9cee-4ade-8b56-ef5b7feb6e16@FreeBSD.org> Subject: git: 3a01e1e1a50c - main - msun/aarch64: convert fenv functions to proper linkage List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="69d3f054_2eb141f2_d4c2" --69d3f054_2eb141f2_d4c2 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Content-Disposition: inline On 06.04.2026 20:05, Konstantin Belousov wrote: > On Mon, Apr 06, 2026 at 07:58:37PM +0300, Dima Panov wrote: > > > > > > On 06.04.2026 19:45, Konstantin Belousov wrote: > > > On Mon, Apr 06, 2026 at 07:25:18PM +0300, Dima Panov wrote: > > > > > > > > > > > > On 06.04.2026 19:07, Konstantin Belousov wrote: > > > > > On Mon, Apr 06, 2026 at 06:56:36PM +0300, Dima Panov wrote: > > > > > > Hello! > > > > > > > > > > > > This breaks most of libm consumers > > > > > > > > > > > > llvm/flang: > > > > > > =============== > > > > > > FAILED: [code=1] bin/flang-20 > > > > > > : && /usr/local/libexec/ccache/c++ -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing -isystem /usr/local/include -fPIC -fno-semantic-interposition -fvisibility-inline > > > > > > s-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-s > > > > > > emi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupport > > > > > > ed -fdiagnostics-color -ffunction-sections -fdata-sections -Wno-deprecated-copy -Wno-string-conversion -Wno-ctad-maybe-unsupported -Wno-unused-command-line-argument -Wstring-conversion -Wcover > > > > > > ed-switch-default -Wno-nested-anon-types -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing -isystem /usr/local/include -DNDEBUG -Wl,--color-diagnostics -Wl,--expor > > > > > > t-dynamic -Wl,-z,origin -Wl,--gc-sections -Xlinker --dependency-file=tools/flang/tools/flang-driver/CMakeFiles/flang.dir/link.d tools/flang/tools/flang-driver/CMakeFiles/flang.dir/driver.cpp.o tools/ > > > > > > flang/tools/flang-driver/CMakeFiles/flang.dir/fc1_main.cpp.o -o bin/flang-20 -L/wrkdirs/usr/ports/devel/llvm20/work-default/.build/./lib -Wl,-rpath,"\$ORIGIN/../lib:/wrkdirs/usr/ports/devel/llvm20/work- > > > > > > default/.build/./lib:/wrkdirs/usr/ports/devel/llvm20/work-default/.build/lib:" -lpthread lib/libflangFrontend.a lib/libflangFrontendTool.a lib/libFortranLower.a lib/libFortranSemantics.a lib/libFo > > > > > > rtranSupport.a lib/libflangPasses.a lib/libHLFIRTransforms.a lib/libFIRTransforms.a lib/libFIROpenACCSupport.a lib/libFlangOpenMPTransforms.a lib/libFIRCodeGen.a lib/libFIRAnalysis.a lib/libFIRB > > > > > > uilder.a lib/libCUFDialect.a lib/libFortranEvaluate.a lib/libFortranParser.a lib/libFortranCommon.a lib/libFortranDecimal.a lib/libFIRSupport.a lib/libHLFIRDialect.a lib/libFIRDialect.a lib/lib > > > > > > FIRDialectSupport.a lib/libCUFAttrs.a lib/libclang-cpp.so.20.1 lib/libMLIR.so.20.1 lib/libLLVM.so.20.1 && : > > > > > > ld: error: undefined symbol: feholdexcept > > > > > > > > > > This is strange. Could you show me the output of e.g. > > > > > readelf --dyn_syms /lib/libm.so.5 | grep feholdexcept > > > > > The best would be the output from the command like above for each missing > > > > > symbol. > > > > > > > > missing :( > > > > > > > > FreeBSD 16.0-CURRENT #0 main-cf1f21572897: Mon Apr 6 13:45:02 MSK 2026 > > > > > > > > root@aarch64:/ # readelf --dyn-syms /lib/libm.so.5 | grep feholdexcept > > > > root@aarch64:/ # > > > Hm, ok, perhaps I understand. > > > These symbols where never exported from libm, and it just happens that > > > they were compiled into the binaries itself due to extern inline. > > > So the proper fix for consumers that want the symbols is to export them > > > from libm.so. > > > > > > > > > > > full list of symbols: > > > > > > > > Symbol table '.dynsym' contains 306 entries: > > > > > > It is practically impossible to get the missed symbols from the list of > > > present symbols. Try this, if there is something else missed, add the > > > symbols to msun/aarch64/Symbol.map. I did not even tried to (cross-) > > > compile. > > > > > > I will think how to get the complete list to export, meantime. > > > This should also be problem on any arch that provides non-standard fenv > > > functions. > > > > > > commit 7573286180010304ca982d09ce5a980740e1e35e > > > Author: Konstantin Belousov > > > Date: Mon Apr 6 19:41:23 2026 +0300 > > > > > > lib/msun: export arch-specific fenv methods > > > > > > diff --git a/lib/msun/Makefile b/lib/msun/Makefile > > > index 5112337f6297..b6e77fed5d9c 100644 > > > --- a/lib/msun/Makefile > > > +++ b/lib/msun/Makefile > > > @@ -115,6 +115,10 @@ LIBC_ARCH=${MACHINE_CPUARCH} > > > CFLAGS+= -I${.CURDIR}/src -I${LIBC_SRCTOP}/include \ > > > -I${LIBC_SRCTOP}/${LIBC_ARCH} > > > SYM_MAPS+= ${.CURDIR}/Symbol.map > > > +ARCH_MAP= ${.CURDIR}/${LIBC_ARCH}/Symbol.map > > > +.if exists(${ARCH_MAP}) > > > +SYM_MAPS+= ${ARCH_MAP} > > > +.endif > > > > > > VERSION_DEF= ${LIBC_SRCTOP}/Versions.def > > > SYMBOL_MAPS= ${SYM_MAPS} > > > diff --git a/lib/msun/aarch64/Symbol.map b/lib/msun/aarch64/Symbol.map > > > new file mode 100644 > > > index 000000000000..d24d7820ba98 > > > --- /dev/null > > > +++ b/lib/msun/aarch64/Symbol.map > > > @@ -0,0 +1,5 @@ > > > +FBSD_1.9 { > > > + fegetenv; > > > + feholdexcept; > > > + feraiseexcept; > > > +}; > > > > May be better way is repeat map from msun/arm/Symbol.map? amd64 is also equal to it here. > > FBSD_1.9 { > > fesetexceptflag; > > feraiseexcept; > > fegetenv; > > feholdexcept; > > feupdateenv; > > feenableexcept; > > fedisableexcept; > > fegetexcept; > > }; > > > > Started build with your diff anyway, will see on result > > Indeed. Also I suspect that msun/arm/Makefile.inc needs a fix to not list > the Symbol.map twice, it is relevant for lib32 on aarch64. Updated patch > below. > > commit 3a280c3bae0b3b9b76c19259ef9e7890fb7e38f1 > Author: Konstantin Belousov > Date: Mon Apr 6 19:41:23 2026 +0300 > > lib/msun: export arch-specific fenv methods > > Reported by: fluffy > > diff --git a/lib/msun/Makefile b/lib/msun/Makefile > index 5112337f6297..b6e77fed5d9c 100644 > --- a/lib/msun/Makefile > +++ b/lib/msun/Makefile > @@ -115,6 +115,10 @@ LIBC_ARCH=${MACHINE_CPUARCH} > CFLAGS+= -I${.CURDIR}/src -I${LIBC_SRCTOP}/include \ > -I${LIBC_SRCTOP}/${LIBC_ARCH} > SYM_MAPS+= ${.CURDIR}/Symbol.map > +ARCH_MAP= ${.CURDIR}/${LIBC_ARCH}/Symbol.map > +.if exists(${ARCH_MAP}) > +SYM_MAPS+= ${ARCH_MAP} > +.endif > > VERSION_DEF= ${LIBC_SRCTOP}/Versions.def > SYMBOL_MAPS= ${SYM_MAPS} > 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/arm/Makefile.inc b/lib/msun/arm/Makefile.inc > index 6e3ddb351dd3..e155f1a2cae4 100644 > --- a/lib/msun/arm/Makefile.inc > +++ b/lib/msun/arm/Makefile.inc > @@ -1,5 +1,4 @@ > LDBL_PREC = 53 > -SYM_MAPS += ${.CURDIR}/arm/Symbol.map > > .if defined(CPUTYPE) && ${CPUTYPE:M*soft*} != "" > ARCH_SRCS = fenv-softfp.c fenv-vfp.c --- lib/msun__L --- --- libm.so.5.full --- Building shared library libm.so.5 cc -target aarch64-unknown-freebsd16.0 --sysroot=/usr/obj/opt/poudriere/jails/16c/usr/src/arm64.aarch64/tmp -B/usr/obj/opt/poudriere/jails/16c/usr/src/arm64.aarch64/tmp/usr/bin -Wl,-zrelro -Wl,--versio n-script=Version.map -Wl,--no-undefined-version -fstack-protector-strong -shared -Wl,-x -Wl,--fatal-warnings -Wl,--warn-shared-textrel -o libm.so.5.full -Wl,-soname,libm.so.5 b_tgamma.pico e_acos.pi co e_acosf.pico e_acosh.pico e_acoshf.pico e_asin.pico e_asinf.pico e_atan2.pico e_atan2f.pico e_atanh.pico e_atanhf.pico e_cosh.pico e_coshf.pico e_exp.pico e_expf.pico e_fmod.pico e_fmodf.pico e_gamma .pico e_gamma_r.pico e_gammaf.pico e_gammaf_r.pico e_hypot.pico e_hypotf.pico e_j0.pico e_j0f.pico e_j1.pico e_j1f.pico e_jn.pico e_jnf.pico e_lgamma.pico e_lgamma_r.pico e_lgammaf.pico e_lgammaf_r.pico e_log.pico e_log10.pico e_log10f.pico e_log2.pico e_log2f.pico e_logf.pico e_pow.pico e_powf.pico e_rem_pio2.pico e_rem_pio2f.pico e_remainder.pico e_remainderf.pico e_scalb.pico e_scalbf.pico e_sinh.p ico e_sinhf.pico e_sqrt.pico e_sqrtf.pico fenv.pico k_cos.pico k_cosf.pico k_exp.pico k_expf.pico k_rem_pio2.pico k_sin.pico k_sinf.pico k_tan.pico k_tanf.pico s_asinh.pico s_asinhf.pico s_atan.pico s_a tanf.pico s_carg.pico s_cargf.pico s_cargl.pico s_cbrt.pico s_cbrtf.pico s_ceil.pico s_ceilf.pico s_clog.pico s_clogf.pico s_copysign.pico s_copysignf.pico s_cos.pico s_cosf.pico s_csqrt.pico s_csqrtf.p ico s_erf.pico s_erff.pico s_exp2.pico s_exp2f.pico s_expm1.pico s_expm1f.pico s_fabsf.pico s_fdim.pico s_finite.pico s_finitef.pico s_floor.pico s_floorf.pico s_fma.pico s_fmaf.pico s_fmax.pico s_fmaxf .pico s_fmaximum.pico s_fmaximumf.pico s_fmin.pico s_fminf.pico s_fminimum.pico s_fminimumf.pico s_frexp.pico s_frexpf.pico s_ilogb.pico s_ilogbf.pico s_ilogbl.pico s_isfinite.pico s_isnan.pico s_isnorm al.pico s_llrint.pico s_llrintf.pico s_llround.pico s_llroundf.pico s_llroundl.pico s_log1p.pico s_log1pf.pico s_logb.pico s_logbf.pico s_lrint.pico s_lrintf.pico s_lround.pico s_lroundf.pico s_lroundl. pico s_modff.pico s_nan.pico s_nearbyint.pico s_nextafter.pico s_nextafterf.pico s_nexttowardf.pico s_remquo.pico s_remquof.pico s_rint.pico s_rintf.pico s_round.pico s_roundf.pico s_scalbln.pico s_scal bn.pico s_scalbnf.pico s_signbit.pico s_signgam.pico s_significand.pico s_significandf.pico s_sin.pico s_sincos.pico s_sincosf.pico s_sinf.pico s_tan.pico s_tanf.pico s_tanh.pico s_tanhf.pico s_tgammaf. pico s_trunc.pico s_truncf.pico w_cabs.pico w_cabsf.pico w_drem.pico w_dremf.pico s_cospi.pico s_cospif.pico s_sinpi.pico s_sinpif.pico s_tanpi.pico s_tanpif.pico s_copysignl.pico s_fabsl.pico s_llrintl .pico s_lrintl.pico s_modfl.pico b_tgammal.pico catrigl.pico e_acoshl.pico e_acosl.pico e_asinl.pico e_atan2l.pico e_atanhl.pico e_coshl.pico e_fmodl.pico e_hypotl.pico e_lgammal.pico e_lgammal_r.pico e _powl.pico e_remainderl.pico e_sinhl.pico e_sqrtl.pico invtrig.pico k_cosl.pico k_sinl.pico k_tanl.pico s_asinhl.pico s_atanl.pico s_cbrtl.pico s_ceill.pico s_cexpl.pico s_clogl.pico s_cosl.pico s_cospi l.pico s_cprojl.pico s_csqrtl.pico s_erfl.pico s_exp2l.pico s_expl.pico s_floorl.pico s_fmal.pico s_fmaxl.pico s_fmaximuml.pico s_fminl.pico s_fminimuml.pico s_frexpl.pico s_logbl.pico s_logl.pico s_nan l.pico s_nextafterl.pico s_nexttoward.pico s_remquol.pico s_rintl.pico s_roundl.pico s_scalbnl.pico s_sinl.pico s_sincosl.pico s_sinpil.pico s_tanhl.pico s_tanl.pico s_tanpil.pico s_truncl.pico w_cabsl. pico catrig.pico catrigf.pico s_ccosh.pico s_ccoshf.pico s_cexp.pico s_cexpf.pico s_cimag.pico s_cimagf.pico s_cimagl.pico s_conj.pico s_conjf.pico s_conjl.pico s_cpow.pico s_cpowf.pico s_cpowl.pico s_c proj.pico s_cprojf.pico s_creal.pico s_crealf.pico s_creall.pico s_csinh.pico s_csinhf.pico s_ctanh.pico s_ctanhf.pico ld: error: version script assignment of 'FBSD_1.9' to symbol 'feenableexcept' failed: symbol not defined ld: error: version script assignment of 'FBSD_1.9' to symbol 'fedisableexcept' failed: symbol not defined ld: error: version script assignment of 'FBSD_1.9' to symbol 'fegetexcept' failed: symbol not defined cc: error: linker command failed with exit code 1 (use -v to see invocation) *** [libm.so.5.full] Error code 1 make[4]: stopped making "all" in /opt/poudriere/jails/16c/usr/src/lib/msun make[4]: 1 error make[4]: stopped making "all" in /opt/poudriere/jails/16c/usr/src/lib/msun make[3]: stopped making "_prebuild_libs" in /opt/poudriere/jails/16c/usr/src Will restart build with deleted these 3 symbols from map -- Sincerely, Dima (fluffy@FreeBSD.org, https://t.me/FluffyBSD, @fluffy:matrix-dev.freebsd.org) (desktop, kde, x11, office, ports-secteam)@FreeBSD team --69d3f054_2eb141f2_d4c2 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline


On 06.04.2026 20:05, Konstantin Belousov wrote:
=
On Mon, Apr 06, 2026 at 07:58:37PM +0300, D= ima Panov wrote:


On 06.04.202= 6 19:45, Konstantin Belousov wrote:
On = Mon, Apr 06, 2026 at 07:25:18PM +0300, Dima Panov wrote:


On 06.04.2026 19:07, Konstantin Belousov wrot= e:
On Mon, Apr 06, 2026 at 06:56:36PM += 0300, Dima Panov wrote:
Hello=21
<= br>This breaks most of libm consumers

llvm/flang:
=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
=46AILED: =5Bcode=3D1=5D bin/flang-= 20
: && /usr/local/libexec/ccache/c++ -O2 -pipe -fstack-prote= ctor-strong -isystem /usr/local/include -fno-strict-aliasing -isystem /us= r/local/include -fPIC -fno-semantic-interposition -fvisibility-inline s-hidden -Werror=3Ddate-time -Werror=3Dunguarded-availability-new -Wall = -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field= -initializers -pedantic -Wno-long-long -Wc++98-compat-extra-s
emi -Wi= mplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-vir= tual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversio= n -Wmisleading-indentation -Wctad-maybe-unsupport
ed -fdiagnostics-co= lor -ffunction-sections -fdata-sections -Wno-deprecated-copy -Wno-string-= conversion -Wno-ctad-maybe-unsupported -Wno-unused-command-line-argument = -Wstring-conversion -Wcover
ed-switch-default -Wno-nested-anon-types = -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-stric= t-aliasing -isystem /usr/local/include -DNDEBUG -Wl,--color-diagnostics -= Wl,--expor
t-dynamic -Wl,-z,origin -Wl,--gc-sections -Xlinker --depen= dency-file=3Dtools/flang/tools/flang-driver/CMake=46iles/flang.dir/link.d= tools/flang/tools/flang-driver/CMake=46iles/flang.dir/driver.cpp.o tools= /
flang/tools/flang-driver/CMake=46iles/flang.dir/fc1=5Fmain.cpp.o -o= bin/flang-20 -L/wrkdirs/usr/ports/devel/llvm20/work-default/.build/./lib= -Wl,-rpath,=22=5C=24ORIGIN/../lib:/wrkdirs/usr/ports/devel/llvm20/work- =
default/.build/./lib:/wrkdirs/usr/ports/devel/llvm20/work-default/.bu= ild/lib:=22 -lpthread lib/libflang=46rontend.a lib/libflang=46rontendTool= .a lib/lib=46ortranLower.a lib/lib=46ortranSemantics.a lib/lib=46o
rt= ranSupport.a lib/libflangPasses.a lib/libHL=46IRTransforms.a lib/lib=46IR= Transforms.a lib/lib=46IROpenACCSupport.a lib/lib=46langOpenMPTransforms.= a lib/lib=46IRCodeGen.a lib/lib=46IRAnalysis.a lib/lib=46IRB
uilder.a= lib/libCU=46Dialect.a lib/lib=46ortranEvaluate.a lib/lib=46ortranParser.= a lib/lib=46ortranCommon.a lib/lib=46ortranDecimal.a lib/lib=46IRSupport.= a lib/libHL=46IRDialect.a lib/lib=46IRDialect.a lib/lib
=46IRDialectS= upport.a lib/libCU=46Attrs.a lib/libclang-cpp.so.20.1 lib/libMLIR.so.20.1= lib/libLLVM.so.20.1 && :
ld: error: undefined symbol: fehold= except

This is strange. Could you show me the outpu= t of e.g.
readelf --dyn=5Fsyms /lib/libm.so.5 =7C grep feholdexcept <= br>The best would be the output from the command like above for each miss= ing
symbol.

missing :(

=46reeBSD 16.0-= CURRENT =230 main-cf1f21572897: Mon Apr 6 13:45:02 MSK 2026

root= =40aarch64:/ =23 readelf --dyn-syms /lib/libm.so.5 =7C grep feholdexcept =
root=40aarch64:/ =23
Hm, ok, perhaps I understand. <= br>These symbols where never exported from libm, and it just happens that=
they were compiled into the binaries itself due to extern inline. So the proper fix for consumers that want the symbols is to export them=
from libm.so.


full list = of symbols:

Symbol table '.dynsym' contains 306 entries:

It is practically impossible to get the missed symbols fro= m the list of
present symbols. Try this, if there is something else m= issed, add the
symbols to msun/aarch64/Symbol.map. I did not even tri= ed to (cross-)
compile.

I will think how to get the complete= list to export, meantime.
This should also be problem on any arch th= at provides non-standard fenv
functions.

commit 757328618001= 0304ca982d09ce5a980740e1e35e
Author: Konstantin Belousov <kib=40=46= reeBSD.org>
Date: Mon Apr 6 19:41:23 2026 +0300

lib/msun:= export arch-specific fenv methods

diff --git a/lib/msun/Makefil= e b/lib/msun/Makefile
index 5112337f6297..b6e77fed5d9c 100644
---= a/lib/msun/Makefile
+++ b/lib/msun/Makefile
=40=40 -115,6 +115,1= 0 =40=40 LIBC=5FARCH=3D=24=7BMACHINE=5FCPUARCH=7D
C=46LAGS+=3D -I=24=7B= .CURDIR=7D/src -I=24=7BLIBC=5FSRCTOP=7D/include =5C
-I=24=7BLIBC=5FSR= CTOP=7D/=24=7BLIBC=5FARCH=7D
SYM=5FMAPS+=3D =24=7B.CURDIR=7D/Symbol.m= ap
+ARCH=5FMAP=3D =24=7B.CURDIR=7D/=24=7BLIBC=5FARCH=7D/Symbol.map +.if exists(=24=7BARCH=5FMAP=7D)
+SYM=5FMAPS+=3D =24=7BARCH=5FMAP=7D=
+.endif

VERSION=5FDE=46=3D =24=7BLIBC=5FSRCTOP=7D/Versions.= def
SYMBOL=5FMAPS=3D =24=7BSYM=5FMAPS=7D
diff --git a/lib/msun/aa= rch64/Symbol.map b/lib/msun/aarch64/Symbol.map
new file mode 100644 <= br>index 000000000000..d24d7820ba98
--- /dev/null
+++ b/lib/msun/= aarch64/Symbol.map
=40=40 -0,0 +1,5 =40=40
+=46BSD=5F1.9 =7B
= + fegetenv;
+ feholdexcept;
+ feraiseexcept;
+=7D;

May be better way is repeat map from msun/arm/Symbol.map=3F a= md64 is also equal to it here.
=46BSD=5F1.9 =7B
fesetexceptflag; =
feraiseexcept;
fegetenv;
feholdexcept;
feupdateenv;
f= eenableexcept;
fedisableexcept;
fegetexcept;
=7D;

St= arted build with your diff anyway, will see on result
<= br>Indeed. Also I suspect that msun/arm/Makefile.inc needs a fix to not l= ist
the Symbol.map twice, it is relevant for lib32 on aarch64. Update= d patch
below.

commit 3a280c3bae0b3b9b76c19259ef9e7890fb7e38= f1
Author: Konstantin Belousov <kib=40=46reeBSD.org>
Date: = Mon Apr 6 19:41:23 2026 +0300

lib/msun: export arch-specific fen= v methods

Reported by: fluffy

diff --git a/lib/msun/Mak= efile b/lib/msun/Makefile
index 5112337f6297..b6e77fed5d9c 100644 --- a/lib/msun/Makefile
+++ b/lib/msun/Makefile
=40=40 -115,6 +1= 15,10 =40=40 LIBC=5FARCH=3D=24=7BMACHINE=5FCPUARCH=7D
C=46LAGS+=3D -I= =24=7B.CURDIR=7D/src -I=24=7BLIBC=5FSRCTOP=7D/include =5C
-I=24=7BLI= BC=5FSRCTOP=7D/=24=7BLIBC=5FARCH=7D
SYM=5FMAPS+=3D =24=7B.CURDIR=7D/S= ymbol.map
+ARCH=5FMAP=3D =24=7B.CURDIR=7D/=24=7BLIBC=5FARCH=7D/Symbol= .map
+.if exists(=24=7BARCH=5FMAP=7D)
+SYM=5FMAPS+=3D =24=7BARCH=5F= MAP=7D
+.endif

VERSION=5FDE=46=3D =24=7BLIBC=5FSRCTOP=7D/Ver= sions.def
SYMBOL=5FMAPS=3D =24=7BSYM=5FMAPS=7D
diff --git a/lib/m= sun/aarch64/Symbol.map b/lib/msun/aarch64/Symbol.map
new file mode 10= 0644
index 000000000000..b468c814ff06
--- /dev/null
+++ b/lib= /msun/aarch64/Symbol.map
=40=40 -0,0 +1,10 =40=40
+=46BSD=5F1.9 =7B=
+ fesetexceptflag;
+ feraiseexcept;
+ fegetenv;
+ fehold= except;
+ feupdateenv;
+ feenableexcept;
+ fedisableexcept; <= br>+ fegetexcept;
+=7D;
diff --git a/lib/msun/arm/Makefile.inc b/= lib/msun/arm/Makefile.inc
index 6e3ddb351dd3..e155f1a2cae4 100644 --- a/lib/msun/arm/Makefile.inc
+++ b/lib/msun/arm/Makefile.inc
= =40=40 -1,5 +1,4 =40=40
LDBL=5FPREC =3D 53
-SYM=5FMAPS +=3D =24=7B= .CURDIR=7D/arm/Symbol.map

.if defined(CPUTYPE) && =24=7B= CPUTYPE:M*soft*=7D =21=3D =22=22
ARCH=5FSRCS =3D fenv-softfp.c fenv-v= fp.c


--- lib/msun=5F=5FL ---
--- libm.so.5= .full ---
Building shared library libm.so.5
cc -target aarch64-un= known-freebsd16.0 --sysroot=3D/usr/obj/opt/poudriere/jails/16c/usr/src/ar= m64.aarch64/tmp -B/usr/obj/opt/poudriere/jails/16c/usr/src/arm64.aarch64/= tmp/usr/bin -Wl,-zrelro -Wl,--versio
n-script=3DVersion.map -Wl,--no-= undefined-version -fstack-protector-strong -shared -Wl,-x -Wl,--fatal-war= nings -Wl,--warn-shared-textrel -o libm.so.5.full -Wl,-soname,libm.so.5 b= =5Ftgamma.pico e=5Facos.pi
co e=5Facosf.pico e=5Facosh.pico e=5Facosh= f.pico e=5Fasin.pico e=5Fasinf.pico e=5Fatan2.pico e=5Fatan2f.pico e=5Fat= anh.pico e=5Fatanhf.pico e=5Fcosh.pico e=5Fcoshf.pico e=5Fexp.pico e=5Fex= pf.pico e=5Ffmod.pico e=5Ffmodf.pico e=5Fgamma
.pico e=5Fgamma=5Fr.pi= co e=5Fgammaf.pico e=5Fgammaf=5Fr.pico e=5Fhypot.pico e=5Fhypotf.pico e=5F= j0.pico e=5Fj0f.pico e=5Fj1.pico e=5Fj1f.pico e=5Fjn.pico e=5Fjnf.pico e=5F= lgamma.pico e=5Flgamma=5Fr.pico e=5Flgammaf.pico e=5Flgammaf=5Fr.pico e=5Flog.pico e=5Flog10.pico e=5Flog10f.pico e=5Flog2.pico e=5Flog2f.pic= o e=5Flogf.pico e=5Fpow.pico e=5Fpowf.pico e=5Frem=5Fpio2.pico e=5Frem=5F= pio2f.pico e=5Fremainder.pico e=5Fremainderf.pico e=5Fscalb.pico e=5Fscal= bf.pico e=5Fsinh.p
ico e=5Fsinhf.pico e=5Fsqrt.pico e=5Fsqrtf.pico fe= nv.pico k=5Fcos.pico k=5Fcosf.pico k=5Fexp.pico k=5Fexpf.pico k=5Frem=5Fp= io2.pico k=5Fsin.pico k=5Fsinf.pico k=5Ftan.pico k=5Ftanf.pico s=5Fasinh.= pico s=5Fasinhf.pico s=5Fatan.pico s=5Fa
tanf.pico s=5Fcarg.pico s=5F= cargf.pico s=5Fcargl.pico s=5Fcbrt.pico s=5Fcbrtf.pico s=5Fceil.pico s=5F= ceilf.pico s=5Fclog.pico s=5Fclogf.pico s=5Fcopysign.pico s=5Fcopysignf.p= ico s=5Fcos.pico s=5Fcosf.pico s=5Fcsqrt.pico s=5Fcsqrtf.p
ico s=5Fer= f.pico s=5Ferff.pico s=5Fexp2.pico s=5Fexp2f.pico s=5Fexpm1.pico s=5Fexpm= 1f.pico s=5Ffabsf.pico s=5Ffdim.pico s=5Ffinite.pico s=5Ffinitef.pico s=5F= floor.pico s=5Ffloorf.pico s=5Ffma.pico s=5Ffmaf.pico s=5Ffmax.pico s=5Ff= maxf
.pico s=5Ffmaximum.pico s=5Ffmaximumf.pico s=5Ffmin.pico s=5Ffmi= nf.pico s=5Ffminimum.pico s=5Ffminimumf.pico s=5Ffrexp.pico s=5Ffrexpf.pi= co s=5Filogb.pico s=5Filogbf.pico s=5Filogbl.pico s=5Fisfinite.pico s=5Fi= snan.pico s=5Fisnorm
al.pico s=5Fllrint.pico s=5Fllrintf.pico s=5Fllr= ound.pico s=5Fllroundf.pico s=5Fllroundl.pico s=5Flog1p.pico s=5Flog1pf.p= ico s=5Flogb.pico s=5Flogbf.pico s=5Flrint.pico s=5Flrintf.pico s=5Flroun= d.pico s=5Flroundf.pico s=5Flroundl.
pico s=5Fmodff.pico s=5Fnan.pico= s=5Fnearbyint.pico s=5Fnextafter.pico s=5Fnextafterf.pico s=5Fnexttoward= f.pico s=5Fremquo.pico s=5Fremquof.pico s=5Frint.pico s=5Frintf.pico s=5F= round.pico s=5Froundf.pico s=5Fscalbln.pico s=5Fscal
bn.pico s=5Fscal= bnf.pico s=5Fsignbit.pico s=5Fsigngam.pico s=5Fsignificand.pico s=5Fsigni= ficandf.pico s=5Fsin.pico s=5Fsincos.pico s=5Fsincosf.pico s=5Fsinf.pico = s=5Ftan.pico s=5Ftanf.pico s=5Ftanh.pico s=5Ftanhf.pico s=5Ftgammaf.
= pico s=5Ftrunc.pico s=5Ftruncf.pico w=5Fcabs.pico w=5Fcabsf.pico w=5Fdrem= .pico w=5Fdremf.pico s=5Fcospi.pico s=5Fcospif.pico s=5Fsinpi.pico s=5Fsi= npif.pico s=5Ftanpi.pico s=5Ftanpif.pico s=5Fcopysignl.pico s=5Ffabsl.pic= o s=5Fllrintl
.pico s=5Flrintl.pico s=5Fmodfl.pico b=5Ftgammal.pico c= atrigl.pico e=5Facoshl.pico e=5Facosl.pico e=5Fasinl.pico e=5Fatan2l.pico= e=5Fatanhl.pico e=5Fcoshl.pico e=5Ffmodl.pico e=5Fhypotl.pico e=5Flgamma= l.pico e=5Flgammal=5Fr.pico e
=5Fpowl.pico e=5Fremainderl.pico e=5Fsi= nhl.pico e=5Fsqrtl.pico invtrig.pico k=5Fcosl.pico k=5Fsinl.pico k=5Ftanl= .pico s=5Fasinhl.pico s=5Fatanl.pico s=5Fcbrtl.pico s=5Fceill.pico s=5Fce= xpl.pico s=5Fclogl.pico s=5Fcosl.pico s=5Fcospi
l.pico s=5Fcprojl.pic= o s=5Fcsqrtl.pico s=5Ferfl.pico s=5Fexp2l.pico s=5Fexpl.pico s=5Ffloorl.p= ico s=5Ffmal.pico s=5Ffmaxl.pico s=5Ffmaximuml.pico s=5Ffminl.pico s=5Ffm= inimuml.pico s=5Ffrexpl.pico s=5Flogbl.pico s=5Flogl.pico s=5Fnan
l.p= ico s=5Fnextafterl.pico s=5Fnexttoward.pico s=5Fremquol.pico s=5Frintl.pi= co s=5Froundl.pico s=5Fscalbnl.pico s=5Fsinl.pico s=5Fsincosl.pico s=5Fsi= npil.pico s=5Ftanhl.pico s=5Ftanl.pico s=5Ftanpil.pico s=5Ftruncl.pico w=5F= cabsl.
pico catrig.pico catrigf.pico s=5Fccosh.pico s=5Fccoshf.pico s= =5Fcexp.pico s=5Fcexpf.pico s=5Fcimag.pico s=5Fcimagf.pico s=5Fcimagl.pic= o s=5Fconj.pico s=5Fconjf.pico s=5Fconjl.pico s=5Fcpow.pico s=5Fcpowf.pic= o s=5Fcpowl.pico s=5Fc
proj.pico s=5Fcprojf.pico s=5Fcreal.pico s=5Fc= realf.pico s=5Fcreall.pico s=5Fcsinh.pico s=5Fcsinhf.pico s=5Fctanh.pico = s=5Fctanhf.pico
ld: error: version script assignment of '=46BSD=5F1.9= ' to symbol 'feenableexcept' failed: symbol not defined
ld: error: ve= rsion script assignment of '=46BSD=5F1.9' to symbol 'fedisableexcept' fai= led: symbol not defined
ld: error: version script assignment of '=46B= SD=5F1.9' to symbol 'fegetexcept' failed: symbol not defined
cc: erro= r: linker command failed with exit code 1 (use -v to see invocation)
= *** =5Blibm.so.5.full=5D Error code 1

make=5B4=5D: stopped makin= g =22all=22 in /opt/poudriere/jails/16c/usr/src/lib/msun
make=5B4=5D:= 1 error

make=5B4=5D: stopped making =22all=22 in /opt/poudriere= /jails/16c/usr/src/lib/msun

make=5B3=5D: stopped making =22=5Fpr= ebuild=5Flibs=22 in /opt/poudriere/jails/16c/usr/src


Will r= estart build with deleted these 3 symbols from map

--
Sincer= ely,
Dima (fluffy=40=46reeBSD.org, https://t.me/=46luffyBSD, =40fluff= y:matrix-dev.freebsd.org)
(desktop, kde, x11, office, ports-secteam)=40= =46reeBSD team

--69d3f054_2eb141f2_d4c2--