gnu: gcc: Really always link against libgcc_s.so.
* gnu/packages/gcc.scm (gcc-4.7): Add snippet to add -lgcc_s to the "lib" spec. Remove --as-needed trick from 65d3b7c: it had no effect in cases where we have !static-libgcc && !shared-libgcc.
This commit is contained in:
parent
0129c94832
commit
a7bf595fff
|
@ -161,11 +161,14 @@ where the OS part is overloaded to denote a specific ABI---into GCC
|
||||||
(substitute* (find-files "gcc/config"
|
(substitute* (find-files "gcc/config"
|
||||||
"^gnu-user.*\\.h$")
|
"^gnu-user.*\\.h$")
|
||||||
(("#define GNU_USER_TARGET_LIB_SPEC (.*)$" _ suffix)
|
(("#define GNU_USER_TARGET_LIB_SPEC (.*)$" _ suffix)
|
||||||
;; Note that with this "lib" spec, we may still add a
|
;; Help libgcc_s.so be found (see also below.) Always use
|
||||||
;; RUNPATH to GCC even when `libgcc_s' is not NEEDED.
|
;; '-lgcc_s' so that libgcc_s.so is always found by those
|
||||||
;; There's not much that can be done to avoid it, though.
|
;; 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 \
|
(format #f "#define GNU_USER_TARGET_LIB_SPEC \
|
||||||
\"-L~a/lib %{!static:-rpath=~a/lib %{!static-libgcc:-rpath=~a/lib64 -rpath=~a/lib}} \" ~a"
|
\"-L~a/lib %{!static:-rpath=~a/lib %{!static-libgcc:-rpath=~a/lib64 -rpath=~a/lib -lgcc_s}} \" ~a"
|
||||||
libc libc out out suffix))
|
libc libc out out suffix))
|
||||||
(("#define GNU_USER_TARGET_STARTFILE_SPEC.*$" line)
|
(("#define GNU_USER_TARGET_STARTFILE_SPEC.*$" line)
|
||||||
(format #f "#define STANDARD_STARTFILE_PREFIX_1 \"~a/lib\"
|
(format #f "#define STANDARD_STARTFILE_PREFIX_1 \"~a/lib\"
|
||||||
|
@ -173,18 +176,6 @@ where the OS part is overloaded to denote a specific ABI---into GCC
|
||||||
~a"
|
~a"
|
||||||
libc line))))
|
libc line))))
|
||||||
|
|
||||||
;; Use '-lgcc_s' rather than '--as-needed -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>.)
|
|
||||||
;; Also, "gcc_cv_ld_as_needed=no" as a configure flag doesn't
|
|
||||||
;; work.
|
|
||||||
(substitute* "gcc/gcc.c"
|
|
||||||
(("#ifndef USE_LD_AS_NEEDED.*$" line)
|
|
||||||
(string-append "#undef USE_LD_AS_NEEDED\n" line)))
|
|
||||||
|
|
||||||
;; Don't retain a dependency on the build-time sed.
|
;; Don't retain a dependency on the build-time sed.
|
||||||
(substitute* "fixincludes/fixincl.x"
|
(substitute* "fixincludes/fixincl.x"
|
||||||
(("static char const sed_cmd_z\\[\\] =.*;")
|
(("static char const sed_cmd_z\\[\\] =.*;")
|
||||||
|
|
Loading…
Reference in New Issue