This re-enables the compilation of crti.o crtn.o for sparc-elf and sparc-rtems 
that was disabled in 4.6.0 but turned out to be disturbing.  This also enables 
it for sparc64-elf and sparc64-rtems and removes obsolete EXTRA_MULTILIB_PARTS 
settings in a couple of files.

Bootstrapped/regtested on SPARC/Solaris and SPARC64/Solaris, applied on the 
mainline and 4.6 branch.


2011-05-22  Eric Botcazou  <ebotca...@adacore.com>

        * config.gcc (sparc-*-elf*): Add sparc/t-crtin.
        (sparc-*-rtems*): Likewise.
        (sparc64-*-elf*): Likewise.
        (sparc64-*-rtems*): Likewise.
        (sparc*-*-solaris2*): Likewise.  Remove crti.o crtn.o extra parts.
        * config/sparc/t-crtin: New file.
        * config/sparc/t-sol2 (crti.o): Delete rule.
        (crtn.o): Likewise.
        * config/sparc/t-linux64 (EXTRA_MULTILIB_PARTS): Delete.
        * config/sparc/t-sol2-64 (EXTRA_MULTILIB_PARTS): Likewise.
        * config/sparc/sp64-elf.h (STARTFILE_SPEC): Tidy and add crti.o.
        (ENDFILE_SPEC): Add crtn.o.


-- 
Eric Botcazou
Index: config.gcc
===================================================================
--- config.gcc	(revision 173993)
+++ config.gcc	(working copy)
@@ -2439,12 +2439,12 @@ sparc-*-elf*)
 		tmake_file="sparc/t-elf"
 		;;
 	esac
-	tmake_file="${tmake_file} sparc/t-crtfm"
+	tmake_file="${tmake_file} sparc/t-crtin sparc/t-crtfm"
 	extra_parts="crtbegin.o crtend.o"
 	;;
 sparc-*-rtems*)
 	tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
-	tmake_file="sparc/t-elf sparc/t-crtfm t-rtems"
+	tmake_file="sparc/t-elf sparc/t-crtin sparc/t-crtfm t-rtems"
 	extra_parts="crtbegin.o crtend.o"
 	;;
 sparc-*-linux*)
@@ -2502,7 +2502,7 @@ sparc*-*-solaris2*)
 		tm_file="${tm_file} sol2-gld.h sparc/sol2-gld-bi.h"
 	fi
 	tm_file="${tm_file} tm-dwarf2.h"
-	tmake_file="t-sol2 sparc/t-sol2 sparc/t-sol2-64 sparc/t-crtfm"
+	tmake_file="t-sol2 sparc/t-sol2 sparc/t-sol2-64 sparc/t-crtin sparc/t-crtfm"
 	if test x$gnu_ld = xyes; then
 		tmake_file="$tmake_file t-slibgcc-elf-ver"
 	else
@@ -2515,7 +2515,7 @@ sparc*-*-solaris2*)
 	cxx_target_objs="sol2-c.o"
 	extra_objs="sol2.o"
 	tm_p_file="${tm_p_file} sol2-protos.h"
-	extra_parts="crt1.o crti.o crtn.o gcrt1.o gmon.o crtbegin.o crtend.o"
+	extra_parts="crt1.o gcrt1.o gmon.o crtbegin.o crtend.o"
 	case ${enable_threads}:${have_pthread_h}:${have_thread_h} in
 	  "":yes:* | yes:yes:* )
 		thread_file=posix
@@ -2529,13 +2529,13 @@ sparc-wrs-vxworks)
 sparc64-*-elf*)
 	tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h"
 	extra_options="${extra_options} sparc/little-endian.opt"
-	tmake_file="${tmake_file} sparc/t-crtfm"
+	tmake_file="${tmake_file} sparc/t-crtin sparc/t-crtfm"
 	extra_parts="crtbegin.o crtend.o"
 	;;
 sparc64-*-rtems*)
 	tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h sparc/rtemself.h rtems.h"
 	extra_options="${extra_options} sparc/little-endian.opt"
-	tmake_file="${tmake_file} sparc/t-crtfm t-rtems"
+	tmake_file="${tmake_file} sparc/t-crtin sparc/t-crtfm t-rtems"
 	extra_parts="crtbegin.o crtend.o"
 	;;
 sparc64-*-linux*)
