Commit aca0b0b3 by Rainer Orth Committed by Rainer Orth

soft-fp: Move to ../libgcc.

	gcc:
	* config/soft-fp: Move to ../libgcc.
	* Makefile.in (SFP_MACHINE): Remove.
	(libgcc-support): Remove $(SFP_MACHINE) dependency.
	* config/arm/sfp-machine.h: Move to ../libgcc/config/arm.
	* config/arm/t-arm-softfp: Move to
	../libgcc/config/arm/t-softfp.
	* config/c6x/sfp-machine.h: Move to ../libgcc/config/c6x.
	* config/c6x/t-c6x-softfp: Remove.
	* config/i386/sfp-machine.h: Move to ../libgcc/config/i386.
	* config/i386/t-fprules-softfp: Move to
	../libgcc/config/t-softfp-tf.
	* config/ia64/sfp-machine.h: Move to ../libgcc/config/ia64.
	* config/ia64/t-fprules-softfp: Remove.
	* config/lm32/sfp-machine.h: Move to ../libgcc/config/lm32.
	* config/lm32/t-fprules-softfp: Remove.
	* config/moxie/sfp-machine.h: Remove.
	* config/moxie/t-moxie-softfp: Remove.
	* config/rs6000/darwin-ldouble-format: Move to
	../libgcc/config/rs6000/ibm-ldouble-format.
	* config/rs6000/darwin-ldouble.c: Move to
	../libgcc/config/rs6000/ibm-ldouble.c
	* config/rs6000/libgcc-ppc-glibc.ver: Move to ../libgcc/config/rs6000.
	* config/rs6000/libgcc-ppc64.ver: Likewise.
	* config/rs6000/sfp-machine.h: Likewise.
	* config/rs6000/t-aix43 (SHLIB_MAPFILES): Remove
	$(srcdir)/config/rs6000/libgcc-ppc64.ver.
	(LIB2FUNCS_EXTRA): Remove.
	(TARGET_LIBGCC2_CFLAGS): Remove.
	* config/rs6000/t-aix52: Likewise
	* config/rs6000/t-darwin (LIB2FUNCS_EXTRA): Remove
	$(srcdir)/config/rs6000/darwin-ldouble.c.
	(SHLIB_MAPFILES): Remove.
	* config/rs6000/t-darwin64 (LIB2FUNCS_EXTRA): Remove
	$(srcdir)/config/rs6000/darwin-ldouble.c.
	* config/rs6000/t-fprules-softfp: Move to
	../libgcc/config/t-softfp-sfdf.
	* config/rs6000/t-freebsd: Move to ../libgcc/config/rs6000.
	* config/rs6000/t-linux64 (softfp_wrap_start, softfp_wrap_end): Remove.
	* config/rs6000/t-ppccomm (LIB2FUNCS_EXTRA): Remove
	$(srcdir)/config/rs6000/darwin-ldouble.c.
	* config/score/sfp-machine.h: Move to ../libgcc/config/score.
	* config/score/t-score-softfp: Remove.
	* config.gcc (arm*-*-linux*): Remove arm/t-arm-softfp,
	soft-fp/t-softfp from tmake_file.
	(arm*-*-uclinux*): Likewise.
	(arm*-*-ecos-elf): Likewise.
	(arm*-*-eabi*, arm*-*-symbianelf*): Likewise.
	(arm*-*-rtems*): Likewise.
	(arm*-*-elf): Likewise.
	(moxie-*-elf): Remove moxie/t-moxie-softfp, soft-fp/t-softfp from
	tmake_file.
	(moxie-*-uclinux*): Likewise.
	(moxie-*-rtems*): Likewise.
	(lm32-*-elf*): Remove lm32/t-fprules-softfp, soft-fp/t-softfp from
	tmake_file.
	(lm32-*-rtems*): Likewise.
	(lm32-*-uclinux*): Likewise.
	(powerpc-*-freebsd*): Remove rs6000/t-freebsd,
	rs6000/t-fprules-softfp, soft-fp/t-softfp from tmake_file.
	(powerpc-*-linux*, powerpc64-*-linux*): Remove
	rs6000/t-fprules-softfp, soft-fp/t-softfp from tmake_file.
	(score-*-elf): Remove score/t-score-softfp, soft-fp/t-softfp from
	tmake_file.
	(tic6x-*-elf): Remove c6x/t-c6x-softfp, soft-fp/t-softfp from
	tmake_file.
	(tic6x-*-uclinux): Likewise.
	(i[34567]86-*-darwin*, x86_64-*-darwin*): Remove i386/t-fprules-softfp,
	soft-fp/t-softfp from tmake_file.
	(i[34567]86-*-linux*, x86_64-*-linux*, i[34567]86-*-kfreebsd*-gnu)
	(x86_64-*-kfreebsd*-gnu, i[34567]86-*-gnu*): Likewise.
	(i[34567]86-*-solaris2*, x86_64-*-solaris2.1[0-9]*): Likewise.
	(i[34567]86-*-cygwin*, i[34567]86-*-mingw*, x86_64-*-mingw*):
	Likewise.
	(i[34567]86-*-freebsd*, x86_64-*-freebsd*): Likewise.

	libgcc:
	* config/t-softfp: Remove.
	* soft-fp: Moved from ../gcc/config.
	* soft-fp/README: Remove t-softfp reference.
	* soft-fp/t-softfp: Move to config/t-softfp.
	(softfp_machine_header): Remove.
	(softfp_file_list): Remove config subdir.
	(soft-fp-objects): New variable.
	($(soft-fp-objects)): Set INTERNAL_CFLAGS.
	(LIB2FUNCS_EXTRA): Add to LIB2ADD instead.
	(SFP_MACHINE, $(SFP_MACHINE)): Remove.
	* config/t-softfp-excl: New file.
	* config/t-softfp-sfdf: New file.
	* config/t-softfp-tf: New file.
	* config/no-sfp-machine.h: New file.
	* config/arm/sfp-machine.h: New file.
	* config/arm/t-softfp: New file.
	* config/c6x/sfp-machine.h: New file.
	* config/i386/32/t-fprules-softfp: Rename to ...
	* config/i386/32/t-softfp: ... this.
	(tifunctions, LIB2ADD): Remove.
	(softfp_int_modes): Override.
	* config/i386/64/t-softfp-compat (tf-functions): Remove config
	subdir.
	* config/i386/64/eqtf2.c: Likewise.
	* config/i386/64/getf2.c: Likewise.
	* config/i386/64/letf2.c: Likewise.
	* config/ia64/sft-machine.h: New file.
	* config/ia64/t-fprules-softfp: Rename to ...
	* config/ia64/t-softfp: ... this.
	* config/lm32/sfp-machine.h: New file.
	* config/moxie/t-moxie-softfp: Remove.
	* config/rs6000/ibm-ldouble-format: New file.
	* config/rs6000/ibm-ldouble.c: New file.
	* config/rs6000/libgcc-ppc-glibc.ver: New file
	* config/rs6000/libgcc-ppc64.ver: New file
	* config/rs6000/sfp-machine.h: New file.
	* config/rs6000/t-freebsd: New file.
	* config/rs6000/t-ibm-ldouble: New file.
	* config/rs6000/t-ldbl128: Use $(srcdir) to refer to
	libgcc-ppc-glibc.ver.
	* config/rs6000/t-linux64: New file.
	* config/rs6000/t-ppccomm (LIB2ADD): Add
	$(srcdir)/config/rs6000/ibm-ldouble.c.
	* config/rs6000/t-ppccomm-ldbl: New file.
	* config/score/sfp-machine.h: New file.
	* config.host (sfp_machine_header): Explain.
	(arm*-*-linux*): Add t-softfp-sfdf, t-softfp-excl, arm/t-softfp,
	t-softfp to tmake_file.
	(arm*-*-uclinux*): Likewise.
	(arm*-*-ecos-elf): Likewise.
	(arm*-*-eabi*, arm*-*-symbianelf*): Likewise.
	(arm*-*-rtems*): Likewise.
	(arm*-*-elf): Likewise.
	(ia64*-*-linux*): Replace ia64/t-fprules-softfp by ia64/t-softfp
	in tmake_file.
	Add t-softfp-tf, t-softfp-excl, t-softfp to tmake_file.
	(lm32-*-elf*, lm32-*-rtems*): Add t-softfp-sfdf, t-softfp to tmake_file.
	(lm32-*-uclinux*): Likewise.
	(moxie-*-*): Replace moxie/t-moxie-softfp by t-softfp-sfdf,
	t-softfp-excl, t-softfp.
	(powerpc-*-darwin*): Add rs6000/t-ibm-ldouble to tmake_file.
	(powerpc64-*-darwin*): Likewise.
	(powerpc-*-freebsd*): Add t-softfp-sfdf, t-softfp-excl, t-softfp
	to tmake_file.
	(powerpc-*-eabisimaltivec*): Add rs6000/t-ppccomm-ldbl to
	tmake_file.
	(powerpc-*-eabisim*): Likewise.
	(powerpc-*-elf*): Likewise.
	(powerpc-*-eabialtivec*): Likewise.
	(powerpc-xilinx-eabi*): Likewise.
	(powerpc-*-rtems*): Likewise.
	(powerpc-*-linux*, powerpc64-*-linux*): Add t-softfp-sfdf,
	t-softfp-excl, t-softfp to tmake_file.
	(powerpc-wrs-vxworks, powerpc-wrs-vxworksae): Add
	rs6000/t-ppccomm-ldbl to tmake_file.
	(powerpcle-*-elf*): Likewise.
	(powerpcle-*-eabisim*): Likewise.
	(powerpcle-*-eabi*): Likewise.
	(rs6000-ibm-aix4.[3456789]*, powerpc-ibm-aix4.[3456789]*): Add
	rs6000/t-ibm-ldouble to tmake_file.
	(rs6000-ibm-aix5.1.*, powerpc-ibm-aix5.1.*): Likewise.
	(rs6000-ibm-aix[56789].*, powerpc-ibm-aix[56789].*): Likewise.
	(score-*-elf): Add t-softfp-sfdf, t-softfp-excl, t-softfp to tmake_file.
	(tic6x-*-*): Likewise.
	(i[34567]86-*-darwin*, x86_64-*-darwin*,
	i[34567]86-*-kfreebsd*-gnu, x86_64-*-kfreebsd*-gnu,
	i[34567]86-*-linux*, x86_64-*-linux*, i[34567]86-*-gnu*,
	i[34567]86-*-solaris2*, x86_64-*-solaris2.1[0-9]*,
	i[34567]86-*-cygwin*, i[34567]86-*-mingw*, x86_64-*-mingw*,
	i[34567]86-*-freebsd*, x86_64-*-freebsd*): Add t-softfp-tf,
	t-softfp to tmake_file.
	* configure.ac (sfp_machine_header): Provide default if unset.
	Substitute.
	Link sfp-machine.h to config/$sfp_machine_header.
	* configure: Regenerate.

