--- a/external/gpl3/gcc/dist/libgcc/config/m68k/fpgnulib.c Sun Sep 07 04:08:23 2025 +0000 +++ b/external/gpl3/gcc/dist/libgcc/config/m68k/fpgnulib.c Sun Sep 07 19:20:57 2025 +1000 @@ -138,6 +138,7 @@ int return 0; } +#ifndef LIBCSOFTFLOAT /* convert unsigned int to double */ double __floatunsidf (unsigned long a1) @@ -411,6 +412,7 @@ long return __fixdfsi (foo); } +#endif #else /* EXTFLOAT */ /* We do not need these routines for coldfire, as it has no extended @@ -421,6 +423,7 @@ long We assume all numbers are normalized, don't do any rounding, etc. */ +#ifndef LIBCSOFTFLOAT /* Prototypes for the above in case we use them. */ double __floatunsidf (unsigned long); double __floatsidf (long); @@ -430,6 +433,7 @@ float __truncdfsf2 (double); long __fixdfsi (double); long __fixsfsi (float); long __cmpdf2 (double, double); +#endif int __unordxf2(long double a, long double b) @@ -447,6 +451,7 @@ int return 0; } +#ifndef LIBCSOFTFLOAT /* convert double to long double */ long double __extenddfxf2 (double d) @@ -664,5 +669,6 @@ long return __cmpdf2 ((double) x1, (double) x2); } +#endif #endif /* !__mcoldfire__ */ #endif /* EXTFLOAT */ --- a/external/gpl3/gcc/lib/libgcc/Makefile.inc Sun Sep 07 04:08:23 2025 +0000 +++ b/external/gpl3/gcc/lib/libgcc/Makefile.inc Sun Sep 07 19:20:57 2025 +1000 @@ -153,6 +153,10 @@ CPICFLAGS:= BUILDSYMLINKS+= ${DIST}/libgcc/config/m68k/fpgnulib.c fpgnulib.c BUILDSYMLINKS+= ${DIST}/libgcc/config/m68k/fpgnulib.c xfgnulib.c CPPFLAGS.xfgnulib.c+= -DEXTFLOAT=1 +. if ${MKLIBCSOFTFLOAT} != "no" +CPPFLAGS.fpgnulib.c+=-DLIBCSOFTFLOAT=1 +CPPFLAGS.xfgnulib.c+=-DLIBCSOFTFLOAT=1 +. endif .endif ${LIB2FUNCS} ${LIB2FUNCS_ST}: ${.CURDIR}/Makefile --- a/lib/libc/arch/m68k/Makefile.inc Sun Sep 07 04:08:23 2025 +0000 +++ b/lib/libc/arch/m68k/Makefile.inc Sun Sep 07 19:20:57 2025 +1000 @@ -7,9 +7,17 @@ ASM+= _lwp_getprivate.S mremap.S CPPFLAGS+= -I. # for assym.h .if ${MKSOFTFLOAT} != "no" +. if ${MKLIBCSOFTFLOAT} != "no" +. include +CPPFLAGS+= -DSOFTFLOAT +. if ${SOFTFLOAT_BITS} == "32" +CPPFLAGS+= -DSOFTFLOATBITS32 +. endif +. else #CPPFLAGS+= -DSOFTFLOAT_NEED_FIXUNS CPPFLAGS+= -DSOFTFLOAT -DSOFTFLOATM68K_FOR_GCC -. include +.include +. endif .elif ${MACHINE_ARCH} != "m68000" .PATH : ${ARCHDIR}/hardfloat . include "${ARCHDIR}/hardfloat/Makefile.inc" --- a/lib/libc/arch/m68k/gen/Makefile.inc Sun Sep 07 04:08:23 2025 +0000 +++ b/lib/libc/arch/m68k/gen/Makefile.inc Sun Sep 07 19:20:57 2025 +1000 @@ -23,8 +23,10 @@ SRCS+= signbitl_ieee754.c .endif SRCS+= ashlsi3.S ashrsi3.S \ - lshlsi3.S lshrsi3.S \ - negdf2.S negsf2.S + lshlsi3.S lshrsi3.S +.if ${MKSOFTFLOAT} == "no" || ${MKLIBCSOFTFLOAT} != "no" +SRCS+= negdf2.S negsf2.S +.endif SRCS+= bswap16.S bswap32.S bswap64.S SRCS+= _lwp.c CPPFLAGS._lwp.c += -D_LIBC_SOURCE --- a/lib/libc/compiler_rt/Makefile.inc Sun Sep 07 04:08:23 2025 +0000 +++ b/lib/libc/compiler_rt/Makefile.inc Sun Sep 07 19:20:57 2025 +1000 @@ -118,13 +118,16 @@ GENERIC_SRCS+= \ floatundidf.c \ floatundisf.c \ floatundixf.c \ - negdf2.c \ - negsf2.c \ powidf2.c \ powisf2.c \ powitf2.c \ powixf2.c +. if ${MKLIBCSOFTFLOAT} != "no" || ${MKSOFTFLOAT} == "no" +GENERIC_SRCS+= \ + negdf2.c \ + negsf2.c +. endif .endif # IEEE 754 only machines .if ${LIBC_MACHINE_ARCH} != "m68k" --- a/lib/libc/softfloat/Makefile.inc Sun Sep 07 04:08:23 2025 +0000 +++ b/lib/libc/softfloat/Makefile.inc Sun Sep 07 19:20:57 2025 +1000 @@ -9,8 +9,7 @@ CPPFLAGS+= -DSOFTFLOAT_FOR_GCC SRCS.softfloat= softfloat.c -SRCS.softfloat+=fpgetround.c fpsetround.c fpgetmask.c fpsetmask.c \ - fpgetsticky.c fpsetsticky.c +.include .if !empty(LIBC_MACHINE_ARCH:Mearm*) SRCS.softfloat+=__aeabi_dcmpeq.c __aeabi_fcmpeq.c --- a/lib/libc/softfloat/softfloat-specialize Sun Sep 07 04:08:23 2025 +0000 +++ b/lib/libc/softfloat/softfloat-specialize Sun Sep 07 19:20:57 2025 +1000 @@ -442,6 +442,7 @@ flag floatx80_is_signaling_nan( floatx80 } +#ifndef SOFTFLOAT_BITS32 /* ------------------------------------------------------------------------------- Returns the result of converting the extended double-precision floating- @@ -505,6 +506,7 @@ static floatx80 propagateFloatx80NaN( fl } #endif +#endif #ifdef FLOAT128 --- a/share/mk/bsd.own.mk Sun Sep 07 04:08:23 2025 +0000 +++ b/share/mk/bsd.own.mk Sun Sep 07 19:20:57 2025 +1000 @@ -1167,6 +1167,16 @@ MKSOFTFLOAT= yes SOFTFLOAT_BITS= 32 .endif +MKSOFTFLOAT?=no +# +# Prefer libc's softfloat.c +# +.if ${MKSOFTFLOAT} != "no" +MKLIBCSOFTFLOAT?= yes +.else +MKLIBCSOFTFLOAT= no +.endif + # # We want to build zfs only for amd64, aarch64 and sparc64 by default for now. # --- /dev/null 2025-09-07 19:37:02.389644418 +1000 +++ src/lib/libc/softfloat/Makefile.fenv.inc 2025-09-07 16:44:48.194123662 +1000 @@ -0,0 +1,10 @@ +# $NetBSD$ + +.PATH: ${.CURDIR}/softfloat + +CPPFLAGS+= -I${ARCHDIR}/softfloat -I${.CURDIR}/softfloat +CPPFLAGS+= -DSOFTFLOAT_FOR_GCC + +SRCS+= fpgetround.c fpsetround.c fpgetmask.c fpsetmask.c \ + fpgetsticky.c fpsetsticky.c +