diff options
Diffstat (limited to 'rts')
-rw-r--r-- | rts/Prelude.h | 10 | ||||
-rw-r--r-- | rts/RtsStartup.c | 6 |
2 files changed, 16 insertions, 0 deletions
diff --git a/rts/Prelude.h b/rts/Prelude.h index d2511b2fc3..5f1e070e33 100644 --- a/rts/Prelude.h +++ b/rts/Prelude.h @@ -19,6 +19,12 @@ #define PRELUDE_CLOSURE(i) extern StgClosure DLL_IMPORT_DATA_VARNAME(i) #endif +/* See Note [Wired-in exceptions are not CAFfy] in GHC.Core.Make. */ +PRELUDE_CLOSURE(ghczmprim_GHCziPrimziPanic_absentSumFieldError_closure); +PRELUDE_CLOSURE(ghczmprim_GHCziPrimziException_raiseUnderflow_closure); +PRELUDE_CLOSURE(ghczmprim_GHCziPrimziException_raiseOverflow_closure); +PRELUDE_CLOSURE(ghczmprim_GHCziPrimziException_raiseDivZZero_closure); + /* Define canonical names so we can abstract away from the actual * modules these names are defined in. */ @@ -111,6 +117,10 @@ PRELUDE_INFO(base_GHCziStable_StablePtr_con_info); #define nonTermination_closure DLL_IMPORT_DATA_REF(base_ControlziExceptionziBase_nonTermination_closure) #define nestedAtomically_closure DLL_IMPORT_DATA_REF(base_ControlziExceptionziBase_nestedAtomically_closure) #define doubleReadException DLL_IMPORT_DATA_REF(base_GHCziIOPort_doubleReadException_closure) +#define absentSumFieldError_closure DLL_IMPORT_DATA_REF(ghczmprim_GHCziPrimziPanic_absentSumFieldError_closure) +#define raiseUnderflowException_closure DLL_IMPORT_DATA_REF(ghczmprim_GHCziPrimziException_raiseUnderflow_closure) +#define raiseOverflowException_closure DLL_IMPORT_DATA_REF(ghczmprim_GHCziPrimziException_raiseOverflow_closure) +#define raiseDivZeroException_closure DLL_IMPORT_DATA_REF(ghczmprim_GHCziPrimziException_raiseDivZZero_closure) #define blockedOnBadFD_closure DLL_IMPORT_DATA_REF(base_GHCziEventziThread_blockedOnBadFD_closure) diff --git a/rts/RtsStartup.c b/rts/RtsStartup.c index d64f87cf7e..649489d1e3 100644 --- a/rts/RtsStartup.c +++ b/rts/RtsStartup.c @@ -213,6 +213,12 @@ static void initBuiltinGcRoots(void) #else getStablePtr((StgPtr)processRemoteCompletion_closure); #endif + + /* See Note [Wired-in exceptions are not CAFfy] in GHC.Core.Make. */ + getStablePtr((StgPtr)absentSumFieldError_closure); + getStablePtr((StgPtr)raiseUnderflowException_closure); + getStablePtr((StgPtr)raiseOverflowException_closure); + getStablePtr((StgPtr)raiseDivZeroException_closure); } void |