[build] Move crtfastmath to toplevel libgcc

Rainer Orth ro@CeBiTec.Uni-Bielefeld.DE
Fri Jul 15 15:37:00 GMT 2011


Uros Bizjak <ubizjak@gmail.com> writes:

> Alpha needs the same fix. I need following patch to bootstrap the compiler:
>
> --cut here--
> Index: gcc/config.gcc
> ===================================================================
> --- gcc/config.gcc	(revision 176282)
> +++ gcc/config.gcc	(working copy)
> @@ -757,6 +757,7 @@
>  	extra_options="${extra_options} alpha/elf.opt"
>  	target_cpu_default="MASK_GAS"
>  	tmake_file="${tmake_file} alpha/t-alpha alpha/t-ieee alpha/t-linux"
> +	extra_parts="$extra_parts crtfastmath.o"
>  	;;
>  alpha*-*-freebsd*)
>  	tm_file="${tm_file} ${fbsd_tm_file} alpha/elf.h alpha/freebsd.h"

I've made a pass over the possibly affected targets (+: inconsistency,
config.gcc needs crtfastmath.o addition; 0: no problem):

				config.gcc

alpha*-*-linux*			+
alpha*-*-freebsd*		+
alpha*-dec-osf5.1*      	0
i[34567]86-*-darwin*		0
x86_64-*-darwin*		0
i[34567]86-*-linux*		0
i[34567]86-*-kfreebsd*-gnu	+ + crtprec??.o
x86_64-*-linux*			0
x86_64-*-kfreebsd*-gnu		0
i[34567]86-*-solaris2*		0
i[34567]86-*-cygwin*		0
i[34567]86-*-mingw*		0
x86_64-*-mingw*			0
ia64*-*-elf*			+
ia64*-*-freebsd*		+
ia64*-*-linux*			+
mips-sgi-irix6.5*		0
mips64*-*-linux*		+
mips*-*-linux*			+
sparc-*-elf*			0
sparc-*-linux*			+
sparc-*-rtems*			0
sparc*-*-solaris2*		0
sparc64-*-elf*			0
sparc64-*-freebsd*		+
sparc64-*-linux*		+

The affected ones have defaults for extra_parts for either *-*-linux* or
*-*-freebsd* and previously had EXTRA_PARTS in gcc/config/$cpu/t-crtfm,
i.e. alpha, i386, and sparc.  With the latter now gone, we've got an
inconsistency.

I think the following patch should fix all broken targets.  For those
that previously had crtfastmath.o in EXTRA_PARTS, I'm adding it to
config.gcc (extra_parts) explicitly.

The non-Linux x86 glibc targets were missed before.  I move the
extra_parts addition down so they all benefit from it.  The duplication
with i386/t-linux64 shouldn't matter since gcc/Makefile.in
(GCC_EXTRA_PARTS) merges them and removes duplicates.

ia64*-*-elf* is also affected because it has its own extra_parts, which
is now unnecessary.

Unless I get confirmation that this patch breaks nothing and fixes the
majority of affected targets, I'll leave it as is and work to remove the
duplication over the weekend, moving
extra_parts/EXTRA_PARTS/EXTRA_MULTILIB_PARTS and referenced source files
over to libgcc.  While this is the way we want to go, it is clearly more
risky than this stop gap measure.

Sorry.
        Rainer


2011-07-14  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	gcc:
	* config.gcc (alpha*-*-linux*): Add crtfastmath.o to extra_parts.
	(alpha*-*-freebsd*): Likewise.
	(i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
	i[34567]86-*-knetbsd*-gnu, i[34567]86-*-gnu*,
	i[34567]86-*-kopensolaris*-gnu): Add crtprec32.o, crtprec64.o,
	crtprec80.o, crtfastmath.o to extra_parts for all targets.
	(ia64*-*-elf*): Remove extra_parts.
	(sparc-*-linux*): Add crtfastmath.o to extra_parts.
	(sparc64-*-linux*): Likewise.
	(sparc64-*-freebsd*): Likewise.

	Revert:
	* config.gcc (ia64*-*-freebsd*): Remove crtfastmath.o from extra_parts.
	(ia64*-*-linux*): Likewise.
	(mips64*-*-linux*): Likewise.
	(mips*-*-linux*): Likewise.

Index: gcc/config.gcc
===================================================================
--- gcc/config.gcc	(revision 176266)
+++ gcc/config.gcc	(working copy)
@@ -757,13 +757,14 @@
 	extra_options="${extra_options} alpha/elf.opt"
 	target_cpu_default="MASK_GAS"
 	tmake_file="${tmake_file} alpha/t-alpha alpha/t-ieee alpha/t-linux"
