This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Unreviewed patches (one critical for 3.0)


On Fri, May 25, 2001 at 10:31:52PM +0200, Rainer Orth wrote:
> 	http://gcc.gnu.org/ml/gcc-bugs/2001-04/msg00696.html
> 
> Enable building shared libgcc on Solaris/Intel.  Needs a decision on
> proper filenames to use instead of referencing sparc/t-slibgcc and
> sparc/t-slibgcc-sld from the i?86-*-solaris2* configuration.

I've rearranged things a little to share a bit more code.


r~


        * config.gcc (all gnu and linux): Use t-slibgcc-elf-ver with t-linux.
        (i386-*-solaris2): Use t-slibgcc-elf-ver or t-slibgcc-sld.
        (sparc*-*-solaris2): Likewise.
        * config/t-linux: Remove shared libgcc macros.
        * config/t-slibgcc-elf-ver: Move from sparc/t-slibgcc.
        * config/t-slibgcc-sld: Move from sparc/t-slibgcc-sld.

Index: config.gcc
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config.gcc,v
retrieving revision 1.61
diff -u -p -r1.61 config.gcc
--- config.gcc	2001/05/22 19:23:33	1.61
+++ config.gcc	2001/05/25 23:02:54
@@ -274,7 +274,7 @@ case $machine in
 	# These details are the same as for Linux.
 	xmake_file=x-linux
 	# But here we need a little extra magic.
-	tmake_file="t-linux t-gnu"
+	tmake_file="t-slibgcc-elf-ver t-linux t-gnu"
 	case $machine in
 	i[34567]86-*-*)
 		tm_file="${cpu_type}/${cpu_type}.h i386/att.h linux.h i386/linux.h gnu.h ${tm_file}"
@@ -421,7 +421,7 @@ alpha*-*-linux*ecoff*)
 alpha*-*-linux*libc1*)
 	tm_file="${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h"
 	target_cpu_default="MASK_GAS"
-	tmake_file="t-linux t-linux-gnulibc1 alpha/t-alpha alpha/t-crtbe alpha/t-ieee"
+	tmake_file="t-slibgcc-elf-ver t-linux t-linux-gnulibc1 alpha/t-alpha alpha/t-crtbe alpha/t-ieee"
 	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
 	gas=yes gnu_ld=yes
 	if test x$enable_threads = xyes; then
@@ -431,7 +431,7 @@ alpha*-*-linux*libc1*)
 alpha*-*-linux*)
 	tm_file="${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h"
 	target_cpu_default="MASK_GAS"
-	tmake_file="t-linux alpha/t-crtbe alpha/t-alpha alpha/t-ieee"
+	tmake_file="t-slibgcc-elf-ver t-linux alpha/t-crtbe alpha/t-alpha alpha/t-ieee"
 	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
 	gas=yes gnu_ld=yes
 	if test x$enable_threads = xyes; then
@@ -564,7 +564,7 @@ arm*-*-netbsd*)
 arm*-*-linux*)			# ARM GNU/Linux with ELF
 	xmake_file=x-linux
 	tm_file="arm/linux-elf.h"
-	tmake_file="t-linux arm/t-linux"
+	tmake_file="t-slibgcc-elf-ver t-linux arm/t-linux"
 	extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
 	gnu_ld=yes
 	case x${enable_threads} in
@@ -679,7 +679,7 @@ hppa*-*-linux* | parisc*-*-linux*)
 	target_cpu_default="MASK_PA_11"
 	tm_file="${tm_file} linux.h pa/pa-linux.h \
 		 pa/pa32-regs.h pa/pa32-linux.h"
-	tmake_file=pa/t-linux
+	tmake_file="t-slibgcc-elf-ver t-linux pa/t-linux"
 	extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
 	gas=yes gnu_ld=yes
 	if test x$enable_threads = xyes; then
@@ -911,7 +911,7 @@ i370-*-mvs*)
 i370-*-linux*)
 	xmake_file=x-linux
 	tm_file="i370/linux.h ${tm_file}"
