-- misc opts
opt_IgnoreDotGhci,
opt_ErrorSpans,
- opt_EmitCExternDecls,
opt_GranMacros,
opt_HiVersion,
opt_HistorySize,
#include "HsVersions.h"
-import Util ( consIORef )
import CmdLineParser
import Config ( cProjectVersionInt, cProjectPatchLevel,
cGhcUnregisterised )
import Maybes ( firstJust )
import Panic ( GhcException(..), ghcError )
-import EXCEPTION ( throwDyn )
-import DATA_IOREF
-import UNSAFE_IO ( unsafePerformIO )
-import Monad ( when )
-import Char ( isDigit )
+import Control.Exception ( throwDyn )
+import Data.IORef
+import System.IO.Unsafe ( unsafePerformIO )
+import Control.Monad ( when )
+import Data.Char ( isDigit )
import Data.List ( sort, intersperse, nub )
-----------------------------------------------------------------------------
opt_LiberateCaseThreshold = lookup_def_int "-fliberate-case-threshold" (10::Int)
opt_MaxWorkerArgs = lookup_def_int "-fmax-worker-args" (10::Int)
-opt_EmitCExternDecls = lookUp FSLIT("-femit-extern-decls")
opt_GranMacros = lookUp FSLIT("-fgransim")
opt_HiVersion = read (cProjectVersionInt ++ cProjectPatchLevel) :: Int
opt_HistorySize = lookup_def_int "-fhistory-size" 20
"fauto-sccs-on-individual-cafs",
"fscc-profiling",
"fticky-ticky",
- "fall-strict",
"fdicts-strict",
"firrefutable-tuples",
"fparallel",
"fflatten",
- "fsemi-tagging",
- "flet-no-escape",
- "femit-extern-decls",
- "fglobalise-toplev-names",
"fgransim",
"fno-hi-version-check",
"dno-black-holing",
"static",
"funregisterised",
"fext-core",
- "frule-check",
"frules-off",
"fcpr-off",
"ferror-spans",
_ `allowedWith` WayDebug = True
WayDebug `allowedWith` _ = True
- WayThreaded `allowedWith` WayProf = True
WayProf `allowedWith` WayUnreg = True
WayProf `allowedWith` WayNDP = True
_ `allowedWith` _ = False
way_details =
[ (WayThreaded, Way "thr" True "Threaded" [
#if defined(freebsd_TARGET_OS)
- "-optc-pthread"
- , "-optl-pthread"
+-- "-optc-pthread"
+-- , "-optl-pthread"
+ -- FreeBSD's default threading library is the KSE-based M:N libpthread,
+ -- which GHC has some problems with. It's currently not clear whether
+ -- the problems are our fault or theirs, but it seems that using the
+ -- alternative 1:1 threading library libthr works around it:
+ "-optl-lthr"
#elif defined(solaris2_TARGET_OS)
"-optl-lrt"
#endif