~ruther/guix-local

9097e666d48c9b6c0263dcbe60b5af69ff7689f4 — Mark H Weaver 11 years ago 91c47be
gnu: gcc: Add '-lgcc_s' only when '-pthread' is given.

Suggested by Ludovic Courtès <ludo@gnu.org>.

* gnu/packages/gcc.scm (gcc-4.7): In our modified GNU_USER_TARGET_LIB_SPEC,
  add '-lgcc_s' only when '-pthread' is given.
1 files changed, 8 insertions(+), 6 deletions(-)

M gnu/packages/gcc.scm
M gnu/packages/gcc.scm => gnu/packages/gcc.scm +8 -6
@@ 1,5 1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 201,14 202,15 @@ where the OS part is overloaded to denote a specific ABI---into GCC
                (substitute* (find-files "gcc/config"
                                         "^gnu-user.*\\.h$")
                  (("#define GNU_USER_TARGET_LIB_SPEC (.*)$" _ suffix)
                   ;; Help libgcc_s.so be found (see also below.)  Always use
                   ;; '-lgcc_s' so that libgcc_s.so is always found by those
                   ;; programs that use 'pthread_cancel' (glibc dlopens
                   ;; libgcc_s.so when pthread_cancel support is needed, but
                   ;; having it in the application's RUNPATH isn't enough; see
                   ;; Help libgcc_s.so be found (see also below.)  When
                   ;; -pthread is given, use '-lgcc_s' so that libgcc_s.so is
                   ;; always found by those programs that use 'pthread_cancel'
                   ;; (glibc dlopens libgcc_s.so when pthread_cancel support
                   ;; is needed, but having it in the application's RUNPATH
                   ;; isn't enough; see
                   ;; <http://sourceware.org/ml/libc-help/2013-11/msg00023.html>.)
                   (format #f "#define GNU_USER_TARGET_LIB_SPEC \
\"-L~a/lib %{!static:-rpath=~a/lib %{!static-libgcc:-rpath=~a/lib64 -rpath=~a/lib -lgcc_s}} \" ~a"
\"-L~a/lib %{!static:-rpath=~a/lib %{!static-libgcc:-rpath=~a/lib64 -rpath=~a/lib %{pthread:-lgcc_s}}} \" ~a"
                           libc libc libdir libdir suffix))
                  (("#define GNU_USER_TARGET_STARTFILE_SPEC.*$" line)
                   (format #f "#define STANDARD_STARTFILE_PREFIX_1 \"~a/lib\"