Merge pull request #47309 from dtzWill/fix/libgomp-gcc-musl
gcc*: fix libgomp (OpenMP) to work w/musl, don't build DSO using initial-exec
This commit is contained in:
commit
93b30a8809
@ -60,6 +60,7 @@ let version = "5.5.0";
|
||||
++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch
|
||||
++ optional noSysDirs ../no-sys-dirs.patch
|
||||
++ optional langFortran ../gfortran-driving.patch
|
||||
++ optional (targetPlatform.libc == "musl") ../libgomp-dont-force-initial-exec.patch
|
||||
++ optional stdenv.hostPlatform.isMusl (fetchpatch {
|
||||
url = https://raw.githubusercontent.com/richfelker/musl-cross-make/e84b1bd1fc12a3def33111ca6df522cd6e5ec361/patches/gcc-5.3.0/0001-musl.diff;
|
||||
sha256 = "0pppbf8myi2kjhm3z3479ihn1cm60kycfv60gj8yy1bs0pl1qcfm";
|
||||
@ -331,7 +332,12 @@ stdenv.mkDerivation ({
|
||||
# On Illumos/Solaris GNU as is preferred
|
||||
"--with-gnu-as" "--without-gnu-ld"
|
||||
]
|
||||
++ optional (targetPlatform == hostPlatform && targetPlatform.libc == "musl") "--disable-libsanitizer"
|
||||
++ optionals (targetPlatform == hostPlatform && targetPlatform.libc == "musl") [
|
||||
"--disable-libsanitizer"
|
||||
"--disable-symvers"
|
||||
"libat_cv_have_ifunc=no"
|
||||
"--disable-gnu-indirect-function"
|
||||
]
|
||||
;
|
||||
|
||||
targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null;
|
||||
|
@ -61,6 +61,7 @@ let version = "6.4.0";
|
||||
++ optional langFortran ../gfortran-driving.patch
|
||||
++ [ ../struct-ucontext.patch ../struct-sigaltstack.patch ] # glibc-2.26
|
||||
++ optional langJava [ ../struct-ucontext-libjava.patch ] # glibc-2.26
|
||||
++ optional (targetPlatform.libc == "musl") ../libgomp-dont-force-initial-exec.patch
|
||||
;
|
||||
|
||||
javaEcj = fetchurl {
|
||||
@ -336,7 +337,12 @@ stdenv.mkDerivation ({
|
||||
# On Illumos/Solaris GNU as is preferred
|
||||
"--with-gnu-as" "--without-gnu-ld"
|
||||
]
|
||||
++ optional (targetPlatform == hostPlatform && targetPlatform.libc == "musl") "--disable-libsanitizer"
|
||||
++ optionals (targetPlatform == hostPlatform && targetPlatform.libc == "musl") [
|
||||
"--disable-libsanitizer"
|
||||
"--disable-symvers"
|
||||
"libat_cv_have_ifunc=no"
|
||||
"--disable-gnu-indirect-function"
|
||||
]
|
||||
;
|
||||
|
||||
targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null;
|
||||
|
@ -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";
|
||||
@ -292,7 +293,12 @@ stdenv.mkDerivation ({
|
||||
# On Illumos/Solaris GNU as is preferred
|
||||
"--with-gnu-as" "--without-gnu-ld"
|
||||
]
|
||||
++ optional (targetPlatform == hostPlatform && targetPlatform.libc == "musl") "--disable-libsanitizer"
|
||||
++ optionals (targetPlatform == hostPlatform && targetPlatform.libc == "musl") [
|
||||
"--disable-libsanitizer"
|
||||
"--disable-symvers"
|
||||
"libat_cv_have_ifunc=no"
|
||||
"--disable-gnu-indirect-function"
|
||||
]
|
||||
++ optional (targetPlatform.isAarch64) "--enable-fix-cortex-a53-843419"
|
||||
;
|
||||
|
||||
|
@ -51,7 +51,8 @@ let version = "8.2.0";
|
||||
sha256 = ""; # TODO: uncomment and check hash when available.
|
||||
}) */
|
||||
++ 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";
|
||||
@ -284,7 +285,12 @@ stdenv.mkDerivation ({
|
||||
# On Illumos/Solaris GNU as is preferred
|
||||
"--with-gnu-as" "--without-gnu-ld"
|
||||
]
|
||||
++ optional (targetPlatform == hostPlatform && targetPlatform.libc == "musl") "--disable-libsanitizer"
|
||||
++ optionals (targetPlatform == hostPlatform && targetPlatform.libc == "musl") [
|
||||
"--disable-libsanitizer"
|
||||
"--disable-symvers"
|
||||
"libat_cv_have_ifunc=no"
|
||||
"--disable-gnu-indirect-function"
|
||||
]
|
||||
;
|
||||
|
||||
targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null;
|
||||
|
@ -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
|
||||
|
@ -60,7 +60,7 @@ let
|
||||
TARGET = "ATHLON";
|
||||
DYNAMIC_ARCH = "1";
|
||||
CC = "gcc";
|
||||
USE_OPENMP = if stdenv.hostPlatform.isMusl then "0" else "1";
|
||||
USE_OPENMP = "1";
|
||||
};
|
||||
};
|
||||
in
|
||||
|
Loading…
Reference in New Issue
Block a user