Use the gold linker for linux/ARM and android/ARM targets.
authorErik de Castro Lopo <erikd@mega-nerd.com>
Thu, 12 Mar 2015 03:36:50 +0000 (14:36 +1100)
committerErik de Castro Lopo <erikd@mega-nerd.com>
Thu, 12 Mar 2015 03:36:33 +0000 (14:36 +1100)
commit71fcc4c096ec0b575522e4c2d0104ef7a71a13c5
tree742a91723032531f5aad8fe3345e5ac914dc887b
parentec67f8136a8953c4813f875b7c9390aa81c2c9aa
Use the gold linker for linux/ARM and android/ARM targets.

Fixes #8976 and #9873 by making use of the Binutils ld.gold
linker explicit whenever the target is linux/ARM or android/ARM.
This does not affect iOS where Apple provides its own linker.

In order to achieve this, we need to add `-fuse-ld=gold` to
the SettingsCCompilerLinkFlags setting and set
SettingsLdCommand to `ld.gold` (or `${target}-ld.gold` when
cross-compiling). In addition, simplifying the use of
`$(CONF_GCC_LINKER_OPTS_STAGEn)`.

This patch was tested by ensuring that the following worked
as expected:

  * Native builds on linux/x86_64 (nothing changed).
  * Native builds on linux/arm (and uses the gold linker).
  * Linux to linux/arm cross compiles (and uses the cross
    gold linker).

Contributions by Ben Gamari, Joachim Breitner and Reid Barton.

Reviewers: nomeata, bgamari, austin, rwbarton

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D715

GHC Trac Issues: #8976 #9873
aclocal.m4
configure.ac
libffi/ghc.mk
mk/config.mk.in
rules/build-package-data.mk
rules/distdir-opts.mk