diff mbox

[build] Move IRIX 6 startup files to toplevel libgcc

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

Commit Message

Rainer Orth May 30, 2011, 3:02 p.m. UTC
Once the Solaris 2 toplevel libgcc patch

	http://gcc.gnu.org/ml/gcc-patches/2011-05/msg00098.html

is in, IRIX 6 can follow.  The straightforward patch below handles
this.  Only two issues are noteworthy:

* Support for the O32 ABI in the startup files has been removed since
  that ABI has already been obsoleted in gcc 4.5.

* With the introduction of libgcc/config/t-slibgcc, t-slibgcc-irix
  becomes quite small.  While the IRIX linker cannot support symbol
  versioning, it can hide all symbols but those named with its
  -exports_file option.  I've verified with elfdump/odump -Dt that
  several unnecessary symbols have indeed become hidden.

A previous version of this patch has been bootstrapped without
regressions on mips-sgi-irix6.5, will install on mainline once the patch
above has been approved and I've bootstrapped this exact version.

	Rainer


2011-04-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	gcc:
	* config.gcc (mips-sgi-irix6.5*): Set tmake_file to mips/t-irix6
	t-slibgcc-dummy.
	* config/mips/irix-crti.asm: Move to ../libgcc/config/mips/irix-crti.S.
	* config/mips/irix-crtn.asm: Move to ../libgcc/config/mips/irix-crtn.S.
	* config/mips/t-irix6: New file.
	* config/mips/t-shlib-irix: Move to ../libgcc/config/mips.

	libgcc:
	* config.host (mips-sgi-irix[56]*): Restrict to mips-sgi-irix6.5*.
	Set tmake_file, extra_parts.
	* config/mips/irix-crti.S: Move from ../gcc/config/mips/irix-crti.asm.
	Remove O32 support.
	* config/mips/irix-crtn.S: Move from ../gcc/config/mips/irix-crtn.asm.
	Remove O32 support.
	* config/mips/t-irix6: New file.
	* config/mips/t-shlib-irix: New file.
diff mbox

Patch

diff --git a/gcc/config.gcc b/gcc/config.gcc
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -1778,7 +1778,7 @@  microblaze*-*-*)
         ;;
 mips-sgi-irix6.5*)
 	tm_file="elfos.h ${tm_file} mips/iris6.h"
-	tmake_file="mips/t-iris mips/t-iris6 mips/t-slibgcc-irix"
+	tmake_file="mips/t-irix6 t-slibgcc-dummy"
 	extra_options="${extra_options} rpath.opt mips/iris6.opt"
 	target_cpu_default="MASK_ABICALLS"
 	tm_defines="${tm_defines} MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_N32"
