Hadrian: include 'findPtr' via find-ptr cabal flag
authorAlec Theriault <alec.theriault@gmail.com>
Tue, 4 Dec 2018 00:21:48 +0000 (00:21 +0000)
committerTamar Christina <tamar@zhox.com>
Tue, 4 Dec 2018 07:15:26 +0000 (07:15 +0000)
commit924026e0405396a3f559f163e829b88f30cca49e
treece1427ed6b4b6edf473a5a25545de22e2d1d1469
parent6090002e19d5c888c2eda0ce06dd84e3c46aa0c9
Hadrian: include 'findPtr' via find-ptr cabal flag

Summary:
This is the latest in the 'findPtr' saga. See

  * 900c47f88784b91517c00be3e1087322e62f698e
  * 561748cb507505bd5b7bd76bdc57796d896b62a2

for the previous attempts. The problem with re-using the 'debug'
cabal flag for the purpose of forcing inclusion of 'findPtr' occurs
when 'debug' is one of the RTS ways, but RTS is not being compiled
with '-DDEBUG':

  * the 'debug' flag gets passed to cabal, signalling to build
    'rts' with the debug flavour, but also forcing inclusion of
    the 'findPtr'/'_findPtr' symbol

  * since '-DDEBUG' isn't enabled, that symbol doesn't show up in
    the libraries, so executable that depend on 'rts' (everything)
    will end up always requiring 'findPtr'/'_findPtr' but 'rts' won'y
    provide it!

The fix is simple: create a a new 'find-ptr' cabal-flag whose only
purpose is forcing '-Wl,-u,findPtr'/'-Wl,-u,_findPtr'. Then, enable that
flag when the RTS is being compiled with '-DDEBUG'

Test Plan: ./hadrian/build.sh -c # on mac

Reviewers: alpmestan, snowleopard, bgamari, erikd, simonmar, Phyx

Reviewed By: alpmestan, snowleopard, Phyx

Subscribers: Phyx, rwbarton, carter

GHC Trac Issues: #15956

Differential Revision: https://phabricator.haskell.org/D5404
hadrian/src/Rules/Test.hs
hadrian/src/Settings/Packages.hs
rts/rts.cabal.in