From 924026e0405396a3f559f163e829b88f30cca49e Mon Sep 17 00:00:00 2001 From: Alec Theriault Date: Tue, 4 Dec 2018 00:21:48 +0000 Subject: 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 --- rts/rts.cabal.in | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'rts') diff --git a/rts/rts.cabal.in b/rts/rts.cabal.in index e9cc7d1b6f..a3f74bebac 100644 --- a/rts/rts.cabal.in +++ b/rts/rts.cabal.in @@ -28,6 +28,8 @@ flag leading-underscore default: @CabalLeadingUnderscore@ flag smp default: True +flag find-ptr + default: False -- Some cabal flags used to control the flavours we want to produce -- for libHSrts in hadrian. By default, we just produce vanilla and -- threaded. The flags "compose": if you enable debug and profiling, @@ -268,9 +270,8 @@ library "-Wl,-u,_hs_atomicwrite8" "-Wl,-u,_hs_atomicwrite16" "-Wl,-u,_hs_atomicwrite32" - "-Wl,-u,_findPtr" - if flag(debug) + if flag(find-ptr) -- This symbol is useful in gdb, but not referred to anywhere, -- so we need to force it to be included in the binary. ld-options: "-Wl,-u,_findPtr" @@ -346,10 +347,10 @@ library "-Wl,-u,hs_atomicwrite16" "-Wl,-u,hs_atomicwrite32" - if flag(debug) + if flag(find-ptr) -- This symbol is useful in gdb, but not referred to anywhere, -- so we need to force it to be included in the binary. - ld-options: "-Wl,-u,_findPtr" + ld-options: "-Wl,-u,findPtr" if os(osx) ld-options: "-Wl,-search_paths_first" -- cgit v1.2.1