[Bug 208120] devel/cmake: Strips necessary rpath when installing any GNU compiler from ports

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Sat Apr 27 15:48:12 BST 2019


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=208120

--- Comment #32 from commit-hook at freebsd.org ---
A commit references this bug:

Author: gerald
Date: Sat Apr 27 14:47:53 UTC 2019
New revision: 500211
URL: https://svnweb.freebsd.org/changeset/ports/500211

Log:
  MFH: r499061
  Approved by:  portmgr (miwi)

  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

Changes:
_U  branches/2019Q2/
  branches/2019Q2/lang/gcc8/Makefile
  branches/2019Q2/lang/gcc8/files/patch-gfortran-libgcc

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the kde-freebsd mailing list