Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ghc: apply a patch to fix common gold linker problem #27584

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pkgs/development/compilers/ghc/8.0.2.nix
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
sha256 = "1c8qc4fhkycynk4g1f9hvk53dj6a1vvqi6bklqznns6hw59m8qhi";
};

patches = []
patches = [ ./ghc-gold-linker.patch ]
++ stdenv.lib.optional stdenv.isLinux ./ghc-no-madv-free.patch
++ stdenv.lib.optional stdenv.isDarwin ./ghc-8.0.2-no-cpp-warnings.patch;

Expand Down
2 changes: 2 additions & 0 deletions pkgs/development/compilers/ghc/8.2.1.nix
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ in stdenv.mkDerivation (rec {

postPatch = "patchShebangs .";

patches = [ ./ghc-gold-linker.patch ];

preConfigure = commonPreConfigure;

buildInputs = commonBuildInputs;
Expand Down
54 changes: 54 additions & 0 deletions pkgs/development/compilers/ghc/ghc-gold-linker.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
From 46fe80ab7c0013a929d0934e61429820042a70a9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Niklas=20Hamb=C3=BCchen?= <[email protected]>
Date: Fri, 21 Jul 2017 20:09:11 +0200
Subject: [PATCH 1/2] base: Add `extra-libraries: m` because base uses libm
functions.

Linking with gold needs this because in contrast to ld, gold
doesn't implicitly link libm.

Found by Michael Bishop <[email protected]>.
---
libraries/base/base.cabal | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/libraries/base/base.cabal b/libraries/base/base.cabal
index f00fb8768e5..fd91f268ffe 100644
--- a/libraries/base/base.cabal
+++ b/libraries/base/base.cabal
@@ -342,6 +342,10 @@ Library
WCsubst.h
consUtils.h

+ -- Base uses libm functions. ld.bfd links libm implicitly when necessary.
+ -- Other linkers, like gold, don't, so we have to declare it explicitly.
+ extra-libraries: m
+
-- OS Specific
if os(windows)
-- Windows requires some extra libraries for linking because the RTS

From 900a8f4931e9bc6d3219d9263cfecfc6af8fc766 Mon Sep 17 00:00:00 2001
From: michael bishop <[email protected]>
Date: Sat, 22 Jul 2017 13:12:39 -0300
Subject: [PATCH 2/2] also add -lm to ghc-prim

---
libraries/ghc-prim/ghc-prim.cabal | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/libraries/ghc-prim/ghc-prim.cabal b/libraries/ghc-prim/ghc-prim.cabal
index 00a029efedf..6db85dd69fc 100644
--- a/libraries/ghc-prim/ghc-prim.cabal
+++ b/libraries/ghc-prim/ghc-prim.cabal
@@ -42,6 +42,10 @@ Library
UnliftedFFITypes

build-depends: rts == 1.0.*
+
+ -- Base uses libm functions. ld.bfd links libm implicitly when necessary.
+ -- Other linkers, like gold, don't, so we have to declare it explicitly.
+ extra-libraries: m

exposed-modules:
GHC.CString