diff --git a/gcc/config/mips/t-iris b/gcc/config/mips/t-iris
deleted file mode 100644
--- a/gcc/config/mips/t-iris
+++ /dev/null
@@ -1,9 +0,0 @@ 
-$(T)irix-crti.o: $(srcdir)/config/mips/irix-crti.asm $(GCC_PASSES)
-	$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
-	-c -o $@ -x assembler-with-cpp $<
-
-$(T)irix-crtn.o: $(srcdir)/config/mips/irix-crtn.asm $(GCC_PASSES)
-	$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
-	-c -o $@ -x assembler-with-cpp $<
-
-EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o irix-crti.o irix-crtn.o
diff --git a/gcc/config/mips/t-irix6 b/gcc/config/mips/t-irix6
new file mode 100644
--- /dev/null
+++ b/gcc/config/mips/t-irix6
@@ -0,0 +1,4 @@ 
+MULTILIB_OPTIONS=mabi=n32/mabi=64
+MULTILIB_DIRNAMES=n32 64
+MULTILIB_MATCHES=
+MULTILIB_OSDIRNAMES=../lib32 ../lib64
diff --git a/gcc/config/mips/t-slibgcc-irix b/gcc/config/mips/t-slibgcc-irix
deleted file mode 100644
--- a/gcc/config/mips/t-slibgcc-irix
+++ /dev/null
@@ -1,52 +0,0 @@ 
-# Copyright (C) 2004, 2005 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/>.
-
-# Build a shared libgcc library.
-
-SHLIB_EXT = .so
-SHLIB_SOLINK = @shlib_base_name@.so
-SHLIB_SOVERSION = 1
-SHLIB_SONAME = @shlib_base_name@.so.$(SHLIB_SOVERSION)
-SHLIB_MAP = @shlib_map_file@
-SHLIB_OBJS = @shlib_objs@
-SHLIB_DIR = @multilib_dir@
-SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@
-SHLIB_LC = -lc
-
-SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
-	-Wl,-soname,$(SHLIB_SONAME) \
-	-o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp @multilib_flags@ \
-	$(SHLIB_OBJS) $(SHLIB_LC) && \
-	rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \
-	if [ -f $(SHLIB_DIR)/$(SHLIB_SONAME) ]; then \
-	  mv -f $(SHLIB_DIR)/$(SHLIB_SONAME) \
-		$(SHLIB_DIR)/$(SHLIB_SONAME).backup; \
-	else true; fi && \
-	mv $(SHLIB_DIR)/$(SHLIB_SONAME).tmp $(SHLIB_DIR)/$(SHLIB_SONAME) && \
-	$(LN_S) $(SHLIB_SONAME) $(SHLIB_DIR)/$(SHLIB_SOLINK)
-# $(slibdir) double quoted to protect it from expansion while building
-# libgcc.mk.  We want this delayed until actual install time.
-SHLIB_INSTALL = \
-	$$(mkinstalldirs) $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL); \
-	$(INSTALL_DATA) $(SHLIB_DIR)/$(SHLIB_SONAME) \
-	  $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \
-	rm -f $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \
-	$(LN_S) $(SHLIB_SONAME) \
-	  $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK)
-SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk
-SHLIB_MAPFILES = $$(libgcc_objdir)/libgcc-std.ver
diff --git a/libgcc/config.host b/libgcc/config.host
--- a/libgcc/config.host
+++ b/libgcc/config.host
@@ -405,7 +405,9 @@  mcore-*-elf)
 microblaze*-*-*)
         tmake_file="microblaze/t-microblaze"
 	;;
-mips-sgi-irix[56]*)
+mips-sgi-irix6.5*)
+	tmake_file="mips/t-irix6 t-slibgcc t-slibgcc-elf mips/t-slibgcc-irix"
+	extra_parts="crtbegin.o crtend.o irix-crti.o irix-crtn.o"
 	;;
 mips*-*-netbsd*)			# NetBSD/mips, either endian.
 	;;