From-SVN: r177452
parent dedac3eb
2011-08-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> 2011-08-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* config/soft-fp: Move to ../libgcc.
* Makefile.in (SFP_MACHINE): Remove.
(libgcc-support): Remove $(SFP_MACHINE) dependency.
* config/arm/sfp-machine.h: Move to ../libgcc/config/arm.
* config/arm/t-arm-softfp: Move to
../libgcc/config/arm/t-softfp.
* config/c6x/sfp-machine.h: Move to ../libgcc/config/c6x.
* config/c6x/t-c6x-softfp: Remove.
* config/i386/sfp-machine.h: Move to ../libgcc/config/i386.
* config/i386/t-fprules-softfp: Move to
../libgcc/config/t-softfp-tf.
* config/ia64/sfp-machine.h: Move to ../libgcc/config/ia64.
* config/ia64/t-fprules-softfp: Remove.
* config/lm32/sfp-machine.h: Move to ../libgcc/config/lm32.
* config/lm32/t-fprules-softfp: Remove.
* config/moxie/sfp-machine.h: Remove.
* config/moxie/t-moxie-softfp: Remove.
* config/rs6000/darwin-ldouble-format: Move to
../libgcc/config/rs6000/ibm-ldouble-format.
* config/rs6000/darwin-ldouble.c: Move to
../libgcc/config/rs6000/ibm-ldouble.c
* config/rs6000/libgcc-ppc-glibc.ver: Move to ../libgcc/config/rs6000.
* config/rs6000/libgcc-ppc64.ver: Likewise.
* config/rs6000/sfp-machine.h: Likewise.
* config/rs6000/t-aix43 (SHLIB_MAPFILES): Remove
$(srcdir)/config/rs6000/libgcc-ppc64.ver.
(LIB2FUNCS_EXTRA): Remove.
(TARGET_LIBGCC2_CFLAGS): Remove.
* config/rs6000/t-aix52: Likewise
* config/rs6000/t-darwin (LIB2FUNCS_EXTRA): Remove
$(srcdir)/config/rs6000/darwin-ldouble.c.
(SHLIB_MAPFILES): Remove.
* config/rs6000/t-darwin64 (LIB2FUNCS_EXTRA): Remove
$(srcdir)/config/rs6000/darwin-ldouble.c.
* config/rs6000/t-fprules-softfp: Move to
../libgcc/config/t-softfp-sfdf.
* config/rs6000/t-freebsd: Move to ../libgcc/config/rs6000.
* config/rs6000/t-linux64 (softfp_wrap_start, softfp_wrap_end): Remove.
* config/rs6000/t-ppccomm (LIB2FUNCS_EXTRA): Remove
$(srcdir)/config/rs6000/darwin-ldouble.c.
* config/score/sfp-machine.h: Move to ../libgcc/config/score.
* config/score/t-score-softfp: Remove.
* config.gcc (arm*-*-linux*): Remove arm/t-arm-softfp,
soft-fp/t-softfp from tmake_file.
(arm*-*-uclinux*): Likewise.
(arm*-*-ecos-elf): Likewise.
(arm*-*-eabi*, arm*-*-symbianelf*): Likewise.
(arm*-*-rtems*): Likewise.
(arm*-*-elf): Likewise.
(moxie-*-elf): Remove moxie/t-moxie-softfp, soft-fp/t-softfp from
tmake_file.
(moxie-*-uclinux*): Likewise.
(moxie-*-rtems*): Likewise.
(lm32-*-elf*): Remove lm32/t-fprules-softfp, soft-fp/t-softfp from
tmake_file.
(lm32-*-rtems*): Likewise.
(lm32-*-uclinux*): Likewise.
(powerpc-*-freebsd*): Remove rs6000/t-freebsd,
rs6000/t-fprules-softfp, soft-fp/t-softfp from tmake_file.
(powerpc-*-linux*, powerpc64-*-linux*): Remove
rs6000/t-fprules-softfp, soft-fp/t-softfp from tmake_file.
(score-*-elf): Remove score/t-score-softfp, soft-fp/t-softfp from
tmake_file.
(tic6x-*-elf): Remove c6x/t-c6x-softfp, soft-fp/t-softfp from
tmake_file.
(tic6x-*-uclinux): Likewise.
(i[34567]86-*-darwin*, x86_64-*-darwin*): Remove i386/t-fprules-softfp,
soft-fp/t-softfp from tmake_file.
(i[34567]86-*-linux*, x86_64-*-linux*, i[34567]86-*-kfreebsd*-gnu)
(x86_64-*-kfreebsd*-gnu, i[34567]86-*-gnu*): Likewise.
(i[34567]86-*-solaris2*, x86_64-*-solaris2.1[0-9]*): Likewise.
(i[34567]86-*-cygwin*, i[34567]86-*-mingw*, x86_64-*-mingw*):
Likewise.
(i[34567]86-*-freebsd*, x86_64-*-freebsd*): Likewise.
2011-08-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* Makefile.in (FPBIT_FUNCS, DPBIT_FUNCS, TPBIT_FUNCS): Remove. * Makefile.in (FPBIT_FUNCS, DPBIT_FUNCS, TPBIT_FUNCS): Remove.
(libgcc-support): Remove $(FPBIT), $(DPBIT), $(TPBIT) (libgcc-support): Remove $(FPBIT), $(DPBIT), $(TPBIT)
dependencies. dependencies.
......
...@@ -736,9 +736,6 @@ LIB2FUNCS_STATIC_EXTRA = ...@@ -736,9 +736,6 @@ LIB2FUNCS_STATIC_EXTRA =
# List of functions not to build from libgcc2.c. # List of functions not to build from libgcc2.c.
LIB2FUNCS_EXCLUDE = LIB2FUNCS_EXCLUDE =
# Target sfp-machine.h file.
SFP_MACHINE =
# Program to convert libraries. # Program to convert libraries.
LIBCONVERT = LIBCONVERT =
...@@ -1868,7 +1865,7 @@ srcdirify = $(patsubst $$(libgcc_objdir)/%,%, \ ...@@ -1868,7 +1865,7 @@ srcdirify = $(patsubst $$(libgcc_objdir)/%,%, \
GCC_EXTRA_PARTS := $(sort $(EXTRA_MULTILIB_PARTS) $(EXTRA_PARTS)) GCC_EXTRA_PARTS := $(sort $(EXTRA_MULTILIB_PARTS) $(EXTRA_PARTS))
libgcc-support: libgcc.mvars stmp-int-hdrs $(TCONFIG_H) \ libgcc-support: libgcc.mvars stmp-int-hdrs $(TCONFIG_H) \
$(MACHMODE_H) $(LIB2ADD) $(LIB2ADD_ST) gcov-iov.h $(SFP_MACHINE) $(MACHMODE_H) $(LIB2ADD) $(LIB2ADD_ST) gcov-iov.h
libgcc.mvars: config.status Makefile $(LIB2ADD) $(LIB2ADD_ST) specs \ libgcc.mvars: config.status Makefile $(LIB2ADD) $(LIB2ADD_ST) specs \
xgcc$(exeext) xgcc$(exeext)
......
...@@ -868,7 +868,6 @@ arm*-*-linux*) # ARM GNU/Linux with ELF ...@@ -868,7 +868,6 @@ arm*-*-linux*) # ARM GNU/Linux with ELF
esac esac
with_tls=${with_tls:-gnu} with_tls=${with_tls:-gnu}
tm_file="$tm_file arm/aout.h arm/arm.h" tm_file="$tm_file arm/aout.h arm/arm.h"
tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
;; ;;
arm*-*-uclinux*) # ARM ucLinux arm*-*-uclinux*) # ARM ucLinux
tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/linux-gas.h arm/uclinux-elf.h glibc-stdint.h" tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/linux-gas.h arm/uclinux-elf.h glibc-stdint.h"
...@@ -886,12 +885,10 @@ arm*-*-uclinux*) # ARM ucLinux ...@@ -886,12 +885,10 @@ arm*-*-uclinux*) # ARM ucLinux
default_use_cxa_atexit=yes default_use_cxa_atexit=yes
esac esac
tm_file="$tm_file arm/aout.h arm/arm.h" tm_file="$tm_file arm/aout.h arm/arm.h"
tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
;; ;;
arm*-*-ecos-elf) arm*-*-ecos-elf)
tm_file="dbxelf.h elfos.h newlib-stdint.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h arm/ecos-elf.h" tm_file="dbxelf.h elfos.h newlib-stdint.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h arm/ecos-elf.h"
tmake_file="arm/t-arm arm/t-arm-elf" tmake_file="arm/t-arm arm/t-arm-elf"
tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
;; ;;
arm*-*-eabi* | arm*-*-symbianelf* ) arm*-*-eabi* | arm*-*-symbianelf* )
# The BPABI long long divmod functions return a 128-bit value in # The BPABI long long divmod functions return a 128-bit value in
...@@ -917,17 +914,14 @@ arm*-*-eabi* | arm*-*-symbianelf* ) ...@@ -917,17 +914,14 @@ arm*-*-eabi* | arm*-*-symbianelf* )
;; ;;
esac esac
tm_file="${tm_file} arm/aout.h arm/arm.h" tm_file="${tm_file} arm/aout.h arm/arm.h"
tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
;; ;;
arm*-*-rtems*) arm*-*-rtems*)
tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h arm/rtems-elf.h rtems.h newlib-stdint.h" tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h arm/rtems-elf.h rtems.h newlib-stdint.h"
tmake_file="arm/t-arm arm/t-arm-elf t-rtems arm/t-rtems" tmake_file="arm/t-arm arm/t-arm-elf t-rtems arm/t-rtems"
tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
;; ;;
arm*-*-elf) arm*-*-elf)
tm_file="dbxelf.h elfos.h newlib-stdint.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h" tm_file="dbxelf.h elfos.h newlib-stdint.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h"
tmake_file="arm/t-arm arm/t-arm-elf" tmake_file="arm/t-arm arm/t-arm-elf"
tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
;; ;;
arm*-wince-pe*) arm*-wince-pe*)
tm_file="arm/semi.h arm/aout.h arm/arm.h arm/coff.h dbxcoff.h arm/pe.h arm/wince-pe.h" tm_file="arm/semi.h arm/aout.h arm/arm.h arm/coff.h dbxcoff.h arm/pe.h arm/wince-pe.h"
...@@ -1025,17 +1019,17 @@ moxie-*-elf) ...@@ -1025,17 +1019,17 @@ moxie-*-elf)
gnu_ld=yes gnu_ld=yes
tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}" tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
extra_parts="crti.o crtn.o crtbegin.o crtend.o" extra_parts="crti.o crtn.o crtbegin.o crtend.o"
tmake_file="${tmake_file} moxie/t-moxie moxie/t-moxie-softfp soft-fp/t-softfp" tmake_file="${tmake_file} moxie/t-moxie"
;; ;;
moxie-*-uclinux*) moxie-*-uclinux*)
gas=yes gas=yes
gnu_ld=yes gnu_ld=yes
tm_file="dbxelf.h elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h moxie/uclinux.h" tm_file="dbxelf.h elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h moxie/uclinux.h"
extra_parts="crti.o crtn.o crtbegin.o crtend.o" extra_parts="crti.o crtn.o crtbegin.o crtend.o"
tmake_file="${tmake_file} moxie/t-moxie moxie/t-moxie-softfp soft-fp/t-softfp" tmake_file="${tmake_file} moxie/t-moxie"
;; ;;
moxie-*-rtems*) moxie-*-rtems*)
tmake_file="${tmake_file} moxie/t-moxie moxie/t-moxie-softfp soft-fp/t-softfp t-rtems" tmake_file="${tmake_file} moxie/t-moxie t-rtems"
tm_file="moxie/moxie.h dbxelf.h elfos.h moxie/rtems.h rtems.h newlib-stdint.h" tm_file="moxie/moxie.h dbxelf.h elfos.h moxie/rtems.h rtems.h newlib-stdint.h"
;; ;;
h8300-*-rtems*) h8300-*-rtems*)
...@@ -1651,16 +1645,16 @@ iq2000*-*-elf*) ...@@ -1651,16 +1645,16 @@ iq2000*-*-elf*)
;; ;;
lm32-*-elf*) lm32-*-elf*)
tm_file="dbxelf.h elfos.h ${tm_file}" tm_file="dbxelf.h elfos.h ${tm_file}"
tmake_file="${tmake_file} lm32/t-lm32 lm32/t-fprules-softfp soft-fp/t-softfp" tmake_file="${tmake_file} lm32/t-lm32"
;; ;;
lm32-*-rtems*) lm32-*-rtems*)
tm_file="dbxelf.h elfos.h ${tm_file} lm32/rtems.h rtems.h newlib-stdint.h" tm_file="dbxelf.h elfos.h ${tm_file} lm32/rtems.h rtems.h newlib-stdint.h"
tmake_file="${tmake_file} lm32/t-lm32 lm32/t-fprules-softfp soft-fp/t-softfp" tmake_file="${tmake_file} lm32/t-lm32"
tmake_file="${tmake_file} t-rtems" tmake_file="${tmake_file} t-rtems"
;; ;;
lm32-*-uclinux*) lm32-*-uclinux*)
tm_file="dbxelf.h elfos.h ${tm_file} gnu-user.h linux.h lm32/uclinux-elf.h" tm_file="dbxelf.h elfos.h ${tm_file} gnu-user.h linux.h lm32/uclinux-elf.h"
tmake_file="${tmake_file} lm32/t-lm32 lm32/t-fprules-softfp soft-fp/t-softfp" tmake_file="${tmake_file} lm32/t-lm32"
;; ;;
m32r-*-elf*) m32r-*-elf*)
tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}" tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
...@@ -2048,8 +2042,8 @@ powerpc64-*-darwin*) ...@@ -2048,8 +2042,8 @@ powerpc64-*-darwin*)
;; ;;
powerpc-*-freebsd*) powerpc-*-freebsd*)
tm_file="${tm_file} dbxelf.h elfos.h ${fbsd_tm_file} rs6000/sysv4.h rs6000/freebsd.h" tm_file="${tm_file} dbxelf.h elfos.h ${fbsd_tm_file} rs6000/sysv4.h rs6000/freebsd.h"
tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm rs6000/t-freebsd" tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
tmake_file="${tmake_file} t-slibgcc-libgcc rs6000/t-fprules-softfp soft-fp/t-softfp" tmake_file="${tmake_file} t-slibgcc-libgcc"
extra_options="${extra_options} rs6000/sysv4.opt" extra_options="${extra_options} rs6000/sysv4.opt"
;; ;;
powerpc-*-netbsd*) powerpc-*-netbsd*)
...@@ -2135,7 +2129,7 @@ powerpc-*-linux* | powerpc64-*-linux*) ...@@ -2135,7 +2129,7 @@ powerpc-*-linux* | powerpc64-*-linux*)
tm_file="${tm_file} rs6000/linux.h glibc-stdint.h" tm_file="${tm_file} rs6000/linux.h glibc-stdint.h"
;; ;;
esac esac
tmake_file="${tmake_file} t-slibgcc-libgcc rs6000/t-fprules-softfp soft-fp/t-softfp" tmake_file="${tmake_file} t-slibgcc-libgcc"
case ${target} in case ${target} in
powerpc*-*-linux*altivec*) powerpc*-*-linux*altivec*)
tm_file="${tm_file} rs6000/linuxaltivec.h" ;; tm_file="${tm_file} rs6000/linuxaltivec.h" ;;
...@@ -2269,7 +2263,7 @@ score-*-elf) ...@@ -2269,7 +2263,7 @@ score-*-elf)
gnu_ld=yes gnu_ld=yes
tm_file="dbxelf.h elfos.h score/elf.h score/score.h newlib-stdint.h" tm_file="dbxelf.h elfos.h score/elf.h score/score.h newlib-stdint.h"
extra_parts="crti.o crtn.o crtbegin.o crtend.o" extra_parts="crti.o crtn.o crtbegin.o crtend.o"
tmake_file="${tmake_file} score/t-score-elf score/t-score-softfp soft-fp/t-softfp" tmake_file="${tmake_file} score/t-score-elf"
;; ;;
sh-*-elf* | sh[12346l]*-*-elf* | \ sh-*-elf* | sh[12346l]*-*-elf* | \
sh-*-linux* | sh[2346lbe]*-*-linux* | \ sh-*-linux* | sh[2346lbe]*-*-linux* | \
...@@ -2571,7 +2565,6 @@ tic6x-*-elf) ...@@ -2571,7 +2565,6 @@ tic6x-*-elf)
tm_file="${tm_file} dbxelf.h tm-dwarf2.h newlib-stdint.h" tm_file="${tm_file} dbxelf.h tm-dwarf2.h newlib-stdint.h"
libgcc_tm_file="${libgcc_tm_file} c6x/c6x-abi.h" libgcc_tm_file="${libgcc_tm_file} c6x/c6x-abi.h"
tmake_file="c6x/t-c6x c6x/t-c6x-elf" tmake_file="c6x/t-c6x c6x/t-c6x-elf"
tmake_file="${tmake_file} c6x/t-c6x-softfp soft-fp/t-softfp"
use_collect2=no use_collect2=no
;; ;;
tic6x-*-uclinux) tic6x-*-uclinux)
...@@ -2581,7 +2574,6 @@ tic6x-*-uclinux) ...@@ -2581,7 +2574,6 @@ tic6x-*-uclinux)
libgcc_tm_file="${libgcc_tm_file} c6x/c6x-abi.h" libgcc_tm_file="${libgcc_tm_file} c6x/c6x-abi.h"
tmake_file="t-slibgcc-elf-ver t-sysroot-suffix" tmake_file="t-slibgcc-elf-ver t-sysroot-suffix"
tmake_file="${tmake_file} c6x/t-c6x c6x/t-c6x-elf c6x/t-c6x-uclinux" tmake_file="${tmake_file} c6x/t-c6x c6x/t-c6x-elf c6x/t-c6x-uclinux"
tmake_file="${tmake_file} c6x/t-c6x-softfp soft-fp/t-softfp"
use_collect2=no use_collect2=no
;; ;;
v850*-*-*) v850*-*-*)
...@@ -3585,24 +3577,19 @@ case ${target} in ...@@ -3585,24 +3577,19 @@ case ${target} in
;; ;;
i[34567]86-*-darwin* | x86_64-*-darwin*) i[34567]86-*-darwin* | x86_64-*-darwin*)
tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp"
;; ;;
i[34567]86-*-linux* | x86_64-*-linux* | \ i[34567]86-*-linux* | x86_64-*-linux* | \
i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu | \ i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu | \
i[34567]86-*-gnu*) i[34567]86-*-gnu*)
tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp i386/t-linux" tmake_file="${tmake_file} i386/t-linux"
;; ;;
i[34567]86-*-solaris2* | x86_64-*-solaris2.1[0-9]*) i[34567]86-*-solaris2* | x86_64-*-solaris2.1[0-9]*)
tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp"
;; ;;
i[34567]86-*-cygwin* | i[34567]86-*-mingw* | x86_64-*-mingw*) i[34567]86-*-cygwin* | i[34567]86-*-mingw* | x86_64-*-mingw*)
tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp"
;; ;;
i[34567]86-*-freebsd* | x86_64-*-freebsd*) i[34567]86-*-freebsd* | x86_64-*-freebsd*)
tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp"
;; ;;
ia64*-*-linux*) ia64*-*-linux*)
tmake_file="${tmake_file} ia64/t-fprules-softfp soft-fp/t-softfp"
;; ;;
mips*-*-*) mips*-*-*)
......
# Copyright (C) 2008 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
# GCC is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
#
# GCC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
softfp_float_modes := sf df
softfp_int_modes := si di
softfp_extensions := sfdf
softfp_truncations := dfsf
softfp_machine_header := arm/sfp-machine.h
softfp_exclude_libgcc2 := y
softfp_wrap_start := '\#ifdef __ARM_ARCH_6M__'
softfp_wrap_end := '\#endif'
# softfp seems to be missing a whole bunch of prototypes.
TARGET_LIBGCC2_CFLAGS += -Wno-missing-prototypes
softfp_float_modes := sf df
softfp_int_modes := si di
softfp_extensions := sfdf
softfp_truncations := dfsf
softfp_machine_header := c6x/sfp-machine.h
softfp_exclude_libgcc2 := y
# softfp seems to be missing a whole bunch of prototypes.
TARGET_LIBGCC2_CFLAGS += -Wno-missing-prototypes
softfp_float_modes := tf
softfp_int_modes := si di ti
softfp_extensions := sftf dftf xftf
softfp_truncations := tfsf tfdf tfxf
softfp_machine_header := ia64/sfp-machine.h
softfp_exclude_libgcc2 := n
softfp_float_modes := sf df
softfp_int_modes := si di
softfp_extensions := sfdf
softfp_truncations := dfsf
softfp_machine_header := moxie/sfp-machine.h
softfp_exclude_libgcc2 := y
# softfp seems to be missing a whole bunch of prototypes.
TARGET_LIBGCC2_CFLAGS += -Wno-missing-prototypes
...@@ -70,13 +70,9 @@ SHLIB_INSTALL = \ ...@@ -70,13 +70,9 @@ SHLIB_INSTALL = \
$$(DESTDIR)$$(slibdir)@shlib_slibdir_qual@/ $$(DESTDIR)$$(slibdir)@shlib_slibdir_qual@/
SHLIB_LIBS = -lc `case @multilib_dir@ in *pthread*) echo -lpthread ;; esac` SHLIB_LIBS = -lc `case @multilib_dir@ in *pthread*) echo -lpthread ;; esac`
SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk
SHLIB_MAPFILES = $$(libgcc_objdir)/libgcc-std.ver $(srcdir)/config/rs6000/libgcc-ppc64.ver SHLIB_MAPFILES = $$(libgcc_objdir)/libgcc-std.ver
SHLIB_NM_FLAGS = -Bpg -X32_64 SHLIB_NM_FLAGS = -Bpg -X32_64
# GCC 128-bit long double support routines.
LIB2FUNCS_EXTRA = $(srcdir)/config/rs6000/darwin-ldouble.c
TARGET_LIBGCC2_CFLAGS = -mlong-double-128
# Either 32-bit and 64-bit objects in archives. # Either 32-bit and 64-bit objects in archives.
AR_FLAGS_FOR_TARGET = -X32_64 AR_FLAGS_FOR_TARGET = -X32_64
...@@ -51,12 +51,8 @@ SHLIB_INSTALL = \ ...@@ -51,12 +51,8 @@ SHLIB_INSTALL = \
$$(DESTDIR)$$(slibdir)@shlib_slibdir_qual@/ $$(DESTDIR)$$(slibdir)@shlib_slibdir_qual@/
SHLIB_LIBS = -lc `case @multilib_dir@ in *pthread*) echo -lpthread ;; esac` SHLIB_LIBS = -lc `case @multilib_dir@ in *pthread*) echo -lpthread ;; esac`
SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk
SHLIB_MAPFILES = $$(libgcc_objdir)/libgcc-std.ver $(srcdir)/config/rs6000/libgcc-ppc64.ver SHLIB_MAPFILES = $$(libgcc_objdir)/libgcc-std.ver
SHLIB_NM_FLAGS = -Bpg -X32_64 SHLIB_NM_FLAGS = -Bpg -X32_64
# GCC 128-bit long double support routines.
LIB2FUNCS_EXTRA = $(srcdir)/config/rs6000/darwin-ldouble.c
TARGET_LIBGCC2_CFLAGS = -mlong-double-128
# Either 32-bit and 64-bit objects in archives. # Either 32-bit and 64-bit objects in archives.
AR_FLAGS_FOR_TARGET = -X32_64 AR_FLAGS_FOR_TARGET = -X32_64
...@@ -19,7 +19,6 @@ ...@@ -19,7 +19,6 @@
LIB2FUNCS_EXTRA = $(srcdir)/config/rs6000/darwin-tramp.asm \ LIB2FUNCS_EXTRA = $(srcdir)/config/rs6000/darwin-tramp.asm \
$(srcdir)/config/darwin-64.c \ $(srcdir)/config/darwin-64.c \
$(srcdir)/config/rs6000/darwin-ldouble.c \
$(srcdir)/config/rs6000/darwin-world.asm $(srcdir)/config/rs6000/darwin-world.asm
LIB2FUNCS_STATIC_EXTRA = \ LIB2FUNCS_STATIC_EXTRA = \
...@@ -36,8 +35,5 @@ LIB2FUNCS_STATIC_EXTRA = \ ...@@ -36,8 +35,5 @@ LIB2FUNCS_STATIC_EXTRA = \
# works around this by not having any temporary file names. # works around this by not having any temporary file names.
TARGET_LIBGCC2_CFLAGS = -Wa,-force_cpusubtype_ALL -pipe -mmacosx-version-min=10.4 TARGET_LIBGCC2_CFLAGS = -Wa,-force_cpusubtype_ALL -pipe -mmacosx-version-min=10.4
# Export the _xlq* symbols from darwin-ldouble.c.
SHLIB_MAPFILES += $(srcdir)/config/rs6000/libgcc-ppc64.ver
darwin-fpsave.o: $(srcdir)/config/rs6000/darwin-asm.h darwin-fpsave.o: $(srcdir)/config/rs6000/darwin-asm.h
darwin-tramp.o: $(srcdir)/config/rs6000/darwin-asm.h darwin-tramp.o: $(srcdir)/config/rs6000/darwin-asm.h
...@@ -2,7 +2,6 @@ LIB2_SIDITI_CONV_FUNCS=yes ...@@ -2,7 +2,6 @@ LIB2_SIDITI_CONV_FUNCS=yes
LIB2FUNCS_EXTRA = $(srcdir)/config/rs6000/darwin-tramp.asm \ LIB2FUNCS_EXTRA = $(srcdir)/config/rs6000/darwin-tramp.asm \
$(srcdir)/config/darwin-64.c \ $(srcdir)/config/darwin-64.c \
$(srcdir)/config/rs6000/darwin-ldouble.c \
$(srcdir)/config/rs6000/darwin-world.asm $(srcdir)/config/rs6000/darwin-world.asm
MULTILIB_OPTIONS = m32 MULTILIB_OPTIONS = m32
......
softfp_float_modes := sf df
softfp_int_modes := si di
softfp_extensions := sfdf
softfp_truncations := dfsf
softfp_machine_header := rs6000/sfp-machine.h
softfp_exclude_libgcc2 := y
...@@ -35,6 +35,3 @@ MULTILIB_EXCEPTIONS = m64/msoft-float ...@@ -35,6 +35,3 @@ MULTILIB_EXCEPTIONS = m64/msoft-float
MULTILIB_EXCLUSIONS = m64/!m32/msoft-float MULTILIB_EXCLUSIONS = m64/!m32/msoft-float
MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib) nof MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib) nof
MULTILIB_MATCHES = $(MULTILIB_MATCHES_FLOAT) MULTILIB_MATCHES = $(MULTILIB_MATCHES_FLOAT)
softfp_wrap_start := '\#ifndef __powerpc64__'
softfp_wrap_end := '\#endif'
# Common support for PowerPC ELF targets (both EABI and SVR4). # Common support for PowerPC ELF targets (both EABI and SVR4).
# #
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2006, 2007, # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2006, 2007,
# 2008 Free Software Foundation, Inc. # 2008, 2011 Free Software Foundation, Inc.
# #
# This file is part of GCC. # This file is part of GCC.
# #
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
# along with GCC; see the file COPYING3. If not see # along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>. # <http://www.gnu.org/licenses/>.
LIB2FUNCS_EXTRA += tramp.S $(srcdir)/config/rs6000/darwin-ldouble.c LIB2FUNCS_EXTRA += tramp.S
# These can't end up in shared libgcc # These can't end up in shared libgcc
LIB2FUNCS_STATIC_EXTRA = eabi.S LIB2FUNCS_STATIC_EXTRA = eabi.S
......
#define _FP_W_TYPE_SIZE 32
#define _FP_W_TYPE unsigned long
#define _FP_WS_TYPE signed long
#define _FP_I_TYPE long
/* The type of the result of a floating point comparison. This must
match `__libgcc_cmp_return__' in GCC for the target. */
typedef int __gcc_CMPtype __attribute__ ((mode (__libgcc_cmp_return__)));
#define CMPtype __gcc_CMPtype
#define _FP_MUL_MEAT_S(R,X,Y) \
_FP_MUL_MEAT_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm)
#define _FP_MUL_MEAT_D(R,X,Y) \
_FP_MUL_MEAT_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm)
#define _FP_MUL_MEAT_Q(R,X,Y) \
_FP_MUL_MEAT_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm)
#define _FP_DIV_MEAT_S(R,X,Y) _FP_DIV_MEAT_1_loop(S,R,X,Y)
#define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_2_udiv(D,R,X,Y)
#define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_4_udiv(Q,R,X,Y)
#define _FP_NANFRAC_S ((_FP_QNANBIT_S << 1) - 1)
#define _FP_NANFRAC_D ((_FP_QNANBIT_D << 1) - 1), -1
#define _FP_NANFRAC_Q ((_FP_QNANBIT_Q << 1) - 1), -1, -1, -1
#define _FP_NANSIGN_S 0
#define _FP_NANSIGN_D 0
#define _FP_NANSIGN_Q 0
#define _FP_KEEPNANFRACP 1
/* Someone please check this. */
#define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \
do { \
if ((_FP_FRAC_HIGH_RAW_##fs(X) & _FP_QNANBIT_##fs) \
&& !(_FP_FRAC_HIGH_RAW_##fs(Y) & _FP_QNANBIT_##fs)) \
{ \
R##_s = Y##_s; \
_FP_FRAC_COPY_##wc(R,Y); \
} \
else \
{ \
R##_s = X##_s; \
_FP_FRAC_COPY_##wc(R,X); \
} \
R##_c = FP_CLS_NAN; \
} while (0)
#define __LITTLE_ENDIAN 1234
#define __BIG_ENDIAN 4321
# define __BYTE_ORDER __BIG_ENDIAN
/* Define ALIASNAME as a strong alias for NAME. */
# define strong_alias(name, aliasname) _strong_alias(name, aliasname)
# define _strong_alias(name, aliasname) \
extern __typeof (name) aliasname __attribute__ ((alias (#name)));
softfp_float_modes := sf df
softfp_int_modes := si di
softfp_extensions := sfdf
softfp_truncations := dfsf
softfp_machine_header := score/sfp-machine.h
softfp_exclude_libgcc2 := y
# softfp seems to be missing a whole bunch of prototypes.
TARGET_LIBGCC2_CFLAGS += -Wno-missing-prototypes
# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
# This file is part of GCC.
# GCC is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
# GCC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
# Targets using soft-fp should define the following variables:
#
# softfp_float_modes: a list of soft-float floating-point modes,
# e.g. sf df
# softfp_int_modes: a list of integer modes for which to define conversions,
# e.g. si di
# softfp_extensions: a list of extensions between floating-point modes,
# e.g. sfdf
# softfp_truncations: a list of truncations between floating-point modes,
# e.g. dfsf
# softfp_machine_header: the target sfp-machine.h file (relative to config/),
# e.g. rs6000/sfp-machine.h
#
# Extensions and truncations should include those where only one mode
# is a soft-float mode; for example, sftf where sf is hard-float and
# tf is soft-float.
#
# If the libgcc2.c functions should not be replaced, also define:
#
# softfp_exclude_libgcc2 := y
#
# Avoiding replacing the libgcc2.c functions is a temporary measure
# for targets with both hard-float and soft-float multilibs, since
# these variables apply for all multilibs. With toplevel libgcc,
# soft-fp can be used conditionally on the multilib instead.
#
# If the code should not be compiled at all for some multilibs, define:
#
# softfp_wrap_start: text to put at the start of wrapper source files,
# output with echo
# e.g. '#ifndef __powerpc64__'
# softfp_wrap_end: text to put at the end of wrapper source files,
# e.g. '#endif'
#
# This is another temporary measure.
softfp_float_funcs = add$(m)3 div$(m)3 eq$(m)2 ge$(m)2 le$(m)2 mul$(m)3 \
neg$(m)2 sub$(m)3 unord$(m)2
softfp_floatint_funcs = fix$(m)$(i) fixuns$(m)$(i) \
float$(i)$(m) floatun$(i)$(m)
softfp_func_list := \
$(foreach m,$(softfp_float_modes), \
$(softfp_float_funcs) \
$(foreach i,$(softfp_int_modes), \
$(softfp_floatint_funcs))) \
$(foreach e,$(softfp_extensions),extend$(e)2) \
$(foreach t,$(softfp_truncations),trunc$(t)2)
ifeq ($(softfp_exclude_libgcc2),y)
# This list is taken from mklibgcc.in and doesn't presently allow for
# 64-bit targets where si should become di and di should become ti.
softfp_func_list := $(filter-out floatdidf floatdisf fixunsdfsi fixunssfsi \
fixunsdfdi fixdfdi fixunssfdi fixsfdi fixxfdi fixunsxfdi \
floatdixf fixunsxfsi fixtfdi fixunstfdi floatditf \
floatundidf floatundisf floatundixf floatunditf,$(softfp_func_list))
endif
ifeq ($(softfp_wrap_start),)
softfp_file_list := \
$(addsuffix .c,$(addprefix $(srcdir)/config/soft-fp/,$(softfp_func_list)))
else
softfp_file_list := $(addsuffix .c,$(softfp_func_list))
$(softfp_file_list):
echo $(softfp_wrap_start) > $@
echo '#include "config/soft-fp/$@"' >> $@
echo $(softfp_wrap_end) >> $@
endif
LIB2FUNCS_EXTRA += $(softfp_file_list)
ifneq ($(softfp_exclude_libgcc2),y)
# Functions in libgcc2.c are excluded for each soft-float mode (a
# target may have both soft-float and hard-float modes), for the fixed
# list of integer modes (si and di) for which libgcc2.c defines any
# such functions. Depending on the target, the si and di symbols may
# in fact define di and ti functions.
LIB2FUNCS_EXCLUDE += \
$(addprefix _,$(foreach m,$(softfp_float_modes), \
$(foreach i,si di, \
$(softfp_floatint_funcs))))
endif
SFP_MACHINE := sfp-machine.h
$(SFP_MACHINE): $(srcdir)/config/$(softfp_machine_header)
cp $(srcdir)/config/$(softfp_machine_header) $(SFP_MACHINE)
2011-08-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> 2011-08-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* config/t-softfp: Remove.
* soft-fp: Moved from ../gcc/config.
* soft-fp/README: Remove t-softfp reference.
* soft-fp/t-softfp: Move to config/t-softfp.
(softfp_machine_header): Remove.
(softfp_file_list): Remove config subdir.
(soft-fp-objects): New variable.
($(soft-fp-objects)): Set INTERNAL_CFLAGS.
(LIB2FUNCS_EXTRA): Add to LIB2ADD instead.
(SFP_MACHINE, $(SFP_MACHINE)): Remove.
* config/t-softfp-excl: New file.
* config/t-softfp-sfdf: New file.
* config/t-softfp-tf: New file.
* config/no-sfp-machine.h: New file.
* config/arm/sfp-machine.h: New file.
* config/arm/t-softfp: New file.
* config/c6x/sfp-machine.h: New file.
* config/i386/32/t-fprules-softfp: Rename to ...
* config/i386/32/t-softfp: ... this.
(tifunctions, LIB2ADD): Remove.
(softfp_int_modes): Override.
* config/i386/64/t-softfp-compat (tf-functions): Remove config
subdir.
* config/i386/64/eqtf2.c: Likewise.
* config/i386/64/getf2.c: Likewise.
* config/i386/64/letf2.c: Likewise.
* config/ia64/sft-machine.h: New file.
* config/ia64/t-fprules-softfp: Rename to ...
* config/ia64/t-softfp: ... this.
* config/lm32/sfp-machine.h: New file.
* config/moxie/t-moxie-softfp: Remove.
* config/rs6000/ibm-ldouble-format: New file.
* config/rs6000/ibm-ldouble.c: New file.
* config/rs6000/libgcc-ppc-glibc.ver: New file
* config/rs6000/libgcc-ppc64.ver: New file
* config/rs6000/sfp-machine.h: New file.
* config/rs6000/t-freebsd: New file.
* config/rs6000/t-ibm-ldouble: New file.
* config/rs6000/t-ldbl128: Use $(srcdir) to refer to
libgcc-ppc-glibc.ver.
* config/rs6000/t-linux64: New file.
* config/rs6000/t-ppccomm (LIB2ADD): Add
$(srcdir)/config/rs6000/ibm-ldouble.c.
* config/rs6000/t-ppccomm-ldbl: New file.
* config/score/sfp-machine.h: New file.
* config.host (sfp_machine_header): Explain.
(arm*-*-linux*): Add t-softfp-sfdf, t-softfp-excl, arm/t-softfp,
t-softfp to tmake_file.
(arm*-*-uclinux*): Likewise.
(arm*-*-ecos-elf): Likewise.
(arm*-*-eabi*, arm*-*-symbianelf*): Likewise.
(arm*-*-rtems*): Likewise.
(arm*-*-elf): Likewise.
(ia64*-*-linux*): Replace ia64/t-fprules-softfp by ia64/t-softfp
in tmake_file.
Add t-softfp-tf, t-softfp-excl, t-softfp to tmake_file.
(lm32-*-elf*, lm32-*-rtems*): Add t-softfp-sfdf, t-softfp to tmake_file.
(lm32-*-uclinux*): Likewise.
(moxie-*-*): Replace moxie/t-moxie-softfp by t-softfp-sfdf,
t-softfp-excl, t-softfp.
(powerpc-*-darwin*): Add rs6000/t-ibm-ldouble to tmake_file.
(powerpc64-*-darwin*): Likewise.
(powerpc-*-freebsd*): Add t-softfp-sfdf, t-softfp-excl, t-softfp
to tmake_file.
(powerpc-*-eabisimaltivec*): Add rs6000/t-ppccomm-ldbl to
tmake_file.
(powerpc-*-eabisim*): Likewise.
(powerpc-*-elf*): Likewise.
(powerpc-*-eabialtivec*): Likewise.
(powerpc-xilinx-eabi*): Likewise.
(powerpc-*-rtems*): Likewise.
(powerpc-*-linux*, powerpc64-*-linux*): Add t-softfp-sfdf,
t-softfp-excl, t-softfp to tmake_file.
(powerpc-wrs-vxworks, powerpc-wrs-vxworksae): Add
rs6000/t-ppccomm-ldbl to tmake_file.
(powerpcle-*-elf*): Likewise.
(powerpcle-*-eabisim*): Likewise.
(powerpcle-*-eabi*): Likewise.
(rs6000-ibm-aix4.[3456789]*, powerpc-ibm-aix4.[3456789]*): Add
rs6000/t-ibm-ldouble to tmake_file.
(rs6000-ibm-aix5.1.*, powerpc-ibm-aix5.1.*): Likewise.
(rs6000-ibm-aix[56789].*, powerpc-ibm-aix[56789].*): Likewise.
(score-*-elf): Add t-softfp-sfdf, t-softfp-excl, t-softfp to tmake_file.
(tic6x-*-*): Likewise.
(i[34567]86-*-darwin*, x86_64-*-darwin*,
i[34567]86-*-kfreebsd*-gnu, x86_64-*-kfreebsd*-gnu,
i[34567]86-*-linux*, x86_64-*-linux*, i[34567]86-*-gnu*,
i[34567]86-*-solaris2*, x86_64-*-solaris2.1[0-9]*,
i[34567]86-*-cygwin*, i[34567]86-*-mingw*, x86_64-*-mingw*,
i[34567]86-*-freebsd*, x86_64-*-freebsd*): Add t-softfp-tf,
t-softfp to tmake_file.
* configure.ac (sfp_machine_header): Provide default if unset.
Substitute.
Link sfp-machine.h to config/$sfp_machine_header.
* configure: Regenerate.
2011-08-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* Makefile.in (double_type_size, long_double_type_size): Set. * Makefile.in (double_type_size, long_double_type_size): Set.
Remove $(fpbit-in-libgcc) support. Remove $(fpbit-in-libgcc) support.
(FPBIT_FUNCS, DPBIT_FUNCS, TPBIT_FUNCS): New variables. (FPBIT_FUNCS, DPBIT_FUNCS, TPBIT_FUNCS): New variables.
......
...@@ -54,6 +54,9 @@ ...@@ -54,6 +54,9 @@
# subdirectory will be ignored. # subdirectory will be ignored.
# md_unwind_header The name of a header file defining # md_unwind_header The name of a header file defining
# MD_FALLBACK_FRAME_STATE_FOR. # MD_FALLBACK_FRAME_STATE_FOR.
# sfp_machine_header The name of a sfp-machine.h header file for soft-fp.
# Defaults to "$cpu_type/sfp-machine.h" if it exists,
# no-sfp-machine.h otherwise.
# tmake_file A list of machine-description-specific # tmake_file A list of machine-description-specific
# makefile-fragments, if different from # makefile-fragments, if different from
# "$cpu_type/t-$cpu_type". # "$cpu_type/t-$cpu_type".
...@@ -282,6 +285,7 @@ arm*-*-linux*) # ARM GNU/Linux with ELF ...@@ -282,6 +285,7 @@ arm*-*-linux*) # ARM GNU/Linux with ELF
unwind_header=config/arm/unwind-arm.h unwind_header=config/arm/unwind-arm.h
;; ;;
esac esac
tmake_file="$tmake_file t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp"
;; ;;
arm*-*-uclinux*) # ARM ucLinux arm*-*-uclinux*) # ARM ucLinux
tmake_file="${tmake_file} t-fixedpoint-gnu-prefix" tmake_file="${tmake_file} t-fixedpoint-gnu-prefix"
...@@ -291,8 +295,10 @@ arm*-*-uclinux*) # ARM ucLinux ...@@ -291,8 +295,10 @@ arm*-*-uclinux*) # ARM ucLinux
unwind_header=config/arm/unwind-arm.h unwind_header=config/arm/unwind-arm.h
;; ;;
esac esac
tmake_file="$tmake_file t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp"
;; ;;
arm*-*-ecos-elf) arm*-*-ecos-elf)
tmake_file="$tmake_file t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp"
;; ;;
arm*-*-eabi* | arm*-*-symbianelf* ) arm*-*-eabi* | arm*-*-symbianelf* )
tmake_file="${tmake_file} t-fixedpoint-gnu-prefix" tmake_file="${tmake_file} t-fixedpoint-gnu-prefix"
...@@ -304,11 +310,14 @@ arm*-*-eabi* | arm*-*-symbianelf* ) ...@@ -304,11 +310,14 @@ arm*-*-eabi* | arm*-*-symbianelf* )
tmake_file="${tmake_file} arm/t-symbian" tmake_file="${tmake_file} arm/t-symbian"
;; ;;
esac esac
tmake_file="$tmake_file t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp"
unwind_header=config/arm/unwind-arm.h unwind_header=config/arm/unwind-arm.h
;; ;;
arm*-*-rtems*) arm*-*-rtems*)
tmake_file="$tmake_file t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp"
;; ;;
arm*-*-elf) arm*-*-elf)
tmake_file="$tmake_file t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp"
;; ;;
arm*-wince-pe*) arm*-wince-pe*)
;; ;;
...@@ -318,7 +327,6 @@ avr-*-rtems*) ...@@ -318,7 +327,6 @@ avr-*-rtems*)
avr-*-*) avr-*-*)
# Make HImode functions for AVR # Make HImode functions for AVR
tmake_file="${cpu_type}/t-avr t-fpbit" tmake_file="${cpu_type}/t-avr t-fpbit"
;; ;;
bfin*-elf*) bfin*-elf*)
tmke_file=t-fdpbit tmke_file=t-fdpbit
...@@ -464,7 +472,7 @@ ia64*-*-freebsd*) ...@@ -464,7 +472,7 @@ ia64*-*-freebsd*)
;; ;;
ia64*-*-linux*) ia64*-*-linux*)
extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o" extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
tmake_file="ia64/t-ia64 t-crtfm t-softfp ia64/t-fprules-softfp ia64/t-softfp-compat ia64/t-glibc ia64/t-eh-ia64 t-libunwind" tmake_file="ia64/t-ia64 t-crtfm t-softfp-tf ia64/t-softfp t-softfp ia64/t-softfp-compat ia64/t-glibc ia64/t-eh-ia64 t-libunwind"
if test x$with_system_libunwind != xyes ; then if test x$with_system_libunwind != xyes ; then
tmake_file="${tmake_file} t-libunwind-elf ia64/t-glibc-libunwind" tmake_file="${tmake_file} t-libunwind-elf ia64/t-glibc-libunwind"
fi fi
...@@ -482,11 +490,11 @@ iq2000*-*-elf*) ...@@ -482,11 +490,11 @@ iq2000*-*-elf*)
;; ;;
lm32-*-elf*|lm32-*-rtems*) lm32-*-elf*|lm32-*-rtems*)
extra_parts="crtbegin.o crtend.o crti.o crtn.o" extra_parts="crtbegin.o crtend.o crti.o crtn.o"
tmake_file="lm32/t-lm32 lm32/t-elf t-softfp" tmake_file="lm32/t-lm32 lm32/t-elf t-softfp-sfdf t-softfp"
;; ;;
lm32-*-uclinux*) lm32-*-uclinux*)
extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o" extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o"
tmake_file="lm32/t-lm32 lm32/t-uclinux t-softfp" tmake_file="lm32/t-lm32 lm32/t-uclinux t-softfp-sfdf t-softfp"
;; ;;
m32r-*-elf*|m32r-*-rtems*) m32r-*-elf*|m32r-*-rtems*)
tmake_file=t-fdpbit tmake_file=t-fdpbit
...@@ -587,7 +595,7 @@ mn10300-*-*) ...@@ -587,7 +595,7 @@ mn10300-*-*)
tmake_file=t-fdpbit tmake_file=t-fdpbit
;; ;;
moxie-*-*) moxie-*-*)
tmake_file="moxie/t-moxie moxie/t-moxie-softfp" tmake_file="moxie/t-moxie t-softfp-sfdf t-softfp-excl t-softfp"
extra_parts="crtbegin.o crtend.o crti.o crtn.o" extra_parts="crtbegin.o crtend.o crti.o crtn.o"
;; ;;
pdp11-*-*) pdp11-*-*)
...@@ -606,13 +614,15 @@ powerpc-*-darwin*) ...@@ -606,13 +614,15 @@ powerpc-*-darwin*)
md_unwind_header=rs6000/darwin-unwind.h md_unwind_header=rs6000/darwin-unwind.h
;; ;;
esac esac
tmake_file="$tmake_file rs6000/t-ibm-ldouble"
extra_parts="$extra_parts crt2.o" extra_parts="$extra_parts crt2.o"
;; ;;
powerpc64-*-darwin*) powerpc64-*-darwin*)
tmake_file="$tmake_file rs6000/t-ibm-ldouble"
extra_parts="$extra_parts crt2.o" extra_parts="$extra_parts crt2.o"
;; ;;
powerpc-*-freebsd*) powerpc-*-freebsd*)
tmake_file="${tmake_file} rs6000/t-ppccomm rs6000/t-freebsd t-softfp" tmake_file="${tmake_file} rs6000/t-ppccomm rs6000/t-freebsd t-softfp-sfdf t-softfp-excl t-softfp"
;; ;;
powerpc-*-netbsd*) powerpc-*-netbsd*)
;; ;;
...@@ -620,56 +630,56 @@ powerpc-*-eabispe*) ...@@ -620,56 +630,56 @@ powerpc-*-eabispe*)
tmake_file="${tmake_file} rs6000/t-ppccomm" tmake_file="${tmake_file} rs6000/t-ppccomm"
;; ;;
powerpc-*-eabisimaltivec*) powerpc-*-eabisimaltivec*)
tmake_file=t-fdpbit tmake_file="rs6000/t-ppccomm-ldbl t-fdpbit"
;; ;;
powerpc-*-eabisim*) powerpc-*-eabisim*)
tmake_file=t-fdpbit tmake_file="rs6000/t-ppccomm-ldbl t-fdpbit"
;; ;;
powerpc-*-elf*) powerpc-*-elf*)
tmake_file=t-fdpbit tmake_file="rs6000/t-ppccomm-ldbl t-fdpbit"
;; ;;
powerpc-*-eabialtivec*) powerpc-*-eabialtivec*)
tmake_file=t-fdpbit tmake_file="rs6000/t-ppccomm-ldbl t-fdpbit"
;; ;;
powerpc-xilinx-eabi*) powerpc-xilinx-eabi*)
tmake_file=t-fdpbit tmake_file="rs6000/t-ppccomm-ldbl t-fdpbit"
;; ;;
powerpc-*-eabi*) powerpc-*-eabi*)
tmake_file="${tmake_file} rs6000/t-ppccomm t-fdpbit" tmake_file="${tmake_file} rs6000/t-ppccomm t-fdpbit"
;; ;;
powerpc-*-rtems*) powerpc-*-rtems*)
tmake_file=t-fdpbit tmake_file="rs6000/t-ppccomm-ldbl t-fdpbit"
;; ;;
powerpc-*-linux* | powerpc64-*-linux*) powerpc-*-linux* | powerpc64-*-linux*)
tmake_file="${tmake_file} rs6000/t-ppccomm rs6000/t-ldbl128 t-softfp t-dfprules rs6000/t-ppc64-fp" tmake_file="${tmake_file} rs6000/t-ppccomm rs6000/t-ldbl128 t-softfp-sfdf t-softfp-excl t-dfprules rs6000/t-ppc64-fp t-softfp"
md_unwind_header=rs6000/linux-unwind.h md_unwind_header=rs6000/linux-unwind.h
;; ;;
powerpc-wrs-vxworks|powerpc-wrs-vxworksae) powerpc-wrs-vxworks|powerpc-wrs-vxworksae)
tmake_file=t-fdpbit tmake_file="rs6000/t-ppccomm-ldbl t-fdpbit"
;; ;;
powerpc-*-lynxos*) powerpc-*-lynxos*)
tmake_file=t-fdpbit tmake_file=t-fdpbit
;; ;;
powerpcle-*-elf*) powerpcle-*-elf*)
tmake_file=t-fdpbit tmake_file="rs6000/t-ppccomm-ldbl t-fdpbit"
;; ;;
powerpcle-*-eabisim*) powerpcle-*-eabisim*)
tmake_file=t-fdpbit tmake_file="rs6000/t-ppccomm-ldbl t-fdpbit"
;; ;;
powerpcle-*-eabi*) powerpcle-*-eabi*)
tmake_file=t-fdpbit tmake_file="rs6000/t-ppccomm-ldbl t-fdpbit"
;; ;;
rs6000-ibm-aix4.[3456789]* | powerpc-ibm-aix4.[3456789]*) rs6000-ibm-aix4.[3456789]* | powerpc-ibm-aix4.[3456789]*)
md_unwind_header=rs6000/aix-unwind.h md_unwind_header=rs6000/aix-unwind.h
tmake_file="t-fdpbit rs6000/t-ppc64-fp" tmake_file="t-fdpbit rs6000/t-ppc64-fp rs6000/t-ibm-ldouble"
;; ;;
rs6000-ibm-aix5.1.* | powerpc-ibm-aix5.1.*) rs6000-ibm-aix5.1.* | powerpc-ibm-aix5.1.*)
md_unwind_header=rs6000/aix-unwind.h md_unwind_header=rs6000/aix-unwind.h
tmake_file="t-fdpbit rs6000/t-ppc64-fp" tmake_file="t-fdpbit rs6000/t-ppc64-fp rs6000/t-ibm-ldouble"
;; ;;
rs6000-ibm-aix[56789].* | powerpc-ibm-aix[56789].*) rs6000-ibm-aix[56789].* | powerpc-ibm-aix[56789].*)
md_unwind_header=rs6000/aix-unwind.h md_unwind_header=rs6000/aix-unwind.h
tmake_file="t-fdpbit rs6000/t-ppc64-fp" tmake_file="t-fdpbit rs6000/t-ppc64-fp rs6000/t-ibm-ldouble"
;; ;;
rx-*-elf) rx-*-elf)
extra_parts="crtbegin.o crtend.o" extra_parts="crtbegin.o crtend.o"
...@@ -688,6 +698,7 @@ s390x-ibm-tpf*) ...@@ -688,6 +698,7 @@ s390x-ibm-tpf*)
md_unwind_header=s390/tpf-unwind.h md_unwind_header=s390/tpf-unwind.h
;; ;;
score-*-elf) score-*-elf)
tmake_file="${tmake_file} t-softfp-sfdf t-softfp-excl t-softfp"
;; ;;
sh-*-elf* | sh[12346l]*-*-elf* | \ sh-*-elf* | sh[12346l]*-*-elf* | \
sh-*-linux* | sh[2346lbe]*-*-linux* | \ sh-*-linux* | sh[2346lbe]*-*-linux* | \
...@@ -774,7 +785,7 @@ spu-*-elf*) ...@@ -774,7 +785,7 @@ spu-*-elf*)
tmake_file="t-fdpbit spu/t-elf" tmake_file="t-fdpbit spu/t-elf"
;; ;;
tic6x-*-*) tic6x-*-*)
tmake_file="${tmake_file} t-gnu-prefix" tmake_file="${tmake_file} t-softfp-sfdf t-softfp-excl t-softfp t-gnu-prefix"
;; ;;
v850*-*-*) v850*-*-*)
tmake_file=t-fdpbit tmake_file=t-fdpbit
...@@ -829,9 +840,11 @@ i[34567]86-*-darwin* | x86_64-*-darwin* | \ ...@@ -829,9 +840,11 @@ i[34567]86-*-darwin* | x86_64-*-darwin* | \
i[34567]86-*-solaris2* | x86_64-*-solaris2.1[0-9]* | \ i[34567]86-*-solaris2* | x86_64-*-solaris2.1[0-9]* | \
i[34567]86-*-cygwin* | i[34567]86-*-mingw* | x86_64-*-mingw* | \ i[34567]86-*-cygwin* | i[34567]86-*-mingw* | x86_64-*-mingw* | \
i[34567]86-*-freebsd* | x86_64-*-freebsd*) i[34567]86-*-freebsd* | x86_64-*-freebsd*)
tmake_file="${tmake_file} t-softfp-tf"
if test "${host_address}" = 32; then if test "${host_address}" = 32; then
tmake_file="${tmake_file} t-softfp i386/${host_address}/t-fprules-softfp" tmake_file="${tmake_file} i386/${host_address}/t-softfp"
fi fi
tmake_file="${tmake_file} t-softfp"
;; ;;
esac esac
......
softfp_wrap_start := '\#ifdef __ARM_ARCH_6M__'
softfp_wrap_end := '\#endif'
# Filter out TImode functions
tifunctions = fixtfti.c fixunstfti.c floattitf.c floatuntitf.c
tifunctions := $(addprefix $(gcc_srcdir)/config/soft-fp/, $(tifunctions))
LIB2ADD := $(filter-out $(tifunctions), $(LIB2ADD))
# Provide fallbacks for __builtin_copysignq and __builtin_fabsq.
LIB2ADD += $(srcdir)/config/i386/32/tf-signs.c
# Omit TImode functions
softfp_int_modes := si di
# Provide fallbacks for __builtin_copysignq and __builtin_fabsq.
LIB2ADD += $(srcdir)/config/i386/32/tf-signs.c
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
#define __netf2 __netf2_shared #define __netf2 __netf2_shared
#endif #endif
#include "config/soft-fp/eqtf2.c" #include "soft-fp/eqtf2.c"
#ifdef SHARED #ifdef SHARED
#undef __netf2 #undef __netf2
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
#define __gttf2 __gttf2_shared #define __gttf2 __gttf2_shared
#endif #endif
#include "config/soft-fp/getf2.c" #include "soft-fp/getf2.c"
#ifdef SHARED #ifdef SHARED
#undef __gttf2 #undef __gttf2
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
#define __lttf2 __lttf2_shared #define __lttf2 __lttf2_shared
#endif #endif
#include "config/soft-fp/letf2.c" #include "soft-fp/letf2.c"
#ifdef SHARED #ifdef SHARED
#undef __lttf2 #undef __lttf2
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
# Filter out the following TFmode functions. # Filter out the following TFmode functions.
tf-compats = getf2.c letf2.c eqtf2.c tf-compats = getf2.c letf2.c eqtf2.c
tf-functions := $(addprefix $(gcc_srcdir)/config/soft-fp/, $(tf-compats)) tf-functions := $(addprefix $(srcdir)/soft-fp/, $(tf-compats))
LIB2ADD := $(filter-out $(tf-functions), $(LIB2ADD)) LIB2ADD := $(filter-out $(tf-functions), $(LIB2ADD))
LIB2ADD += $(addprefix $(srcdir)/config/i386/64/, $(tf-compats)) LIB2ADD += $(addprefix $(srcdir)/config/i386/64/, $(tf-compats))
......
softfp_float_modes := sf df
softfp_int_modes := si di
softfp_extensions := sfdf
softfp_truncations := dfsf
softfp_machine_header := moxie/sfp-machine.h
softfp_exclude_libgcc2 := y
# softfp seems to be missing a whole bunch of prototypes.
TARGET_LIBGCC2_CFLAGS += -Wno-missing-prototypes
/* Dummy sfp-machine.h header for targets that don't need one. */
/* 128-bit long double support routines for Darwin. /* 128-bit long double support routines for Darwin.
Copyright (C) 1993, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Copyright (C) 1993, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2011
Free Software Foundation, Inc. Free Software Foundation, Inc.
This file is part of GCC. This file is part of GCC.
...@@ -364,9 +364,9 @@ __gcc_qunord (double a, double aa, double c, double cc) ...@@ -364,9 +364,9 @@ __gcc_qunord (double a, double aa, double c, double cc)
return __unorddf2 (a, c); return __unorddf2 (a, c);
} }
#include "config/soft-fp/soft-fp.h" #include "soft-fp/soft-fp.h"
#include "config/soft-fp/double.h" #include "soft-fp/double.h"
#include "config/soft-fp/quad.h" #include "soft-fp/quad.h"
/* Compute floating point multiply-subtract with higher (quad) precision. */ /* Compute floating point multiply-subtract with higher (quad) precision. */
static double static double
......
...@@ -18,8 +18,5 @@ ...@@ -18,8 +18,5 @@
# along with GCC; see the file COPYING3. If not see # along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>. # <http://www.gnu.org/licenses/>.
# We do not want to build darwin-ldouble.c, so set the LIB2FUNCS_EXTRA again. # We do not want to build ibm-ldouble.c.
# Invoke this file after rs6000/t-ppccomm. LIB2ADD := $(filter-out ibm-ldouble.c, $(LIB2ADD))
LIB2FUNCS_EXTRA = tramp.S
# GCC 128-bit long double support routines.
LIB2ADD += $(srcdir)/config/rs6000/ibm-ldouble.c
HOST_LIBGCC2_CFLAGS += -mlong-double-128
SHLIB_MAPFILES += $(srcdir)/config/rs6000/libgcc-ppc64.ver
SHLIB_MAPFILES += $(gcc_srcdir)/config/rs6000/libgcc-ppc-glibc.ver SHLIB_MAPFILES += $(srcdir)/config/rs6000/libgcc-ppc-glibc.ver
HOST_LIBGCC2_CFLAGS += -mlong-double-128 HOST_LIBGCC2_CFLAGS += -mlong-double-128
softfp_wrap_start := '\#ifndef __powerpc64__'
softfp_wrap_end := '\#endif'
LIB2ADD += $(srcdir)/config/rs6000/ibm-ldouble.c
LIB2ADD_ST += crtsavfpr.S crtresfpr.S \ LIB2ADD_ST += crtsavfpr.S crtresfpr.S \
crtsavgpr.S crtresgpr.S \ crtsavgpr.S crtresgpr.S \
crtresxfpr.S crtresxgpr.S \ crtresxfpr.S crtresxgpr.S \
......
LIB2ADD += $(srcdir)/config/rs6000/ibm-ldouble.c
# Copyright (C) 2006, 2007, 2011 Free Software Foundation, Inc.
# This file is part of GCC.
# GCC is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
# GCC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
# Targets using soft-fp should define the following variables:
#
# softfp_float_modes: a list of soft-float floating-point modes,
# e.g. sf df
# softfp_int_modes: a list of integer modes for which to define conversions,
# e.g. si di
# softfp_extensions: a list of extensions between floating-point modes,
# e.g. sfdf
# softfp_truncations: a list of truncations between floating-point modes,
# e.g. dfsf
#
# Extensions and truncations should include those where only one mode
# is a soft-float mode; for example, sftf where sf is hard-float and
# tf is soft-float.
#
# If the libgcc2.c functions should not be replaced, also define:
#
# softfp_exclude_libgcc2 := y
#
# Avoiding replacing the libgcc2.c functions is a temporary measure
# for targets with both hard-float and soft-float multilibs, since
# these variables apply for all multilibs. With toplevel libgcc,
# soft-fp can be used conditionally on the multilib instead.
#
# If the code should not be compiled at all for some multilibs, define:
#
# softfp_wrap_start: text to put at the start of wrapper source files,
# output with echo
# e.g. '#ifndef __powerpc64__'
# softfp_wrap_end: text to put at the end of wrapper source files,
# e.g. '#endif'
#
# This is another temporary measure.
softfp_float_funcs = add$(m)3 div$(m)3 eq$(m)2 ge$(m)2 le$(m)2 mul$(m)3 \
neg$(m)2 sub$(m)3 unord$(m)2
softfp_floatint_funcs = fix$(m)$(i) fixuns$(m)$(i) \
float$(i)$(m) floatun$(i)$(m)
softfp_func_list := \
$(foreach m,$(softfp_float_modes), \
$(softfp_float_funcs) \
$(foreach i,$(softfp_int_modes), \
$(softfp_floatint_funcs))) \
$(foreach e,$(softfp_extensions),extend$(e)2) \
$(foreach t,$(softfp_truncations),trunc$(t)2)
ifeq ($(softfp_exclude_libgcc2),y)
# This list is taken from mklibgcc.in and doesn't presently allow for
# 64-bit targets where si should become di and di should become ti.
softfp_func_list := $(filter-out floatdidf floatdisf fixunsdfsi fixunssfsi \
fixunsdfdi fixdfdi fixunssfdi fixsfdi fixxfdi fixunsxfdi \
floatdixf fixunsxfsi fixtfdi fixunstfdi floatditf \
floatundidf floatundisf floatundixf floatunditf,$(softfp_func_list))
endif
ifeq ($(softfp_wrap_start),)
softfp_file_list := \
$(addsuffix .c,$(addprefix $(srcdir)/soft-fp/,$(softfp_func_list)))
else
softfp_file_list := $(addsuffix .c,$(softfp_func_list))
$(softfp_file_list):
echo $(softfp_wrap_start) > $@
echo '#include "soft-fp/$@"' >> $@
echo $(softfp_wrap_end) >> $@
endif
# Disable missing prototype and type limit warnings. The prototypes # Disable missing prototype and type limit warnings. The prototypes
# for the functions in the soft-fp files have not been brought across # for the functions in the soft-fp files have not been brought across
# from glibc. # from glibc.
# cfr. srcdirify in gcc/Makefile.in soft-fp-objects = $(addsuffix $(objext), $(softfp_file_list)) \
soft-fp-files = $(filter $(gcc_srcdir)/config/soft-fp/%, $(LIB2ADD)) \ $(addsuffix _s$(objext), $(softfp_file_list))
$(filter $(gcc_objdir)/config/soft-fp/%, $(LIB2ADD))
soft-fp-objects-base = $(basename $(notdir $(soft-fp-files))) $(soft-fp-objects) : INTERNAL_CFLAGS += -Wno-missing-prototypes -Wno-type-limits
soft-fp-objects = $(addsuffix $(objext), $(soft-fp-objects-base)) \ LIB2ADD += $(softfp_file_list)
$(addsuffix _s$(objext), $(soft-fp-objects-base))
$(soft-fp-objects) : INTERNAL_CFLAGS += -Wno-missing-prototypes -Wno-type-limits ifneq ($(softfp_exclude_libgcc2),y)
# Functions in libgcc2.c are excluded for each soft-float mode (a
# target may have both soft-float and hard-float modes), for the fixed
# list of integer modes (si and di) for which libgcc2.c defines any
# such functions. Depending on the target, the si and di symbols may
# in fact define di and ti functions.
LIB2FUNCS_EXCLUDE += \
$(addprefix _,$(foreach m,$(softfp_float_modes), \
$(foreach i,si di, \
$(softfp_floatint_funcs))))
endif
softfp_exclude_libgcc2 := y
...@@ -2,4 +2,4 @@ softfp_float_modes := sf df ...@@ -2,4 +2,4 @@ softfp_float_modes := sf df
softfp_int_modes := si di softfp_int_modes := si di
softfp_extensions := sfdf softfp_extensions := sfdf
softfp_truncations := dfsf softfp_truncations := dfsf
softfp_machine_header := lm32/sfp-machine.h softfp_exclude_libgcc2 := n
...@@ -2,5 +2,4 @@ softfp_float_modes := tf ...@@ -2,5 +2,4 @@ softfp_float_modes := tf
softfp_int_modes := si di ti softfp_int_modes := si di ti
softfp_extensions := sftf dftf xftf softfp_extensions := sftf dftf xftf
softfp_truncations := tfsf tfdf tfxf softfp_truncations := tfsf tfdf tfxf
softfp_machine_header := i386/sfp-machine.h
softfp_exclude_libgcc2 := n softfp_exclude_libgcc2 := n
...@@ -594,6 +594,7 @@ asm_hidden_op ...@@ -594,6 +594,7 @@ asm_hidden_op
extra_parts extra_parts
cpu_type cpu_type
tmake_file tmake_file
sfp_machine_header
set_use_emutls set_use_emutls
set_have_cc_tls set_have_cc_tls
vis_hide vis_hide
...@@ -4608,6 +4609,17 @@ if test "$enable_tls $gcc_cv_use_emutls" = "yes yes"; then ...@@ -4608,6 +4609,17 @@ if test "$enable_tls $gcc_cv_use_emutls" = "yes yes"; then
fi fi
# Conditionalize the sfp-machine.h header for this target machine.
if test -z "${sfp_machine_header}"; then
sfp_machine_header=$cpu_type/sfp-machine.h
if test -f ${srcdir}/config/${sfp_machine_header}; then
:
else
sfp_machine_header=no-sfp-machine.h
fi
fi
# Conditionalize the makefile for this target machine. # Conditionalize the makefile for this target machine.
tmake_file_= tmake_file_=
for f in ${tmake_file} for f in ${tmake_file}
...@@ -4630,6 +4642,8 @@ ac_config_links="$ac_config_links unwind.h:$unwind_header" ...@@ -4630,6 +4642,8 @@ ac_config_links="$ac_config_links unwind.h:$unwind_header"
ac_config_links="$ac_config_links md-unwind-support.h:config/$md_unwind_header" ac_config_links="$ac_config_links md-unwind-support.h:config/$md_unwind_header"
ac_config_links="$ac_config_links sfp-machine.h:config/$sfp_machine_header"
# We need multilib support. # We need multilib support.
ac_config_files="$ac_config_files Makefile" ac_config_files="$ac_config_files Makefile"
...@@ -5358,6 +5372,7 @@ do ...@@ -5358,6 +5372,7 @@ do
"enable-execute-stack.c") CONFIG_LINKS="$CONFIG_LINKS enable-execute-stack.c:$enable_execute_stack" ;; "enable-execute-stack.c") CONFIG_LINKS="$CONFIG_LINKS enable-execute-stack.c:$enable_execute_stack" ;;
"unwind.h") CONFIG_LINKS="$CONFIG_LINKS unwind.h:$unwind_header" ;; "unwind.h") CONFIG_LINKS="$CONFIG_LINKS unwind.h:$unwind_header" ;;
"md-unwind-support.h") CONFIG_LINKS="$CONFIG_LINKS md-unwind-support.h:config/$md_unwind_header" ;; "md-unwind-support.h") CONFIG_LINKS="$CONFIG_LINKS md-unwind-support.h:config/$md_unwind_header" ;;
"sfp-machine.h") CONFIG_LINKS="$CONFIG_LINKS sfp-machine.h:config/$sfp_machine_header" ;;
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
"default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
......
...@@ -273,6 +273,17 @@ if test "$enable_tls $gcc_cv_use_emutls" = "yes yes"; then ...@@ -273,6 +273,17 @@ if test "$enable_tls $gcc_cv_use_emutls" = "yes yes"; then
fi fi
AC_SUBST(set_use_emutls) AC_SUBST(set_use_emutls)
# Conditionalize the sfp-machine.h header for this target machine.
if test -z "${sfp_machine_header}"; then
sfp_machine_header=$cpu_type/sfp-machine.h
if test -f ${srcdir}/config/${sfp_machine_header}; then
:
else
sfp_machine_header=no-sfp-machine.h
fi
fi
AC_SUBST(sfp_machine_header)
# Conditionalize the makefile for this target machine. # Conditionalize the makefile for this target machine.
tmake_file_= tmake_file_=
for f in ${tmake_file} for f in ${tmake_file}
...@@ -292,6 +303,7 @@ AC_SUBST(asm_hidden_op) ...@@ -292,6 +303,7 @@ AC_SUBST(asm_hidden_op)
AC_CONFIG_LINKS([enable-execute-stack.c:$enable_execute_stack]) AC_CONFIG_LINKS([enable-execute-stack.c:$enable_execute_stack])
AC_CONFIG_LINKS([unwind.h:$unwind_header]) AC_CONFIG_LINKS([unwind.h:$unwind_header])
AC_CONFIG_LINKS([md-unwind-support.h:config/$md_unwind_header]) AC_CONFIG_LINKS([md-unwind-support.h:config/$md_unwind_header])
AC_CONFIG_LINKS([sfp-machine.h:config/$sfp_machine_header])
# We need multilib support. # We need multilib support.
AC_CONFIG_FILES([Makefile]) AC_CONFIG_FILES([Makefile])
......
Except for t-softfp, conversions involving TImode and conversions involving Except for conversions involving TImode and conversions involving
XFmode, the files in this directory are part of the GNU C Library, not part XFmode, the files in this directory are part of the GNU C Library, not part
of GCC. As described at <http://gcc.gnu.org/codingconventions.html>, changes of GCC. As described at <http://gcc.gnu.org/codingconventions.html>, changes
should be made to the GNU C Library and the changed files then imported should be made to the GNU C Library and the changed files then imported
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment