[3.4/3.5 patch] libgcc_s.so compatibility between 3.3 and 3.4 (sjlj/dwarf2 exceptions)
- To: gcc-patches@gcc.gnu.org
- Cc: debian-gcc@lists.debian.org
- Subject: [3.4/3.5 patch] libgcc_s.so compatibility between 3.3 and 3.4 (sjlj/dwarf2 exceptions)
- From: Matthias Klose <doko@cs.tu-berlin.de>
- Date: Mon, 16 Feb 2004 01:48:37 +0100
- Message-id: <[🔎] 16432.4965.44244.581618@gargle.gargle.HOWL>
- In-reply-to: <16431.22625.692103.107840@gargle.gargle.HOWL>
- References: <16404.49716.763863.615830@gargle.gargle.HOWL> <200401261619.i0QGJfSE001634@hiauly1.hia.nrc.ca> <16429.63402.650398.447943@gargle.gargle.HOWL> <20040215001457.GA9730@twiddle.net> <16431.22625.692103.107840@gargle.gargle.HOWL>
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: