[GHC] #7478: setSessionDynFlags does not always work

GHC ghc-devs at haskell.org
Sat Apr 18 17:12:35 UTC 2015


#7478: setSessionDynFlags does not always work
-------------------------------------+-------------------------------------
        Reporter:  edsko             |                   Owner:
            Type:  bug               |                  Status:  new
        Priority:  high              |               Milestone:  7.12.1
       Component:  Compiler          |                 Version:  7.7
      Resolution:                    |                Keywords:
Operating System:  Unknown/Multiple  |            Architecture:
 Type of failure:  None/Unknown      |  Unknown/Multiple
      Blocked By:                    |               Test Case:  ghc-
 Related Tickets:                    |  api/T7478
                                     |                Blocking:
                                     |  Differential Revisions:
-------------------------------------+-------------------------------------

Comment (by bherzog):

 I observe the same problem as [comment:8 thoughtpolice], also on a 32
 bit Linux system (debian Wheezy), but with ghc master
 7b042d5adabdb0fc06286db1a7f9cbf1e9fd1fbf. I have analysed it a bit and I
 think I have a solution or a least a work-around.

 On my system, the flags returned by `getSessionDynFlags` in `T7478.hs` are
 inconsistent with regard to dynamic vs. static linking. The `ways` list is
 empty, so in particular does not contain `WayDyn`, but at the same time,
 `Opt_Static` is not in `generalFlags`. This state of the flags is a bit
 contradictory, because AFAICT, there's some code that only looks at the
 presence of `WayDyn` when deciding whether a static or dynamic build has
 been requested while some other code only looks at `Opt_Static`. A missing
 `WayDyn` means to link statically, whereas a missing `Opt_Static` means
 linking dynamically.

 So the code expects this to be more consistent, which is also apparent
 from the fact that the `updateWays` function sets/unsets `Opt_Static`
 depending on the absence/presence of `WayDyn`.

 A workaround that works for me is to extend `defaultDynFlags` so that it
 applies `updateWays` to the `DynFlags` value it creates.

 I'm not sure that's the correct solution, though.

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/7478#comment:17>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list