GHC: Expose installSignalHandlers, withCleanupSession
authorBen Gamari <bgamari.foss@gmail.com>
Tue, 30 Aug 2016 21:05:43 +0000 (17:05 -0400)
committerBen Gamari <ben@smart-cactus.org>
Wed, 31 Aug 2016 17:15:33 +0000 (13:15 -0400)
Test Plan: Validate

Reviewers: austin, simonmar

Reviewed By: simonmar

Subscribers: thomie

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

GHC Trac Issues: #12398

compiler/main/GHC.hs
docs/users_guide/8.2.1-notes.rst

index 9dc6853..6a3887a 100644 (file)
@@ -13,6 +13,8 @@ module GHC (
         defaultErrorHandler,
         defaultCleanupHandler,
         prettyPrintGhcErrors,
+        installSignalHandlers,
+        withCleanupSession,
 
         -- * GHC Monad
         Ghc, GhcT, GhcMonad(..), HscEnv,
@@ -437,6 +439,7 @@ runGhc mb_top_dir ghc = do
   ref <- newIORef (panic "empty session")
   let session = Session ref
   flip unGhc session $ do
+    liftIO installSignalHandlers  -- catch ^C
     initGhcMonad mb_top_dir
     withCleanupSession ghc
 
@@ -456,6 +459,7 @@ runGhcT mb_top_dir ghct = do
   ref <- liftIO $ newIORef (panic "empty session")
   let session = Session ref
   flip unGhcT session $ do
+    liftIO installSignalHandlers  -- catch ^C
     initGhcMonad mb_top_dir
     withCleanupSession ghct
 
@@ -490,8 +494,7 @@ withCleanupSession ghc = ghc `gfinally` cleanup
 initGhcMonad :: GhcMonad m => Maybe FilePath -> m ()
 initGhcMonad mb_top_dir
   = do { env <- liftIO $
-                do { installSignalHandlers  -- catch ^C
-                   ; initStaticOpts
+                do { initStaticOpts
                    ; mySettings <- initSysTools mb_top_dir
                    ; dflags <- initDynFlags (defaultDynFlags mySettings)
                    ; checkBrokenTablesNextToCode dflags
index c50990f..bb31d95 100644 (file)
@@ -149,7 +149,10 @@ filepath
 ghc
 ~~~
 
--  TODO FIXME.
+-  The ``GHC.initGhcMonad`` function no longer installs signal handlers by
+   default. This means that the RTS won't attempt to handle Ctrl-C gracefully.
+   If you would like to use GHC's signal handlers, call
+   ``GHC.installSignalHandlers`` during initialization.
 
 ghc-boot
 ~~~~~~~~