[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[3.4/3.5 patch] libgcc_s.so compatibility between 3.3 and 3.4 (sjlj/dwarf2 exceptions)



On m68k-linux and parisc-linux between 3.3 and 3.4 the default
exception model changed from sjlj based exceptions to dw2 based
exceptions. Unfortunately at this time the soversion number of the
shared libgcc was not bumped. This patch bumps the version number for
these two archs to 2, if not configured with --enable-sjlj-exceptions
and keeps the 1 for sjlj enabled builds. It may be better to avoid the
soversion 1 altogether as we don't know the exception model used to
build the library and use different soversion numbers for the two
variants or encode the exception model into the library name.

I didn't look at other architectures, if the distinction is needed as
well. at least for linux, arm still uses sjlj based exceptions, and
the patch will be needed at some point in the future as well.

	Matthias


2004-02-15  Matthias Klose  <doko@debian.org>

	* config.gcc: m68k-linux, parisc-linux: when not configured to
	use sjlj exceptions, include t-make fragments to bump the libgcc
	soversion number.
	* config/t-slibgcc-elf-ver: Define SHLIB_NAME and SHLIB_SONAME
	in terms of SHLIB_SOVERSION.
	* config/m68k/t-slibgcc-elf-ver: Bump shlib soversion number.
	* config/pa/t-slibgcc-elf-ver: Likewise.
	
diff -urN --exclude=CVS gcc/config/m68k/t-slibgcc-elf-ver gcc/config/m68k/t-slibgcc-elf-ver
--- gcc/config/m68k/t-slibgcc-elf-ver	1970-01-01 01:00:00.000000000 +0100
+++ gcc/config/m68k/t-slibgcc-elf-ver	2004-02-15 11:26:14.000000000 +0100
@@ -0,0 +1,3 @@
+# Bump the version number of the shared libgcc library
+
+SHLIB_SOVERSION = 2
diff -urN --exclude=CVS gcc/config/pa/t-slibgcc-elf-ver gcc/config/pa/t-slibgcc-elf-ver
--- gcc/config/pa/t-slibgcc-elf-ver	1970-01-01 01:00:00.000000000 +0100
+++ gcc/config/pa/t-slibgcc-elf-ver	2004-02-15 11:26:14.000000000 +0100
@@ -0,0 +1,3 @@
+# Bump the version number of the shared libgcc library
+
+SHLIB_SOVERSION = 2
diff -urN --exclude=CVS gcc/config/t-slibgcc-elf-ver gcc/config/t-slibgcc-elf-ver
--- gcc/config/t-slibgcc-elf-ver	2003-08-12 08:10:32.000000000 +0200
+++ gcc/config/t-slibgcc-elf-ver	2004-02-15 11:26:02.000000000 +0100
@@ -3,8 +3,9 @@
 
 SHLIB_EXT = .so
 SHLIB_SOLINK = @shlib_base_name@.so
-SHLIB_SONAME = @shlib_so_name@.so.1
-SHLIB_NAME = @shlib_dir@@shlib_so_name@.so.1
+SHLIB_SOVERSION = 1
+SHLIB_SONAME = @shlib_so_name@.so.$(SHLIB_SOVERSION)
+SHLIB_NAME = @shlib_dir@@shlib_so_name@.so.$(SHLIB_SOVERSION)
 SHLIB_MAP = @shlib_map_file@
 SHLIB_OBJS = @shlib_objs@
 SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@
diff -urN --exclude=CVS gcc/config.gcc gcc/config.gcc
--- gcc/config.gcc	2004-01-26 08:44:25.000000000 +0100
+++ gcc/config.gcc	2004-02-15 11:57:33.000000000 +0100
@@ -769,6 +769,11 @@
 	tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h pa/pa-linux.h \
 		 pa/pa32-regs.h pa/pa32-linux.h"
 	tmake_file="t-slibgcc-elf-ver t-linux pa/t-linux"
+	# if not configured with --enable-sjlj-exceptions, bump the
+	# libgcc version number
+	if test x$sjlj != x1; then
+	    tmake_file="$tmake_file pa/t-slibgcc-elf-ver"
+	fi
 	;;
 # port not yet contributed.
 #hppa*-*-openbsd*)
@@ -1424,6 +1435,11 @@
 	tm_file="m68k/m68k.h dbxelf.h elfos.h svr4.h linux.h m68k/linux.h"
 	tm_defines="MOTOROLA USE_GAS"
 	tmake_file="t-slibgcc-elf-ver t-linux"
+	# if not configured with --enable-sjlj-exceptions, bump the
+	# libgcc version number
+	if test x$sjlj != x1; then
+	    tmake_file="$tmake_file m68k/t-slibgcc-elf-ver"
+	fi
 	;;
 m68k-*-rtems*)
 	tmake_file="m68k/t-m68kbare m68k/t-crtstuff t-rtems m68k/t-rtems"



Reply to: