diff options
author | Thomas Tuegel <ttuegel@gmail.com> | 2016-09-01 12:07:36 -0500 |
---|---|---|
committer | Thomas Tuegel <ttuegel@gmail.com> | 2016-09-01 12:07:36 -0500 |
commit | 54125b4af4e0788f1f72580aa4dbda7f57db0ff7 (patch) | |
tree | 2b19b1baaf05d4558e770df22f9eba547050c839 | |
parent | 571ee39714f2488ffef3432dd588c6f4af91dcad (diff) |
ghc801: disable MADV_FREE
-rw-r--r-- | pkgs/development/compilers/ghc/8.0.1.nix | 2 | ||||
-rw-r--r-- | pkgs/development/compilers/ghc/ghc-no-madv-free.patch | 18 |
2 files changed, 19 insertions, 1 deletions
diff --git a/pkgs/development/compilers/ghc/8.0.1.nix b/pkgs/development/compilers/ghc/8.0.1.nix index d28eab8d25e26..e607ef7e27061 100644 --- a/pkgs/development/compilers/ghc/8.0.1.nix +++ b/pkgs/development/compilers/ghc/8.0.1.nix @@ -28,7 +28,7 @@ stdenv.mkDerivation rec { # Fix https://ghc.haskell.org/trac/ghc/ticket/12130 (fetchFilteredPatch { url = https://git.haskell.org/ghc.git/patch/4d71cc89b4e9648f3fbb29c8fcd25d725616e265; sha256 = "0syaxb4y4s2dc440qmrggb4vagvqqhb55m6mx12rip4i9qhxl8k0"; }) (fetchFilteredPatch { url = https://git.haskell.org/ghc.git/patch/2f8cd14fe909a377b3e084a4f2ded83a0e6d44dd; sha256 = "06zvlgcf50ab58bw6yw3krn45dsmhg4cmlz4nqff8k4z1f1bj01v"; }) - ]; + ] ++ stdenv.lib.optional stdenv.isLinux ./ghc-no-madv-free.patch; buildInputs = [ ghc perl hscolour ]; diff --git a/pkgs/development/compilers/ghc/ghc-no-madv-free.patch b/pkgs/development/compilers/ghc/ghc-no-madv-free.patch new file mode 100644 index 0000000000000..8fea9f920126a --- /dev/null +++ b/pkgs/development/compilers/ghc/ghc-no-madv-free.patch @@ -0,0 +1,18 @@ +diff --git a/rts/posix/OSMem.c b/rts/posix/OSMem.c +index 99620ee..e052a84 100644 +--- a/rts/posix/OSMem.c ++++ b/rts/posix/OSMem.c +@@ -523,13 +523,7 @@ void osDecommitMemory(void *at, W_ size) + sysErrorBelch("unable to make released memory unaccessible"); + #endif + +-#ifdef MADV_FREE +- // Try MADV_FREE first, FreeBSD has both and MADV_DONTNEED +- // just swaps memory out +- r = madvise(at, size, MADV_FREE); +-#else + r = madvise(at, size, MADV_DONTNEED); +-#endif + if(r < 0) + sysErrorBelch("unable to decommit memory"); + } |