diff --git a/gcc/config/mips/irix-crti.asm b/libgcc/config/mips/irix-crti.S
rename from gcc/config/mips/irix-crti.asm
rename to libgcc/config/mips/irix-crti.S
--- a/gcc/config/mips/irix-crti.asm
+++ b/libgcc/config/mips/irix-crti.S
@@ -1,4 +1,4 @@ 
-/* Copyright (C) 2004, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 2004, 2008, 2011 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -52,26 +52,16 @@  see the files COPYING3 and COPYING.RUNTI
 	.section .gcc_init,"ax",@progbits
 	.globl	__gcc_init
 __gcc_init:
-#if _MIPS_SIM == _ABIO32
-	addiu	$sp,$sp,-16
-	sw	$31,0($sp)
-#else
 	daddiu	$sp,$sp,-16
 	sd	$31,0($sp)
 	sd	$28,8($sp)
-#endif
 
 	.section .gcc_fini,"ax",@progbits
 	.globl	__gcc_fini
 __gcc_fini:
-#if _MIPS_SIM == _ABIO32
-	addiu	$sp,$sp,-16
-	sw	$31,0($sp)
-#else
 	daddiu	$sp,$sp,-16
 	sd	$31,0($sp)
 	sd	$28,8($sp)
-#endif
 
 /* This object will typically be included in the final link for both
    shared libraries and executable, and we need to hide the symbols to
diff --git a/gcc/config/mips/irix-crtn.asm b/libgcc/config/mips/irix-crtn.S
rename from gcc/config/mips/irix-crtn.asm
rename to libgcc/config/mips/irix-crtn.S
--- a/gcc/config/mips/irix-crtn.asm
+++ b/libgcc/config/mips/irix-crtn.S
@@ -1,4 +1,4 @@ 
-/* Copyright (C) 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2004, 2011 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -26,25 +26,13 @@  see the files COPYING3 and COPYING.RUNTI
 	.set	nomacro
 
 	.section .gcc_init,"ax",@progbits
-#if _MIPS_SIM == _ABIO32
-	lw	$31,0($sp)
-	jr	$31
-	addiu	$sp,$sp,16
-#else
 	ld	$31,0($sp)
 	ld	$28,8($sp)
 	jr	$31
 	daddiu	$sp,$sp,16
-#endif
 
 	.section .gcc_fini,"ax",@progbits
-#if _MIPS_SIM == _ABIO32
-	lw	$31,0($sp)
-	jr	$31
-	addiu	$sp,$sp,16
-#else
 	ld	$31,0($sp)
 	ld	$28,8($sp)
 	jr	$31
 	daddiu	$sp,$sp,16
-#endif
diff --git a/gcc/config/mips/t-iris6 b/libgcc/config/mips/t-irix6
rename from gcc/config/mips/t-iris6
rename to libgcc/config/mips/t-irix6
--- a/gcc/config/mips/t-iris6
+++ b/libgcc/config/mips/t-irix6
@@ -1,5 +1,5 @@ 
 # Copyright (C) 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005,
-# 2006, 2010 Free Software Foundation, Inc.
+# 2006, 2010, 2011 Free Software Foundation, Inc.
 #
 # This file is part of GCC.
 #
@@ -17,22 +17,20 @@ 
 # along with GCC; see the file COPYING3.  If not see
 # <http://www.gnu.org/licenses/>.
 
-MULTILIB_OPTIONS=mabi=n32/mabi=64
-MULTILIB_DIRNAMES=n32 64
-MULTILIB_MATCHES=
-MULTILIB_OSDIRNAMES=../lib32 ../lib64
+irix-crti.o: $(srcdir)/config/mips/irix-crti.S
+	$(crt_compile) -c $<
 
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
+irix-crtn.o: $(srcdir)/config/mips/irix-crtn.S
+	$(crt_compile) -c $<
 
 TPBIT = tp-bit.c
 
-tp-bit.c: $(srcdir)/config/fp-bit.c
-	echo '#ifdef __MIPSEL__' > tp-bit.c
-	echo '# define FLOAT_BIT_ORDER_MISMATCH' >> tp-bit.c
-	echo '#endif' >> tp-bit.c
-	echo '#define QUIET_NAN_NEGATED' >> tp-bit.c
-	echo '#if __LDBL_MANT_DIG__ == 106' >> tp-bit.c
-	echo '# define TFLOAT' >> tp-bit.c
-	cat $(srcdir)/config/fp-bit.c >> tp-bit.c
-	echo '#endif' >> tp-bit.c
+$(gcc_objdir)/tp-bit.c: $(gcc_srcdir)/config/fp-bit.c
+	echo '#ifdef __MIPSEL__'		 > $@
+	echo '# define FLOAT_BIT_ORDER_MISMATCH' >> $@
+	echo '#endif'				>> $@
+	echo '#define QUIET_NAN_NEGATED'	>> $@
+	echo '#if __LDBL_MANT_DIG__ == 106'	>> $@
+	echo '# define TFLOAT'			>> $@
+	cat $<					>> $@
+	echo '#endif'				>> $@
diff --git a/libgcc/config/mips/t-slibgcc-irix b/libgcc/config/mips/t-slibgcc-irix
new file mode 100644
--- /dev/null
+++ b/libgcc/config/mips/t-slibgcc-irix
@@ -0,0 +1,7 @@ 
+# Build a shared libgcc library with the SGI linker.
+
+SHLIB_LDFLAGS = -Wl,-soname,$(SHLIB_SONAME) \
+	-Wl,-exports_file,$(SHLIB_MAP)
+
+SHLIB_MKMAP = $(gcc_srcdir)/mkmap-flat.awk
+SHLIB_MAPFILES = libgcc-std.ver