diff mbox

[build] Move crtfastmath to toplevel libgcc

Message ID yddaacfodfi.fsf@manam.CeBiTec.Uni-Bielefeld.DE
State New
Headers show

Commit Message

Rainer Orth July 15, 2011, 1:56 p.m. UTC
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.

Comments

Rainer Orth July 18, 2011, 11:16 a.m. UTC | #1
Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> writes:

> 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.

Unfortunately, nobody reviewed the patch.  There's now also PR
bootstrap/49769 for Linux/SPARC.

I've started working on the extra_parts move this weekend, but didn't
find much time and it proved to be more involved than it seemed at
first.  It will be at least another week before it is ready, and far
more invasive than this one.

	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}"
Steve Ellcey July 18, 2011, 4:23 p.m. UTC | #2
On Mon, 2011-07-18 at 13:16 +0200, Rainer Orth wrote:

> Unfortunately, nobody reviewed the patch.  There's now also PR
> bootstrap/49769 for Linux/SPARC.

> 	Rainer


I tested the patch on IA64 Linux and verified that it fixed that
bootstrap.  I can approve the IA64 part of the patch.  Perhaps
someone else can approve the whole thing so that we get bootstraps
working again.

Steve Ellcey
sje@cup.hp.com
Richard Henderson July 18, 2011, 4:36 p.m. UTC | #3
On 07/15/2011 06:56 AM, Rainer Orth wrote:
> 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.

Ok.


r~
diff mbox

Patch

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}"