Link pre-ARMv6 spinlocks into all RTS variants

Summary:
For compatibility with ARM machines from pre v6, the RTS provides
implementations of certain atomic operations. Previously, these
were only included in the threaded RTS.

But ghc (the library) contains the code in compiler/cbits/genSym.c, which
uses these operations if there is more than one capability. But there is only
one libHSghc, so the linker wants to resolve these symbols in every case.

By providing these operations in all RTSs, the linker is happy. The only
downside is a small amount of dead code in the non-threaded RTS on old ARM
machines.

Test Plan: It helped here.

Reviewers: bgamari, austin

Reviewed By: bgamari, austin

Subscribers: carter, thomie

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

GHC Trac Issues: #8951

(cherry picked from commit df1307f079ae69dcd735e0973de987b141d509da)
compiler: fix trac issue #9817

Summary:
When we call runHandlers, we must pass it a ForeignPtr. To ensure that
this happens, we introduce a wrapper that receives a plain Ptr and
converts it into a ForeignPtr. Then we adjust startSignalHandlers in
rts/posix/Signals.c to call the wrapper instead of calling runHandlers
directly.

Reviewers: hvr, austin, rwbarton, simonmar

Reviewed By: austin, simonmar

Subscribers: simonmar, thomie, carter

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

GHC Trac Issues: #9817

(cherry picked from commit 7ca5bb090ff78141fbe275b058a9e35ee496bd58)
cabal: Update to fix notorious '-fPIC' bug

This sentence contains the word 'submodule' because it is a requirement.

Signed-off-by: Austin Seipp <austin@well-typed.com>
Make libffi install into a predictable directory (#9620)

On some systems (depending on gcc multilib configuration) libffi
would install into libffi/build/inst/lib64 even though we configure
it with --libdir=libffi/build/inst/lib. There appears to be no way
to get libffi to install to a predictable directory "out of the box",
so we apply a small patch to Makefile.in. This is the same fix used
in Gentoo's ebuild (https://bugs.gentoo.org/show_bug.cgi?id=462814).

(cherry picked from commit 835d874df1973b7e1c602a747b42b77095592a9c)
Fix detection of GNU gold linker if invoked via gcc with parameters

Previously the linker was called without any commandline parameters to
detect whether bfd or gold is used. However the -fuse-ld parameter can
be used to switch between gold and bfd and should be taken into account
here.

Trac #9336

Signed-off-by: Austin Seipp <austin@well-typed.com>
(cherry picked from commit e7b414a3cc0e27049f2608f5e0a00c47146cc46d)
ghc.mk: fix list for dll-split on GHCi-less builds

To reproduce build failure it's enough to try
to build GHC on amd64 with the following setup:

    $ cat mk/build.mk
    # for #9552
    GhcWithInterpreter = NO

It gives:

    Reachable modules from DynFlags out of date
    Please fix compiler/ghc.mk, or building DLLs on Windows may break (#7780)
    Redundant modules: Bitmap BlockId ... <list of 42 modules>
    <make error>

dll-split among other things makes sure
all mentioned modules are used by DynFlags.
'#ifdef GHCI' keeps is from happening.

Patch moves those 42 modules under
'GhcWithInterpreter' guard.

Fixes Issue #9552

Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
(cherry picked from commit 2a8ea4745d6ff79d6ce17961a64d9013243fc3c6)
fix inconsistency in exported functions from TcSplice.lhs/lhs-boot files when GHCI is not defined

Summary:
This patch fixes inconsistency in exported functions from TcSplice.lhs and TcSplice.lhs-boot
files. It looks like only GHC HEAD is sensitive to it and complains about it while bootstraping
another HEAD. At least this is what happening on Solaris/AMD64 builder machine where GHC 7.9.20140620
is used as a boostrap compiler. The failure does not happen on another builders.

Test Plan: validate

Reviewers: austin

Reviewed By: austin

Subscribers: phaskell, simonmar, relrod, carter

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

(cherry picked from commit d996a1bb4db84727fbf1a8e9461a032e04e544e7)