summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu/packages/gcc.scm12
1 files changed, 12 insertions, 0 deletions
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index db1984306e..f11e506bc7 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -173,6 +173,18 @@ where the OS part is overloaded to denote a specific ABI---into GCC
~a"
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.
(substitute* "fixincludes/fixincl.x"
(("static char const sed_cmd_z\\[\\] =.*;")