Link pre-ARMv6 spinlocks into all RTS variants
authorJoachim Breitner <mail@joachim-breitner.de>
Wed, 10 Dec 2014 00:18:11 +0000 (18:18 -0600)
committerAustin Seipp <austin@well-typed.com>
Wed, 10 Dec 2014 01:59:27 +0000 (19:59 -0600)
commitdf1307f079ae69dcd735e0973de987b141d509da
treeb8335df94c75e12078ebfc7b05f1eff897a84854
parent8b480d3192e6eff6183934d7bbcc2054611c3651
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
includes/stg/SMP.h
rts/OldARMAtomic.c