gcc: fix libgomp to not use initial-exec

Only apply w/musl since while it's wrong everywhere it apparently
hasn't broken things entirely w/glibc so keep things as they were.

Patch regenerated from original so that it applies
which isn't saying much since it's simple :).

Source:

https://patchwork.ozlabs.org/patch/154298/

IRC chat on #musl with Rich and others endorses this,
at least at the conceptual level of no shared library
should be using initial-exec TLS.

Fixes various uses of libgomp that previously crashed (before 1.1.20)
or encounter errors (post-1.1.20), such as pythonPackages.cython .
wip/yesman
Will Dietz 6 years ago
parent 3ec0d14140
commit e845be1756
  1. 3
      pkgs/development/compilers/gcc/7/default.nix
  2. 40
      pkgs/development/compilers/gcc/7/libgomp-dont-force-initial-exec.patch

@ -56,7 +56,8 @@ let version = "7.3.0";
sha256 = "0mrvxsdwip2p3l17dscpc1x8vhdsciqw1z5q9i6p5g9yg1cqnmgs";
})
++ optional langFortran ../gfortran-driving.patch
++ optional (targetPlatform.libc == "musl" && targetPlatform.isPower) ../ppc-musl.patch;
++ optional (targetPlatform.libc == "musl" && targetPlatform.isPower) ../ppc-musl.patch
++ optional (targetPlatform.libc == "musl") ./libgomp-dont-force-initial-exec.patch;
/* Cross-gcc settings (build == host != target) */
crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";

@ -0,0 +1,40 @@
From 01c433f4788441c0963005b9d3fad5b2865e6651 Mon Sep 17 00:00:00 2001
From: Will Dietz <w@wdtz.org>
Date: Mon, 24 Sep 2018 19:57:50 -0500
Subject: [PATCH] libgomp/configure.tgt: don't force initial-exec tls-model
---
libgomp/configure.tgt | 17 -----------------
1 file changed, 17 deletions(-)
diff --git a/libgomp/configure.tgt b/libgomp/configure.tgt
index 74d95a570c7..b608c55f0c1 100644
--- a/libgomp/configure.tgt
+++ b/libgomp/configure.tgt
@@ -10,23 +10,6 @@
# XCFLAGS Add extra compile flags to use.
# XLDFLAGS Add extra link flags to use.
-# Optimize TLS usage by avoiding the overhead of dynamic allocation.
-if test $gcc_cv_have_tls = yes ; then
- case "${target}" in
-
- *-*-k*bsd*-gnu*)
- ;;
-
- *-*-linux* | *-*-gnu*)
- XCFLAGS="${XCFLAGS} -ftls-model=initial-exec"
- ;;
-
- *-*-rtems*)
- XCFLAGS="${XCFLAGS} -ftls-model=local-exec"
- ;;
- esac
-fi
-
# Since we require POSIX threads, assume a POSIX system by default.
config_path="posix"
--
2.19.0
Loading…
Cancel
Save