Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 21 Feb 2019 18:05:15 +0100
From:      =?UTF-8?B?VMSzbA==?= Coosemans <tijl@FreeBSD.org>
To:        Diane Bruce <db@db.net>
Cc:        "Russell L. Carter" <rcarter@pinyon.org>, FreeBSD Ports ML <freebsd-ports@freebsd.org>, Eugene Grosbein <eugen@grosbein.net>
Subject:   Re: FreeCAD 0.17 && /lib//libgcc_s.so.1
Message-ID:  <20190221180515.39c79ce6@kalimero.tijl.coosemans.org>
In-Reply-To: <20190217151604.GB68620@night.db.net>
References:  <a2102b4e-7d7a-7d5b-2ba1-b9a14f8574f6@pinyon.org> <f6a45ec9-7ae4-d9ba-f71c-f2ef8c235039@grosbein.net> <416689e6-37f9-17ec-54d8-0d224c26f30f@pinyon.org> <20190217151604.GB68620@night.db.net>

next in thread | previous in thread | raw e-mail | index | archive | help
--MP_/Gfsz.xlpaFf.LKl3Je_X5oe
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

On Sun, 17 Feb 2019 10:16:04 -0500 Diane Bruce <db@db.net> wrote:
> On Sat, Feb 16, 2019 at 06:35:52PM -0700, Russell L. Carter wrote:
>> So I must dig deeper.  Perhaps with rpaths interacting with the system
>> paths?
> 
> You got it. ;)
> Except python doesn't have an rpath which is why this keeps coming
> up over and over again.

Maybe we should just add the gcc rpaths to the python ports LDFLAGS
without depending on gcc.  Then python should use gcc libgcc_s when
it exists and fall back to base system libgcc_s when it doesn't.

Maybe we should compile *all* ports with gcc rpaths without depending
on gcc, just like we already compile everything with -fstack-protector
in LDFLAGS.

There's also the fact that gfortran behaves differently from the C
compilers (both clang and gcc) when it comes to libgcc_s.  Gfortran
always links with libgcc_s.  The C compilers link with libgcc.a first
and then with libgcc_s only as needed.  This eliminates almost all
links with libgcc_s.  The only ones left are for exception handling
and stack unwinding and gcc libgcc_s and base system libgcc_s are
version compatible for that so it doesn't matter which one gets picked
up.  The attached patch for lang/gcc8 makes gfortran behave just like
the C compilers.

We cannot rename the base system libgcc_s to libclang_s because then a
process could load both gcc libgcc_s and base system libclang_s and I
think that could break exception handling and stack unwinding in weird
ways.

--MP_/Gfsz.xlpaFf.LKl3Je_X5oe
Content-Type: text/x-patch
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename=gfortran8.patch

Index: lang/gcc8/files/patch-gcc_fortran_gfortranspec.c
===================================================================
--- lang/gcc8/files/patch-gcc_fortran_gfortranspec.c	(nonexistent)
+++ lang/gcc8/files/patch-gcc_fortran_gfortranspec.c	(working copy)
@@ -0,0 +1,11 @@
+--- gcc/fortran/gfortranspec.c.orig	2018-01-03 10:03:58 UTC
++++ gcc/fortran/gfortranspec.c
+@@ -404,7 +404,7 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR 
+ 	}
+     }
+ 
+-#ifdef ENABLE_SHARED_LIBGCC
++#if 0
+   if (library)
+     {
+       unsigned int i;

Property changes on: lang/gcc8/files/patch-gcc_fortran_gfortranspec.c
___________________________________________________________________
Added: fbsd:nokeywords
## -0,0 +1 ##
+yes
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: lang/gcc8/files/patch-libgfortran_Makefile.in
===================================================================
--- lang/gcc8/files/patch-libgfortran_Makefile.in	(nonexistent)
+++ lang/gcc8/files/patch-libgfortran_Makefile.in	(working copy)
@@ -0,0 +1,11 @@
+--- libgfortran/Makefile.in.orig	2018-07-26 09:48:58 UTC
++++ libgfortran/Makefile.in
+@@ -625,7 +625,7 @@ libgfortran_la_LDFLAGS = -version-info `grep -v '^\#' 
+ 	$(LTLDFLAGS) $(LIBQUADLIB) ../libbacktrace/libbacktrace.la \
+ 	$(HWCAP_LDFLAGS) \
+ 	-lm $(extra_ldflags_libgfortran) \
+-	$(version_arg) -Wc,-shared-libgcc
++	$(version_arg)
+ 
+ libgfortran_la_DEPENDENCIES = $(version_dep) libgfortran.spec $(LIBQUADLIB_DEP)
+ cafexeclib_LTLIBRARIES = libcaf_single.la

Property changes on: lang/gcc8/files/patch-libgfortran_Makefile.in
___________________________________________________________________
Added: fbsd:nokeywords
## -0,0 +1 ##
+yes
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property

--MP_/Gfsz.xlpaFf.LKl3Je_X5oe--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20190221180515.39c79ce6>