+	extra_parts="${extra_parts} crtfastmath.o"
 	;;
 alpha*-*-freebsd*)
 	tm_file="${tm_file} ${fbsd_tm_file} alpha/elf.h alpha/freebsd.h"
 	extra_options="${extra_options} alpha/elf.opt"
 	target_cpu_default="MASK_GAS"
 	tmake_file="${tmake_file} alpha/t-alpha alpha/t-ieee"
-	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o"
+	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o crtfastmath.o"
 	;;
 alpha*-*-netbsd*)
 	tm_file="${tm_file} netbsd.h alpha/elf.h netbsd-elf.h alpha/netbsd.h"
@@ -1304,9 +1305,6 @@
 			esac
 		else
 			tm_file="${tm_file} i386/gnu-user.h i386/linux.h"
-			# This is a hack to avoid a configuration mismatch
-			# until the toplevel libgcc move is complete.
-			extra_parts="${extra_parts} crtprec32.o crtprec64.o crtprec80.o crtfastmath.o"
 		fi
 		;;
 	i[34567]86-*-knetbsd*-gnu) tm_file="${tm_file} i386/gnu-user.h knetbsd-gnu.h i386/knetbsd-gnu.h" ;;
@@ -1315,6 +1313,9 @@
 	i[34567]86-*-gnu*) tm_file="$tm_file i386/gnu-user.h gnu.h i386/gnu.h";;
 	esac
 	tmake_file="${tmake_file} i386/t-crtstuff"
+	# This is a hack to avoid a configuration mismatch
+	# until the toplevel libgcc move is complete.
+	extra_parts="${extra_parts} crtprec32.o crtprec64.o crtprec80.o crtfastmath.o"
 	;;
 x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-knetbsd*-gnu)
 	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h gnu-user.h glibc-stdint.h \
@@ -1594,13 +1595,13 @@
 	then
 		target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
 	fi
-	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
+	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
 	;;
 ia64*-*-freebsd*)
 	tm_file="${tm_file} dbxelf.h elfos.h ${fbsd_tm_file} ia64/sysv4.h ia64/freebsd.h"
 	target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
 	tmake_file="${tmake_file} ia64/t-ia64"
-	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
+	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
 	;;
 ia64*-*-linux*)
 	tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ia64/sysv4.h ia64/linux.h"
@@ -1609,7 +1610,7 @@
 		tmake_file="${tmake_file} t-libunwind-elf ia64/t-glibc-libunwind"
 	fi
 	target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
-	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
+	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
 	;;
 ia64*-*-hpux*)
 	tm_file="${tm_file} dbxelf.h elfos.h ia64/sysv4.h ia64/hpux.h"
@@ -1849,6 +1850,7 @@
 			tm_defines="${tm_defines} MIPS_ISA_DEFAULT=65"
 			;;
 	esac
+	extra_parts="$extra_parts crtfastmath.o"
 	gnu_ld=yes
 	gas=yes
 	test x$with_llsc != x || with_llsc=yes
@@ -1868,6 +1870,7 @@
         mipsisa32*)
 		tm_defines="${tm_defines} MIPS_ISA_DEFAULT=32"
         esac
+	extra_parts="$extra_parts crtfastmath.o"
 	test x$with_llsc != x || with_llsc=yes
 	;;
 mips*-*-openbsd*)
@@ -2493,6 +2496,7 @@
 	else
 		tm_file="${tm_file} sparc/linux.h"
 	fi
+	extra_parts="${extra_parts} crtfastmath.o"
 	;;
 sparc-*-netbsdelf*)
 	tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h netbsd.h netbsd-elf.h sparc/netbsd-elf.h"
@@ -2528,6 +2532,7 @@
 	tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/linux64.h"
 	extra_options="${extra_options} sparc/long-double-switch.opt"
 	tmake_file="${tmake_file} sparc/t-linux sparc/t-linux64"
+	extra_parts="${extra_parts} crtfastmath.o"
 	;;
 sparc64-*-freebsd*|ultrasparc-*-freebsd*)
 	tm_file="${tm_file} ${fbsd_tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/freebsd.h"
@@ -2537,6 +2542,7 @@
 		x) with_cpu=ultrasparc ;;
 		*) echo "$with_cpu not supported for freebsd target"; exit 1 ;;
 	esac
+	extra_parts="${extra_parts} crtfastmath.o"
 	;;
 sparc64-*-netbsd*)
 	tm_file="sparc/biarch64.h ${tm_file}"

-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University



More information about the Gcc-patches mailing list