-	tmake_file=t-linux
+	tmake_file="t-slibgcc-elf-ver t-linux"
 	# broken_install=yes
 	extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
 	# extra_parts="crtbegin.o crtend.o"
@@ -1092,7 +1092,7 @@ i[34567]86-*-linux*libc1)	# Intel 80386'
 				# GNU/Linux C library 5
 	xmake_file=x-linux	
 	tm_file="i386/i386.h i386/att.h linux.h i386/linux.h"
-	tmake_file="t-linux t-linux-gnulibc1 i386/t-crtstuff"
+	tmake_file="t-slibgcc-elf-ver t-linux t-linux-gnulibc1 i386/t-crtstuff"
 	extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
 	gnu_ld=yes
 	float_format=i386
@@ -1105,7 +1105,7 @@ i[34567]86-*-linux*)	# Intel 80386's run
 			# aka GNU/Linux C library 6
 	xmake_file=x-linux
 	tm_file="i386/i386.h i386/att.h linux.h i386/linux.h"
-	tmake_file="t-linux i386/t-crtstuff"
+	tmake_file="t-slibgcc-elf-ver t-linux i386/t-crtstuff"
 	extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
 	gnu_ld=yes
 	float_format=i386
@@ -1211,6 +1211,11 @@ i[34567]86-*-solaris2*)
 		tm_file="i386/sol2gas.h ${tm_file}"
 	fi
 	tmake_file=i386/t-sol2
+	if test x$gnu_ld = xyes; then
+		tmake_file="$tmake_file t-slibgcc-elf-ver"
+	else
+		tmake_file="$tmake_file t-slibgcc-sld"
+	fi
 	extra_parts="crt1.o crti.o crtn.o gcrt1.o gmon.o crtbegin.o crtend.o"
 	xmake_file=x-svr4
 	if test x${enable_threads} = x; then
@@ -1470,7 +1475,7 @@ ia64*-*-elf*)
 	;;
 ia64*-*-linux*)
 	tm_file=ia64/linux.h
-	tmake_file="t-linux ia64/t-ia64 ia64/t-glibc"
+	tmake_file="t-slibgcc-elf-ver t-linux ia64/t-ia64 ia64/t-glibc"
 	target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
 	if test x$enable_threads = xyes; then
 		thread_file='posix'
@@ -1874,7 +1879,7 @@ m68k-*-linux*libc1)		# Motorola m68k's r
 				# GNU/Linux C library 5
 	xmake_file=x-linux
 	tm_file=m68k/linux.h
-	tmake_file="t-linux t-linux-gnulibc1 m68k/t-linux"
+	tmake_file="t-slibgcc-elf-ver t-linux t-linux-gnulibc1 m68k/t-linux"
 	extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
 	extra_headers=math-68881.h
 	float_format=m68k
@@ -1885,7 +1890,7 @@ m68k-*-linux*)		# Motorola m68k's runnin
 				# aka the GNU/Linux C library 6.
 	xmake_file=x-linux
 	tm_file=m68k/linux.h
-	tmake_file="t-linux m68k/t-linux"
+	tmake_file="t-slibgcc-elf-ver t-linux m68k/t-linux"
 	extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
 	extra_headers=math-68881.h
 	float_format=m68k
@@ -2177,7 +2182,7 @@ mips*-*-linux*)				# Linux MIPS, either 
 	       mips*el-*)  tm_file="elfos.h mips/elfl.h mips/linux.h" ;;
 	       *)	  tm_file="elfos.h mips/elf.h mips/linux.h" ;;
 	esac
-	tmake_file=t-linux
+	tmake_file="t-slibgcc-elf-ver t-linux"
 	extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
 	gnu_ld=yes
 	gas=yes
@@ -2613,7 +2618,7 @@ powerpc-*-rtems*)
 powerpc-*-linux*libc1)
 	tm_file="${tm_file} svr4.h rs6000/sysv4.h rs6000/linux.h"
 	out_file=rs6000/rs6000.c
