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