--- a/external/gpl3/gcc/dist/libgcc/config/m68k/fpgnulib.c Tue Sep 02 00:24:10 2025 +0000 +++ b/external/gpl3/gcc/dist/libgcc/config/m68k/fpgnulib.c Wed Sep 03 11:42:21 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 @@ -447,6 +449,7 @@ int return 0; } +#ifndef LIBCSOFTFLOAT /* convert double to long double */ long double __extenddfxf2 (double d) @@ -615,6 +618,7 @@ long double { return (double) x1 / (double) x2; } +#endif long double __negxf2 (long double x1) @@ -628,11 +632,13 @@ long return __cmpdf2 ((double) x1, (double) x2); } +#ifndef LIBCSOFTFLOAT long __eqxf2 (long double x1, long double x2) { return __cmpdf2 ((double) x1, (double) x2); } +#endif long __nexf2 (long double x1, long double x2) @@ -640,6 +646,7 @@ long return __cmpdf2 ((double) x1, (double) x2); } +#ifndef LIBCSOFTFLOAT long __ltxf2 (long double x1, long double x2) { @@ -651,6 +658,7 @@ long { return __cmpdf2 ((double) x1, (double) x2); } +#endif long __gtxf2 (long double x1, long double x2) --- a/external/gpl3/gcc/dist/libgcc/config/m68k/lb1sf68.S Tue Sep 02 00:24:10 2025 +0000 +++ b/external/gpl3/gcc/dist/libgcc/config/m68k/lb1sf68.S Wed Sep 03 11:42:21 2025 +1000 @@ -668,11 +668,13 @@ ROUND_TO_MINUS = 3 | round result tow | Entry points: +#ifndef LIBCSOFTFLOAT .globl SYM (__adddf3) .globl SYM (__subdf3) .globl SYM (__muldf3) .globl SYM (__divdf3) .globl SYM (__negdf2) +#endif .globl SYM (__cmpdf2) .globl SYM (__cmpdf2_internal) .hidden SYM (__cmpdf2_internal) @@ -744,6 +746,7 @@ Ld$div$0: | in the register pair d0-d1. They also preserve all registers except | d0-d1 and a0-a1. +#ifndef LIBCSOFTFLOAT |============================================================================= | __subdf3 |============================================================================= @@ -2296,6 +2299,7 @@ 1: PICLEA SYM (_fpCCR),a0 rts 2: bclr IMM (31),d0 bra 1b +#endif |============================================================================= | __cmpdf2 --- a/external/gpl3/gcc/lib/libgcc/Makefile.inc Tue Sep 02 00:24:10 2025 +0000 +++ b/external/gpl3/gcc/lib/libgcc/Makefile.inc Wed Sep 03 11:42:21 2025 +1000 @@ -149,6 +149,9 @@ BUILDSYMLINKS+= ${file} ${file:T:S/.asm$ # XXX .if (${LIBGCC_MACHINE_ARCH} == "m68000" || ${LIBGCC_MACHINE_ARCH} == "m68k" || \ ${LIBGCC_MACHINE_ARCH} == "coldfire") +. if ${LIBCSOFTFLOAT} != "no" +CPPFLAGS+= -DLIBCSOFTFLOAT=1 +. endif CPICFLAGS:= BUILDSYMLINKS+= ${DIST}/libgcc/config/m68k/fpgnulib.c fpgnulib.c BUILDSYMLINKS+= ${DIST}/libgcc/config/m68k/fpgnulib.c xfgnulib.c --- a/external/gpl3/gcc/lib/libgcc/arch/m68k/defs.mk Tue Sep 02 00:24:10 2025 +0000 +++ b/external/gpl3/gcc/lib/libgcc/arch/m68k/defs.mk Wed Sep 03 11:42:21 2025 +1000 @@ -7,9 +7,15 @@ G_INTERNAL_CFLAGS=-g -O2 -O2 -DIN_GCC G_LIB2ADD=${GNUHOSTDIST}/libgcc/config/m68k/fpgnulib.c xfgnulib.c enable-execute-stack.c G_LIB2ADDEH=${GNUHOSTDIST}/libgcc/unwind-dw2.c ${GNUHOSTDIST}/libgcc/unwind-dw2-fde-dip.c ${GNUHOSTDIST}/libgcc/unwind-sjlj.c ${GNUHOSTDIST}/libgcc/unwind-c.c ${GNUHOSTDIST}/libgcc/emutls.c G_LIB2ADD_ST= +.if ${LIBCSOFTFLOAT} == "no" G_LIB1ASMFUNCS=_mulsi3 _udivsi3 _divsi3 _umodsi3 _modsi3 _floatex _float _double _eqdf2 _nedf2 _gtdf2 _gedf2 _ltdf2 _ledf2 _eqsf2 _nesf2 _gtsf2 _gesf2 _ltsf2 _lesf2 +.else +G_LIB1ASMFUNCS=_floatex _double +.endif G_LIB1ASMSRC=m68k/lb1sf68.S +.if ${LIBCSOFTFLOAT} == "no" G_LIB2_DIVMOD_FUNCS=_divdi3 _moddi3 _divmoddi4 _udivdi3 _umoddi3 _udivmoddi4 _udiv_w_sdiv +.endif G_LIB2FUNCS_ST=_eprintf __gcc_bcmp G_LIB2FUNCS_EXTRA= G_LIBGCC2_CFLAGS=-O2 -DIN_GCC -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector --- a/lib/libc/arch/m68k/Makefile.inc Tue Sep 02 00:24:10 2025 +0000 +++ b/lib/libc/arch/m68k/Makefile.inc Wed Sep 03 11:42:21 2025 +1000 @@ -7,9 +7,13 @@ ASM+= _lwp_getprivate.S mremap.S CPPFLAGS+= -I. # for assym.h .if ${MKSOFTFLOAT} != "no" +. include +. if ${LIBCSOFTFLOAT} == "no" #CPPFLAGS+= -DSOFTFLOAT_NEED_FIXUNS CPPFLAGS+= -DSOFTFLOAT -DSOFTFLOATM68K_FOR_GCC -. include +. else +CPPFLAGS+= -DSOFTFLOAT +. endif .elif ${MACHINE_ARCH} != "m68000" .PATH : ${ARCHDIR}/hardfloat . include "${ARCHDIR}/hardfloat/Makefile.inc" --- a/lib/libc/arch/m68k/softfloat/softfloat.h Tue Sep 02 00:24:10 2025 +0000 +++ b/lib/libc/arch/m68k/softfloat/softfloat.h Wed Sep 03 11:42:21 2025 +1000 @@ -216,7 +216,9 @@ flag float64_lt( float64, float64 ); flag float64_eq_signaling( float64, float64 ); flag float64_le_quiet( float64, float64 ); flag float64_lt_quiet( float64, float64 ); +#if !defined(SOFTFLOAT_FOR_GCC) || defined(SOFTFLOATM68K_FOR_GCC) flag float64_is_signaling_nan( float64 ); +#endif #ifdef FLOATX80 --- a/regress/sys/kern/getcwd/Makefile Tue Sep 02 00:24:10 2025 +0000 +++ b/regress/sys/kern/getcwd/Makefile Wed Sep 03 11:42:21 2025 +1000 @@ -7,6 +7,13 @@ PROG= getcwd SRCS= getcwd.c old_getcwd.c WARNS= 1 +.include + +.if ${MKSOFTFLOAT} != "no" && ${LIBCSOFTFLOAT} == "no" \ + && ${MACHINE_ARCH} == "m68k" +LDFLAGS= -Wl,--allow-multiple-definition +.endif + regress: ${PROG} @./getcwd -r @./getcwd -p --- a/share/mk/bsd.own.mk Tue Sep 02 00:24:10 2025 +0000 +++ b/share/mk/bsd.own.mk Wed Sep 03 11:42:21 2025 +1000 @@ -1155,6 +1155,9 @@ MKCOMPATMODULES?= yes MKCOMPATMODULES:= no .endif +# Prefer libc's softfloat.c +LIBCSOFTFLOAT?= yes + # # These platforms use softfloat by default. #