From b9b7c94c418fd8b213705e3472e6640af785306e Mon Sep 17 00:00:00 2001 From: Michael Meissner Date: Thu, 4 Apr 1996 16:45:26 +0000 Subject: [PATCH] Add support for EXTENDED_FLOAT_STUBS From-SVN: r11659 --- gcc/config/fp-bit.c | 44 ++++++++++++++++++++++++++++++++++++ gcc/config/i960/t-960bare | 6 ++++- gcc/config/i960/t-vxworks960 | 6 ++++- 3 files changed, 54 insertions(+), 2 deletions(-) diff --git a/gcc/config/fp-bit.c b/gcc/config/fp-bit.c index 4ee08f1629b..eb160e8afc7 100644 --- a/gcc/config/fp-bit.c +++ b/gcc/config/fp-bit.c @@ -62,6 +62,49 @@ Boston, MA 02111-1307, USA. */ SMALL_MACHINE: Useful when operations on QIs and HIs are faster than on an SI */ +/* We don't currently support extended floats (long doubles) on machines + without hardware to deal with them. + + These stubs are just to keep the linker from complaining about unresolved + references which can be pulled in from libio & libstdc++, even if the + user isn't using long doubles. However, they may generate an unresolved + external to abort if abort is not used by the function, and the stubs + are referenced from within libc, since libgcc goes before and after the + system library. */ + +#ifdef EXTENDED_FLOAT_STUBS +__truncxfsf2 (){ abort(); } +__extendsfxf2 (){ abort(); } +__addxf3 (){ abort(); } +__divxf3 (){ abort(); } +__eqxf2 (){ abort(); } +__extenddfxf2 (){ abort(); } +__gtxf2 (){ abort(); } +__lexf2 (){ abort(); } +__ltxf2 (){ abort(); } +__mulxf3 (){ abort(); } +__negxf2 (){ abort(); } +__nexf2 (){ abort(); } +__subxf3 (){ abort(); } +__truncxfdf2 (){ abort(); } + +__trunctfsf2 (){ abort(); } +__extendsftf2 (){ abort(); } +__addtf3 (){ abort(); } +__divtf3 (){ abort(); } +__eqtf2 (){ abort(); } +__extenddftf2 (){ abort(); } +__gttf2 (){ abort(); } +__letf2 (){ abort(); } +__lttf2 (){ abort(); } +__multf3 (){ abort(); } +__negtf2 (){ abort(); } +__netf2 (){ abort(); } +__subtf3 (){ abort(); } +__trunctfdf2 (){ abort(); } +#else /* !EXTENDED_FLOAT_STUBS, rest of file */ + + typedef SFtype __attribute__ ((mode (SF))); typedef DFtype __attribute__ ((mode (DF))); @@ -1350,3 +1393,4 @@ df_to_sf (DFtype arg_a) } #endif +#endif /* !EXTENDED_FLOAT_STUBS */ diff --git a/gcc/config/i960/t-960bare b/gcc/config/i960/t-960bare index 20a4870c939..3ffcf951aeb 100644 --- a/gcc/config/i960/t-960bare +++ b/gcc/config/i960/t-960bare @@ -1,7 +1,7 @@ LIBGCC1 = CROSS_LIBGCC1 = -LIB2FUNCS_EXTRA = fp-bit.c dp-bit.c +LIB2FUNCS_EXTRA = fp-bit.c dp-bit.c xp-bit.c dp-bit.c: $(srcdir)/config/fp-bit.c echo '#define FLOAT_BIT_ORDER_MISMATCH' > dp-bit.c @@ -12,6 +12,10 @@ fp-bit.c: $(srcdir)/config/fp-bit.c echo '#define FLOAT_BIT_ORDER_MISMATCH' >> fp-bit.c cat $(srcdir)/config/fp-bit.c >> fp-bit.c +xp-bit.c: $(srcdir)/config/xp-bit.c + echo '#define EXTENDED_FLOAT_STUBS' > xp-bit.c + cat $(srcdir)/config/fp-bit.c >> xp-bit.c + MULTILIB_OPTIONS=mnumerics MULTILIB_DIRNAMES=float MULTILIB_MATCHES=mnumerics=msb mnumerics=msc mnumerics=mkb mnumerics=mkc mnumerics=mmc mnumerics=mcb mnumerics=mcc diff --git a/gcc/config/i960/t-vxworks960 b/gcc/config/i960/t-vxworks960 index 84949cf17f5..b2aa7d466a3 100644 --- a/gcc/config/i960/t-vxworks960 +++ b/gcc/config/i960/t-vxworks960 @@ -4,7 +4,7 @@ CROSS_LIBGCC1 = # We don't want to put exit in libgcc.a for VxWorks, because VxWorks # does not have _exit. LIBGCC2_CFLAGS = -O2 $(GCC_CFLAGS) -g1 -Dexit=unused_exit -LIB2FUNCS_EXTRA = fp-bit.c dp-bit.c +LIB2FUNCS_EXTRA = fp-bit.c dp-bit.c xp-bit.c dp-bit.c: $(srcdir)/config/fp-bit.c echo '#define FLOAT_BIT_ORDER_MISMATCH' > dp-bit.c @@ -15,6 +15,10 @@ fp-bit.c: $(srcdir)/config/fp-bit.c echo '#define FLOAT_BIT_ORDER_MISMATCH' >> fp-bit.c cat $(srcdir)/config/fp-bit.c >> fp-bit.c +xp-bit.c: $(srcdir)/config/fp-bit.c + echo '#define EXTENDED_FLOAT_STUBS' > xp-bit.c + cat $(srcdir)/config/fp-bit.c >> xp-bit.c + MULTILIB_OPTIONS=mnumerics MULTILIB_DIRNAMES=float MULTILIB_MATCHES=mnumerics=msb mnumerics=msc mnumerics=mkb mnumerics=mkc mnumerics=mmc mnumerics=mcb mnumerics=mcc -- 2.30.2