1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-11-28 01:06:17 +00:00
freebsd-ports/lang/gcc8
Gerald Pfeifer 724c16a4c1 GCC has two runtime libraries: The static library libgcc.a (-lgcc) and
the shared library libgcc_s.so (-lgcc_s).  Both implement many of the
same functions but they also each have their unique functions.  When
GCC links programs and libraries there are three possibilities:

1. gcc -static-libgcc or gcc -static: -lgcc
   => Just use libgcc.a.

2. gcc -shared-libgcc: -lgcc_s -lgcc
   => Link with libgcc_s first, so libgcc.a is only used for its unique
      functions.

3. gcc: -lgcc -Wl,--as-needed -lgcc_s -Wl,--no-as-needed
   => Link with libgcc.a first so libgcc_s is only used for its unique
      functions (_Unwind_* functions).

Approach 3 is the default for gcc and it's also what clang and clang++ use;
approach 2 is the default for gfortran, g++ and probably other front ends.

This patch makes 3 the default for gfortran.  It significantly reduces
the use of libgcc_s.  The _Unwind_* functions are also available in the
old base system libgcc_s which means this reduces the need for
-rpath /usr/local/lib/gccN in ports that depend on libraries built with
gfortran.  Consider a dependency tree like this:

  prog -> libA -> libgcc_s (old base system libgcc_s is fine)
       -> libB -> libgcc_s (libB built with gfortran, needs new libgcc_s)

Here prog needs to be linked with -rpath /usr/local/lib/gccN even if it's
a normal C program compiled with clang.  Without -rpath it will fail to
start because it loads old libgcc_s first as a dependency of libA and then
it fails to load libB.  With this patch libB works with old base system
libgcc_s or may not need libgcc_s at all, so prog does not need to be
linked with -rpath.

PR:		208120
Submitted by:	tijl
MFH:		2019Q2 (important user visible improvement)
2019-04-15 23:08:04 +00:00
..
files GCC has two runtime libraries: The static library libgcc.a (-lgcc) and 2019-04-15 23:08:04 +00:00
distinfo Update to the GCC 8.3 release which fixes more than 153 bugs compared to 2019-02-24 09:53:23 +00:00
Makefile GCC has two runtime libraries: The static library libgcc.a (-lgcc) and 2019-04-15 23:08:04 +00:00
pkg-descr No longer require a not too old version of GCC to build on powerpc64, but 2019-03-07 09:55:52 +00:00
pkg-plist