Thu May 8 10:14:46 2014 UTC ()
Darwin: Fix an issue that gcc producing binaries linked with a wrong libgcc_s

If we don't install libgcc_s.10.[45].dylib, our gcc links binaries
with *both* /usr/lib/libgcc_s.1.dylib and
${GCC_PREFIX}/lib/libgcc_s.1.dylib, which is certainly a bad thing.

The problem was already reported to the upstream but it caught
seemingly no attention:
http://gcc.gnu.org/ml/gcc-help/2010-07/msg00164.html


(pho)
diff -r1.9 -r1.10 pkgsrc/lang/gcc45/distinfo
diff -r0 -r1.1 pkgsrc/lang/gcc45/patches/patch-libgcc_config_t-slibgcc-darwin

cvs diff -r1.9 -r1.10 pkgsrc/lang/gcc45/Attic/distinfo (expand / switch to unified diff)

--- pkgsrc/lang/gcc45/Attic/distinfo 2014/05/08 02:03:58 1.9
+++ pkgsrc/lang/gcc45/Attic/distinfo 2014/05/08 10:14:46 1.10
@@ -1,19 +1,20 @@ @@ -1,19 +1,20 @@
1$NetBSD: distinfo,v 1.9 2014/05/08 02:03:58 pho Exp $ 1$NetBSD: distinfo,v 1.10 2014/05/08 10:14:46 pho Exp $
2 2
3SHA1 (gcc-4.5.3.tar.bz2) = 73c45dfda5eef6b124be53e56828b5925198cc1b 3SHA1 (gcc-4.5.3.tar.bz2) = 73c45dfda5eef6b124be53e56828b5925198cc1b
4RMD160 (gcc-4.5.3.tar.bz2) = d07aa90f2186b4e082dfd5ad5d5188c097fb6247 4RMD160 (gcc-4.5.3.tar.bz2) = d07aa90f2186b4e082dfd5ad5d5188c097fb6247
5Size (gcc-4.5.3.tar.bz2) = 66374586 bytes 5Size (gcc-4.5.3.tar.bz2) = 66374586 bytes
6SHA1 (patch-aa) = c488dc25e038d97c737c8c72437660598d9e15d3 6SHA1 (patch-aa) = c488dc25e038d97c737c8c72437660598d9e15d3
7SHA1 (patch-ab) = 61bc2ebf150c6e471917e145d74e7795dc162194 7SHA1 (patch-ab) = 61bc2ebf150c6e471917e145d74e7795dc162194
8SHA1 (patch-ac) = 7da8c27d521164c1a7801dda8ca62d1057ac8d32 8SHA1 (patch-ac) = 7da8c27d521164c1a7801dda8ca62d1057ac8d32
9SHA1 (patch-ad) = b72c93d8477a567363616717e20eef1b33e7d307 9SHA1 (patch-ad) = b72c93d8477a567363616717e20eef1b33e7d307
10SHA1 (patch-af) = 54fb9fb3438eb7c646b9d51b6b0cf3ded27d4989 10SHA1 (patch-af) = 54fb9fb3438eb7c646b9d51b6b0cf3ded27d4989
11SHA1 (patch-ag) = b58f8b82fcf17c60eb2700bc54d6625ca45e542b 11SHA1 (patch-ag) = b58f8b82fcf17c60eb2700bc54d6625ca45e542b
12SHA1 (patch-ah) = a963394b0434b82494b7510d4b2705f77acfb668 12SHA1 (patch-ah) = a963394b0434b82494b7510d4b2705f77acfb668
13SHA1 (patch-aj) = 1927ff77d1c51fe9e8927dba582c7d399545ae7b 13SHA1 (patch-aj) = 1927ff77d1c51fe9e8927dba582c7d399545ae7b
14SHA1 (patch-ak) = 3d8a859ba436a4b204bb99f59cd5331d695aa811 14SHA1 (patch-ak) = 3d8a859ba436a4b204bb99f59cd5331d695aa811
15SHA1 (patch-gcc_doc_cppopts.texi) = fba9b651bdef12f9034e75cb43533b50c2c94540 15SHA1 (patch-gcc_doc_cppopts.texi) = fba9b651bdef12f9034e75cb43533b50c2c94540
16SHA1 (patch-gcc_doc_generic.texi) = b255fb30f889a415318a29c50ac0510ccece0bc4 16SHA1 (patch-gcc_doc_generic.texi) = b255fb30f889a415318a29c50ac0510ccece0bc4
17SHA1 (patch-gcc_doc_invoke.texi) = 7418eddc7e4d39fab3da1922ff86965240661fb4 17SHA1 (patch-gcc_doc_invoke.texi) = 7418eddc7e4d39fab3da1922ff86965240661fb4
 18SHA1 (patch-libgcc_config_t-slibgcc-darwin) = 2ddda2dd979f27c623e47db70c5abb3befdb68c9
18SHA1 (patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h) = e328bc56bbb9c3e0a76c8d98a7c0a7b8b8eda22e 19SHA1 (patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h) = e328bc56bbb9c3e0a76c8d98a7c0a7b8b8eda22e
19SHA1 (patch-libstdc++-v3_config_os_bsd_netbsd_ctype__noninline.h) = 38dd700202d741de1eeee01c44eee6e2e363b9c5 20SHA1 (patch-libstdc++-v3_config_os_bsd_netbsd_ctype__noninline.h) = 38dd700202d741de1eeee01c44eee6e2e363b9c5

File Added: pkgsrc/lang/gcc45/patches/Attic/patch-libgcc_config_t-slibgcc-darwin
$NetBSD: patch-libgcc_config_t-slibgcc-darwin,v 1.1 2014/05/08 10:14:46 pho Exp $

If we don't install libgcc_s.10.[45].dylib, our gcc links binaries
with *both* /usr/lib/libgcc_s.1.dylib and
${GCC_PREFIX}/lib/libgcc_s.1.dylib, which is certainly a bad thing.

The problem was already reported to the upstream but it caught
seemingly no attention:
http://gcc.gnu.org/ml/gcc-help/2010-07/msg00164.html

--- libgcc/config/t-slibgcc-darwin.orig	2010-02-02 08:18:48.000000000 +0000
+++ libgcc/config/t-slibgcc-darwin
@@ -26,13 +26,7 @@ SHLIB_MKMAP = $(gcc_srcdir)/mkmap-flat.a
 SHLIB_MKMAP_OPTS = -v leading_underscore=1
 SHLIB_MAPFILES += $(gcc_srcdir)/libgcc-std.ver $(gcc_srcdir)/libgcc-libsystem.ver
 
-# we're only going to build the stubs if the target slib is /usr/lib
-# there is no other case in which they're useful in a live system.
-ifeq (/usr/lib,$(shlib_slibdir))
 LGCC_STUBS = libgcc_s.10.4.dylib libgcc_s.10.5.dylib
-else
-LGCC_STUBS =
-endif
 
 LGCC_FILES = libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)
 LGCC_FILES += $(LGCC_STUBS)