-	tmake_file="rs6000/t-ppcos t-linux t-linux-gnulibc1 rs6000/t-ppccomm"
+	tmake_file="rs6000/t-ppcos t-slibgcc-elf-ver t-linux t-linux-gnulibc1 rs6000/t-ppccomm"
 	xmake_file=x-linux
 	extra_headers=ppc-asm.h
 	if test x$enable_threads = xyes; then
@@ -2623,7 +2628,7 @@ powerpc-*-linux*libc1)
 powerpc-*-linux*)
 	tm_file="${tm_file} svr4.h rs6000/sysv4.h rs6000/linux.h"
 	out_file=rs6000/rs6000.c
-	tmake_file="rs6000/t-ppcos t-linux rs6000/t-ppccomm"
+	tmake_file="rs6000/t-ppcos t-slibgcc-elf-ver t-linux rs6000/t-ppccomm"
 	xmake_file=x-linux
 	extra_headers=ppc-asm.h
 	if test x$enable_threads = xyes; then
@@ -2825,7 +2830,7 @@ sparc-*-linux*aout*)		# Sparc's running 
 sparc-*-linux*libc1*)	# Sparc's running GNU/Linux, libc5
 	xmake_file=x-linux
 	tm_file=sparc/linux.h
-	tmake_file="t-linux t-linux-gnulibc1"
+	tmake_file="t-slibgcc-elf-ver t-linux t-linux-gnulibc1"
 	extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
 	gnu_ld=yes
 	float_format=sparc
@@ -2833,7 +2838,7 @@ sparc-*-linux*libc1*)	# Sparc's running 
 sparc-*-linux*)		# Sparc's running GNU/Linux, libc6
 	xmake_file=x-linux
 	tm_file=sparc/linux.h
-	tmake_file="t-linux"
+	tmake_file="t-slibgcc-elf-ver t-linux"
 	extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
 	gnu_ld=yes
 	if test x$enable_threads = xyes; then
@@ -2877,9 +2882,9 @@ sparcv9-*-solaris2*)
 	xm_defines=POSIX
 	tmake_file="sparc/t-sol2 sparc/t-sol2-64"
 	if test x$gnu_ld = xyes; then
-		tmake_file="$tmake_file sparc/t-slibgcc"
+		tmake_file="$tmake_file t-slibgcc-elf-ver"
 	else
-		tmake_file="$tmake_file sparc/t-slibgcc-sld"
+		tmake_file="$tmake_file t-slibgcc-sld"
 	fi
 	extra_parts="crt1.o crti.o crtn.o gcrt1.o crtbegin.o crtend.o"
 	float_format=none
@@ -2902,9 +2907,9 @@ sparc-hal-solaris2*)
         tm_file="sparc/sol2.h sparc/hal.h"
         tmake_file="sparc/t-halos sparc/t-sol2"
 	if test x$gnu_ld = xyes; then
-		tmake_file="$tmake_file sparc/t-slibgcc"
+		tmake_file="$tmake_file t-slibgcc-elf-ver"
 	else
-		tmake_file="$tmake_file sparc/t-slibgcc-sld"
+		tmake_file="$tmake_file t-slibgcc-sld"
 	fi
         extra_parts="crt1.o crti.o crtn.o gmon.o crtbegin.o crtend.o"
         case $machine in
@@ -2927,9 +2932,9 @@ sparc-*-solaris2*)
 	xm_defines=POSIX
 	tmake_file=sparc/t-sol2
 	if test x$gnu_ld = xyes; then
-		tmake_file="$tmake_file sparc/t-slibgcc"
+		tmake_file="$tmake_file t-slibgcc-elf-ver"
 	else
-		tmake_file="$tmake_file sparc/t-slibgcc-sld"
+		tmake_file="$tmake_file t-slibgcc-sld"
 	fi
 	extra_parts="crt1.o crti.o crtn.o gcrt1.o gmon.o crtbegin.o crtend.o"
 # At the moment, 32-to-64 cross compilation doesn't work.
@@ -3028,7 +3033,7 @@ sparc64-*-elf*)
 	extra_parts="crtbegin.o crtend.o"
 	;;
 sparc64-*-linux*)		# 64-bit Sparc's running GNU/Linux
-	tmake_file="t-linux sparc/t-linux64"
+	tmake_file="t-slibgcc-elf-ver t-linux sparc/t-linux64"
 	tm_file=sparc/linux64.h
 	xmake_file=x-linux
 	extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
Index: config/t-linux
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/t-linux,v
retrieving revision 1.10
diff -u -p -r1.10 t-linux
--- config/t-linux	2001/05/17 03:15:44	1.10
+++ config/t-linux	2001/05/25 23:02:54
@@ -5,18 +5,7 @@ STMP_FIXPROTO =
 CRTSTUFF_T_CFLAGS_S = -fPIC
 # Compile libgcc2.a with pic.
 TARGET_LIBGCC2_CFLAGS = -fPIC
-# Build a shared libgcc library.
-SHLIB_EXT = .so
-SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
-	-Wl,--soname=@shlib_base_name@.so.0 \
-	-Wl,--version-script=@shlib_map_file@ \
-	-o @shlib_base_name@.so @multilib_flags@ @shlib_objs@ -lc && \
-	rm -f @shlib_base_name@.so.0 && \
-	$(LN_S) @shlib_base_name@.so @shlib_base_name@.so.0
-# $(slibdir) double quoted to protect it from expansion while building
-# libgcc.mk.  We want this delayed until actual install time.
-SHLIB_INSTALL = $(INSTALL_DATA) @shlib_base_name@.so $$(slibdir)/@shlib_base_name@.so.0; \
-	rm -f $$(slibdir)/@shlib_base_name@.so; \
-	$(LN_S) @shlib_base_name@.so.0 $$(slibdir)/@shlib_base_name@.so
-SHLIB_MKMAP = $(srcdir)/mkmap-symver.awk
-SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver $(srcdir)/config/libgcc-glibc.ver
+
+# Override t-slibgcc-elf-ver to export some libgcc symbols with
+# the symbol versions that glibc used.
+SHLIB_MAPFILES += $(srcdir)/config/libgcc-glibc.ver
Index: config/t-slibgcc-elf-ver
===================================================================
RCS file: t-slibgcc-elf-ver
diff -N t-slibgcc-elf-ver
--- /dev/null	Tue May  5 13:32:27 1998
+++ config/t-slibgcc-elf-ver	Fri May 25 16:02:54 2001
@@ -0,0 +1,17 @@
+# Build a shared libgcc library for ELF with symbol versioning
+# with the GNU linker.
+
+SHLIB_EXT = .so
+SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
+	-Wl,--soname=@shlib_base_name@.so.0 \
+	-Wl,--version-script=@shlib_map_file@ \
+	-o @shlib_base_name@.so @multilib_flags@ @shlib_objs@ -lc && \
+	rm -f @shlib_base_name@.so.0 && \
+	$(LN_S) @shlib_base_name@.so @shlib_base_name@.so.0
+# $(slibdir) double quoted to protect it from expansion while building
+# libgcc.mk.  We want this delayed until actual install time.
+SHLIB_INSTALL = $(INSTALL_DATA) @shlib_base_name@.so $$(slibdir)/@shlib_base_name@.so.0; \
+	rm -f $$(slibdir)/@shlib_base_name@.so; \
+	$(LN_S) @shlib_base_name@.so.0 $$(slibdir)/@shlib_base_name@.so
+SHLIB_MKMAP = $(srcdir)/mkmap-symver.awk
+SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver
Index: config/t-slibgcc-sld
===================================================================
RCS file: t-slibgcc-sld
diff -N t-slibgcc-sld
--- /dev/null	Tue May  5 13:32:27 1998
+++ config/t-slibgcc-sld	Fri May 25 16:02:54 2001
@@ -0,0 +1,16 @@
+# Build a shared libgcc library with the Solaris linker.
+
+SHLIB_EXT = .so
+SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
+	-Wl,-h,@shlib_base_name@.so.0 -Wl,-z,text -Wl,-z,defs \
+	-Wl,-M,@shlib_map_file@ -o @shlib_base_name@.so \
+	@multilib_flags@ @shlib_objs@ -lc && \
+	rm -f @shlib_base_name@.so.0 && \
+	$(LN_S) @shlib_base_name@.so @shlib_base_name@.so.0
+# $(slibdir) double quoted to protect it from expansion while building
+# libgcc.mk.  We want this delayed until actual install time.
+SHLIB_INSTALL = $(INSTALL_DATA) @shlib_base_name@.so $$(slibdir)/@shlib_base_name@.so.0; \
+	rm -f $$(slibdir)/@shlib_base_name@.so; \
+	$(LN_S) @shlib_base_name@.so.0 $$(slibdir)/@shlib_base_name@.so
+SHLIB_MKMAP = $(srcdir)/mkmap-symver.awk
+SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver
Index: config/sparc/t-slibgcc
===================================================================
RCS file: t-slibgcc
diff -N t-slibgcc
--- /sourceware/cvs-tmp/cvsusOWw8	Fri May 25 16:03:03 2001
+++ /dev/null	Tue May  5 13:32:27 1998
@@ -1,16 +0,0 @@
-# Build a shared libgcc library with the GNU linker.
-
-SHLIB_EXT = .so
-SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
-	-Wl,--soname=@shlib_base_name@.so.0 \
-	-Wl,--version-script=@shlib_map_file@ \
-	-o @shlib_base_name@.so @multilib_flags@ @shlib_objs@ -lc && \
-	rm -f @shlib_base_name@.so.0 && \
-	$(LN_S) @shlib_base_name@.so @shlib_base_name@.so.0
-# $(slibdir) double quoted to protect it from expansion while building
-# libgcc.mk.  We want this delayed until actual install time.
-SHLIB_INSTALL = $(INSTALL_DATA) @shlib_base_name@.so $$(slibdir)/@shlib_base_name@.so.0; \
-	rm -f $$(slibdir)/@shlib_base_name@.so; \
-	$(LN_S) @shlib_base_name@.so.0 $$(slibdir)/@shlib_base_name@.so
-SHLIB_MKMAP = $(srcdir)/mkmap-symver.awk
-SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver
Index: config/sparc/t-slibgcc-sld
===================================================================
RCS file: t-slibgcc-sld
diff -N t-slibgcc-sld
--- /sourceware/cvs-tmp/cvs20p8c9	Fri May 25 16:03:03 2001
+++ /dev/null	Tue May  5 13:32:27 1998
@@ -1,16 +0,0 @@
-# Build a shared libgcc library with the Solaris linker.
-
-SHLIB_EXT = .so
-SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
-	-Wl,-h,@shlib_base_name@.so.0 -Wl,-z,text -Wl,-z,defs \
-	-Wl,-M,@shlib_map_file@ -o @shlib_base_name@.so \
-	@multilib_flags@ @shlib_objs@ -lc && \
-	rm -f @shlib_base_name@.so.0 && \
-	$(LN_S) @shlib_base_name@.so @shlib_base_name@.so.0
-# $(slibdir) double quoted to protect it from expansion while building
-# libgcc.mk.  We want this delayed until actual install time.
-SHLIB_INSTALL = $(INSTALL_DATA) @shlib_base_name@.so $$(slibdir)/@shlib_base_name@.so.0; \
-	rm -f $$(slibdir)/@shlib_base_name@.so; \
-	$(LN_S) @shlib_base_name@.so.0 $$(slibdir)/@shlib_base_name@.so
-SHLIB_MKMAP = $(srcdir)/mkmap-symver.awk
-SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]