Index: config/sparc/t-crtin
===================================================================
--- config/sparc/t-crtin	(revision 0)
+++ config/sparc/t-crtin	(revision 0)
@@ -0,0 +1,6 @@
+EXTRA_PARTS += crti.o crtn.o
+
+$(T)crti.o: $(srcdir)/config/sparc/sol2-ci.asm $(GCC_PASSES)
+	$(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) -c -o $(T)crti.o -x assembler-with-cpp $(srcdir)/config/sparc/sol2-ci.asm
+$(T)crtn.o: $(srcdir)/config/sparc/sol2-cn.asm $(GCC_PASSES)
+	$(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) -c -o $(T)crtn.o -x assembler-with-cpp $(srcdir)/config/sparc/sol2-cn.asm
Index: config/sparc/t-linux64
===================================================================
--- config/sparc/t-linux64	(revision 174016)
+++ config/sparc/t-linux64	(working copy)
@@ -31,9 +31,6 @@ MULTILIB_OSDIRNAMES = ../lib64 $(if $(wi
 LIBGCC = stmp-multilib
 INSTALL_LIBGCC = install-multilib
 
-EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o \
-	crtfastmath.o
-
 CRTSTUFF_T_CFLAGS = `if test x$$($(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) \
 				 -print-multi-os-directory) \
 			= x../lib64; then echo -mcmodel=medany; fi`
Index: config/sparc/t-sol2
===================================================================
--- config/sparc/t-sol2	(revision 174016)
+++ config/sparc/t-sol2	(working copy)
@@ -26,10 +26,6 @@ $(T)gmon.o:	$(srcdir)/config/sparc/gmon-
 # Assemble startup files.
 $(T)crt1.o: $(srcdir)/config/sparc/sol2-c1.asm $(GCC_PASSES)
 	$(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) -c -o $(T)crt1.o -x assembler-with-cpp $(srcdir)/config/sparc/sol2-c1.asm
-$(T)crti.o: $(srcdir)/config/sparc/sol2-ci.asm $(GCC_PASSES)
-	$(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) -c -o $(T)crti.o -x assembler-with-cpp $(srcdir)/config/sparc/sol2-ci.asm
-$(T)crtn.o: $(srcdir)/config/sparc/sol2-cn.asm $(GCC_PASSES)
-	$(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) -c -o $(T)crtn.o -x assembler-with-cpp $(srcdir)/config/sparc/sol2-cn.asm
 $(T)gcrt1.o: $(srcdir)/config/sparc/sol2-c1.asm $(GCC_PASSES)
 	$(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) -c -DGCRT1 -o $(T)gcrt1.o -x assembler-with-cpp $(srcdir)/config/sparc/sol2-c1.asm
 
Index: config/sparc/t-sol2-64
===================================================================
--- config/sparc/t-sol2-64	(revision 174016)
+++ config/sparc/t-sol2-64	(working copy)
@@ -5,6 +5,3 @@ MULTILIB_OSDIRNAMES = . sparcv9
 
 LIBGCC = stmp-multilib
 INSTALL_LIBGCC = install-multilib
-
-EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o gmon.o crt1.o crti.o crtn.o gcrt1.o \
-	crtfastmath.o
Index: config/sparc/sp64-elf.h
===================================================================
--- config/sparc/sp64-elf.h	(revision 174016)
+++ config/sparc/sp64-elf.h	(working copy)
@@ -50,18 +50,13 @@ along with GCC; see the file COPYING3.
 %{mlittle-endian:-EL} \
 "
 
-/* We need something a little simpler for the embedded environment.
-   Profiling doesn't really work yet so we just copy the default.  */
 #undef STARTFILE_SPEC
-#define STARTFILE_SPEC "\
-%{!shared:%{pg:gcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:crt0.o%s}}} \
-crtbegin.o%s \
-"
+#define STARTFILE_SPEC "crt0.o%s crti.o%s crtbegin.o%s"
 
 #undef ENDFILE_SPEC
 #define ENDFILE_SPEC \
   "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
-   crtend.o%s"
+   crtend.o%s crtn.o%s"
 
 /* Use the default (for now).  */
 #undef LIB_SPEC

Reply via email to