Ben Gamari pushed to branch wip/T26166-1 at Glasgow Haskell Compiler / GHC Commits: 757b4319 by Ben Gamari at 2025-09-29T15:27:57-04:00 rts: Dynamically initialize built-in closures To resolve #26166 we need to eliminate references to undefined symbols in the runtime system. One such source of these is the runtime's static references to `I#` and `C#` due the `stg_INTLIKE` and `stg_CHARLIKE` arrays. To avoid this we make these dynamic, initializing them during RTS start-up. - - - - - 7 changed files: - + rts/BuiltinClosures.c - + rts/BuiltinClosures.h - rts/RtsStartup.c - rts/StgMiscClosures.cmm - rts/include/rts/Constants.h - rts/include/stg/MiscClosures.h - rts/rts.cabal Changes: ===================================== rts/BuiltinClosures.c ===================================== @@ -0,0 +1,30 @@ +#include "Rts.h" +#include "Prelude.h" +#include "BuiltinClosures.h" + +/* + * Note [CHARLIKE and INTLIKE closures] + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + * These are static representations of Chars and small Ints, so that + * we can remove dynamic Chars and Ints during garbage collection and + * replace them with references to the static objects. + */ + +StgIntCharlikeClosure stg_INTLIKE_closure[MAX_INTLIKE - MIN_INTLIKE + 1]; +StgIntCharlikeClosure stg_CHARLIKE_closure[MAX_CHARLIKE - MIN_CHARLIKE + 1]; + +void initBuiltinClosures(void) { + // INTLIKE closures + for (int i = MIN_INTLIKE; i <= MAX_INTLIKE; i++) { + StgIntCharlikeClosure *c = &stg_INTLIKE_closure[i - MIN_INTLIKE]; + SET_HDR((StgClosure* ) c, Izh_con_info, CCS_SYSTEM_OR_NULL); + c->data = i; + } + + // CHARLIKE closures + for (int i = MIN_CHARLIKE; i <= MAX_CHARLIKE; i++) { + StgIntCharlikeClosure *c = &stg_CHARLIKE_closure[i - MIN_CHARLIKE]; + SET_HDR((StgClosure* ) c, Czh_con_info, CCS_SYSTEM_OR_NULL); + c->data = i; + } +} ===================================== rts/BuiltinClosures.h ===================================== @@ -0,0 +1,14 @@ +/* + * (c) The GHC Team, 2025-2026 + * + * RTS/ghc-internal interface + * + */ + +#pragma once + +#include "BeginPrivate.h" + +void initBuiltinClosures(void); + +#include "EndPrivate.h" ===================================== rts/RtsStartup.c ===================================== @@ -14,6 +14,7 @@ #include "linker/MMap.h" #include "RtsFlags.h" #include "RtsUtils.h" +#include "BuiltinClosures.h" #include "Prelude.h" #include "Printer.h" /* DEBUG_LoadSymbols */ #include "Schedule.h" /* initScheduler */ @@ -373,6 +374,9 @@ hs_init_ghc(int *argc, char **argv[], RtsConfig rts_config) traceInitEvent(traceOSProcessInfo); flushTrace(); + /* initialize INTLIKE and CHARLIKE closures */ + initBuiltinClosures(); + /* initialize the storage manager */ initStorage(); ===================================== rts/StgMiscClosures.cmm ===================================== @@ -13,8 +13,6 @@ #include "Cmm.h" import pthread_mutex_lock; -import ghczminternal_GHCziInternalziTypes_Czh_info; -import ghczminternal_GHCziInternalziTypes_Izh_info; import AcquireSRWLockExclusive; import ReleaseSRWLockExclusive; @@ -23,7 +21,6 @@ import whitehole_lockClosure_spin; import whitehole_lockClosure_yield; #endif - #if !defined(UnregisterisedCompiler) import CLOSURE CCS_SYSTEM; import CLOSURE ENT_DYN_IND_ctr; @@ -1031,554 +1028,3 @@ INFO_TABLE_CONSTR(stg_ASYNCIO_LIVE0,0,0,0,CONSTR_NOCAF,"ASYNCIO_LIVE0","ASYNCIO_ { foreign "C" barf("ASYNCIO_LIVE0 object (%p) entered!", R1) never returns; } CLOSURE(stg_ASYNCIO_LIVE0_closure,stg_ASYNCIO_LIVE0); - -/* ---------------------------------------------------------------------------- - Note [CHARLIKE and INTLIKE closures] - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - These are static representations of Chars and small Ints, so that - we can remove dynamic Chars and Ints during garbage collection and - replace them with references to the static objects. - ------------------------------------------------------------------------- */ - -#define Char_hash_con_info ghczminternal_GHCziInternalziTypes_Czh_con_info -#define Int_hash_con_info ghczminternal_GHCziInternalziTypes_Izh_con_info - -#define CHARLIKE_HDR(n) CLOSURE(Char_hash_con_info, n) -#define INTLIKE_HDR(n) CLOSURE(Int_hash_con_info, n) - -section "data" { - stg_CHARLIKE_closure: - CHARLIKE_HDR(0) - CHARLIKE_HDR(1) - CHARLIKE_HDR(2) - CHARLIKE_HDR(3) - CHARLIKE_HDR(4) - CHARLIKE_HDR(5) - CHARLIKE_HDR(6) - CHARLIKE_HDR(7) - CHARLIKE_HDR(8) - CHARLIKE_HDR(9) - CHARLIKE_HDR(10) - CHARLIKE_HDR(11) - CHARLIKE_HDR(12) - CHARLIKE_HDR(13) - CHARLIKE_HDR(14) - CHARLIKE_HDR(15) - CHARLIKE_HDR(16) - CHARLIKE_HDR(17) - CHARLIKE_HDR(18) - CHARLIKE_HDR(19) - CHARLIKE_HDR(20) - CHARLIKE_HDR(21) - CHARLIKE_HDR(22) - CHARLIKE_HDR(23) - CHARLIKE_HDR(24) - CHARLIKE_HDR(25) - CHARLIKE_HDR(26) - CHARLIKE_HDR(27) - CHARLIKE_HDR(28) - CHARLIKE_HDR(29) - CHARLIKE_HDR(30) - CHARLIKE_HDR(31) - CHARLIKE_HDR(32) - CHARLIKE_HDR(33) - CHARLIKE_HDR(34) - CHARLIKE_HDR(35) - CHARLIKE_HDR(36) - CHARLIKE_HDR(37) - CHARLIKE_HDR(38) - CHARLIKE_HDR(39) - CHARLIKE_HDR(40) - CHARLIKE_HDR(41) - CHARLIKE_HDR(42) - CHARLIKE_HDR(43) - CHARLIKE_HDR(44) - CHARLIKE_HDR(45) - CHARLIKE_HDR(46) - CHARLIKE_HDR(47) - CHARLIKE_HDR(48) - CHARLIKE_HDR(49) - CHARLIKE_HDR(50) - CHARLIKE_HDR(51) - CHARLIKE_HDR(52) - CHARLIKE_HDR(53) - CHARLIKE_HDR(54) - CHARLIKE_HDR(55) - CHARLIKE_HDR(56) - CHARLIKE_HDR(57) - CHARLIKE_HDR(58) - CHARLIKE_HDR(59) - CHARLIKE_HDR(60) - CHARLIKE_HDR(61) - CHARLIKE_HDR(62) - CHARLIKE_HDR(63) - CHARLIKE_HDR(64) - CHARLIKE_HDR(65) - CHARLIKE_HDR(66) - CHARLIKE_HDR(67) - CHARLIKE_HDR(68) - CHARLIKE_HDR(69) - CHARLIKE_HDR(70) - CHARLIKE_HDR(71) - CHARLIKE_HDR(72) - CHARLIKE_HDR(73) - CHARLIKE_HDR(74) - CHARLIKE_HDR(75) - CHARLIKE_HDR(76) - CHARLIKE_HDR(77) - CHARLIKE_HDR(78) - CHARLIKE_HDR(79) - CHARLIKE_HDR(80) - CHARLIKE_HDR(81) - CHARLIKE_HDR(82) - CHARLIKE_HDR(83) - CHARLIKE_HDR(84) - CHARLIKE_HDR(85) - CHARLIKE_HDR(86) - CHARLIKE_HDR(87) - CHARLIKE_HDR(88) - CHARLIKE_HDR(89) - CHARLIKE_HDR(90) - CHARLIKE_HDR(91) - CHARLIKE_HDR(92) - CHARLIKE_HDR(93) - CHARLIKE_HDR(94) - CHARLIKE_HDR(95) - CHARLIKE_HDR(96) - CHARLIKE_HDR(97) - CHARLIKE_HDR(98) - CHARLIKE_HDR(99) - CHARLIKE_HDR(100) - CHARLIKE_HDR(101) - CHARLIKE_HDR(102) - CHARLIKE_HDR(103) - CHARLIKE_HDR(104) - CHARLIKE_HDR(105) - CHARLIKE_HDR(106) - CHARLIKE_HDR(107) - CHARLIKE_HDR(108) - CHARLIKE_HDR(109) - CHARLIKE_HDR(110) - CHARLIKE_HDR(111) - CHARLIKE_HDR(112) - CHARLIKE_HDR(113) - CHARLIKE_HDR(114) - CHARLIKE_HDR(115) - CHARLIKE_HDR(116) - CHARLIKE_HDR(117) - CHARLIKE_HDR(118) - CHARLIKE_HDR(119) - CHARLIKE_HDR(120) - CHARLIKE_HDR(121) - CHARLIKE_HDR(122) - CHARLIKE_HDR(123) - CHARLIKE_HDR(124) - CHARLIKE_HDR(125) - CHARLIKE_HDR(126) - CHARLIKE_HDR(127) - CHARLIKE_HDR(128) - CHARLIKE_HDR(129) - CHARLIKE_HDR(130) - CHARLIKE_HDR(131) - CHARLIKE_HDR(132) - CHARLIKE_HDR(133) - CHARLIKE_HDR(134) - CHARLIKE_HDR(135) - CHARLIKE_HDR(136) - CHARLIKE_HDR(137) - CHARLIKE_HDR(138) - CHARLIKE_HDR(139) - CHARLIKE_HDR(140) - CHARLIKE_HDR(141) - CHARLIKE_HDR(142) - CHARLIKE_HDR(143) - CHARLIKE_HDR(144) - CHARLIKE_HDR(145) - CHARLIKE_HDR(146) - CHARLIKE_HDR(147) - CHARLIKE_HDR(148) - CHARLIKE_HDR(149) - CHARLIKE_HDR(150) - CHARLIKE_HDR(151) - CHARLIKE_HDR(152) - CHARLIKE_HDR(153) - CHARLIKE_HDR(154) - CHARLIKE_HDR(155) - CHARLIKE_HDR(156) - CHARLIKE_HDR(157) - CHARLIKE_HDR(158) - CHARLIKE_HDR(159) - CHARLIKE_HDR(160) - CHARLIKE_HDR(161) - CHARLIKE_HDR(162) - CHARLIKE_HDR(163) - CHARLIKE_HDR(164) - CHARLIKE_HDR(165) - CHARLIKE_HDR(166) - CHARLIKE_HDR(167) - CHARLIKE_HDR(168) - CHARLIKE_HDR(169) - CHARLIKE_HDR(170) - CHARLIKE_HDR(171) - CHARLIKE_HDR(172) - CHARLIKE_HDR(173) - CHARLIKE_HDR(174) - CHARLIKE_HDR(175) - CHARLIKE_HDR(176) - CHARLIKE_HDR(177) - CHARLIKE_HDR(178) - CHARLIKE_HDR(179) - CHARLIKE_HDR(180) - CHARLIKE_HDR(181) - CHARLIKE_HDR(182) - CHARLIKE_HDR(183) - CHARLIKE_HDR(184) - CHARLIKE_HDR(185) - CHARLIKE_HDR(186) - CHARLIKE_HDR(187) - CHARLIKE_HDR(188) - CHARLIKE_HDR(189) - CHARLIKE_HDR(190) - CHARLIKE_HDR(191) - CHARLIKE_HDR(192) - CHARLIKE_HDR(193) - CHARLIKE_HDR(194) - CHARLIKE_HDR(195) - CHARLIKE_HDR(196) - CHARLIKE_HDR(197) - CHARLIKE_HDR(198) - CHARLIKE_HDR(199) - CHARLIKE_HDR(200) - CHARLIKE_HDR(201) - CHARLIKE_HDR(202) - CHARLIKE_HDR(203) - CHARLIKE_HDR(204) - CHARLIKE_HDR(205) - CHARLIKE_HDR(206) - CHARLIKE_HDR(207) - CHARLIKE_HDR(208) - CHARLIKE_HDR(209) - CHARLIKE_HDR(210) - CHARLIKE_HDR(211) - CHARLIKE_HDR(212) - CHARLIKE_HDR(213) - CHARLIKE_HDR(214) - CHARLIKE_HDR(215) - CHARLIKE_HDR(216) - CHARLIKE_HDR(217) - CHARLIKE_HDR(218) - CHARLIKE_HDR(219) - CHARLIKE_HDR(220) - CHARLIKE_HDR(221) - CHARLIKE_HDR(222) - CHARLIKE_HDR(223) - CHARLIKE_HDR(224) - CHARLIKE_HDR(225) - CHARLIKE_HDR(226) - CHARLIKE_HDR(227) - CHARLIKE_HDR(228) - CHARLIKE_HDR(229) - CHARLIKE_HDR(230) - CHARLIKE_HDR(231) - CHARLIKE_HDR(232) - CHARLIKE_HDR(233) - CHARLIKE_HDR(234) - CHARLIKE_HDR(235) - CHARLIKE_HDR(236) - CHARLIKE_HDR(237) - CHARLIKE_HDR(238) - CHARLIKE_HDR(239) - CHARLIKE_HDR(240) - CHARLIKE_HDR(241) - CHARLIKE_HDR(242) - CHARLIKE_HDR(243) - CHARLIKE_HDR(244) - CHARLIKE_HDR(245) - CHARLIKE_HDR(246) - CHARLIKE_HDR(247) - CHARLIKE_HDR(248) - CHARLIKE_HDR(249) - CHARLIKE_HDR(250) - CHARLIKE_HDR(251) - CHARLIKE_HDR(252) - CHARLIKE_HDR(253) - CHARLIKE_HDR(254) - CHARLIKE_HDR(255) -} - -section "data" { - stg_INTLIKE_closure: - INTLIKE_HDR(-16) /* MIN_INTLIKE == -16 */ - INTLIKE_HDR(-15) - INTLIKE_HDR(-14) - INTLIKE_HDR(-13) - INTLIKE_HDR(-12) - INTLIKE_HDR(-11) - INTLIKE_HDR(-10) - INTLIKE_HDR(-9) - INTLIKE_HDR(-8) - INTLIKE_HDR(-7) - INTLIKE_HDR(-6) - INTLIKE_HDR(-5) - INTLIKE_HDR(-4) - INTLIKE_HDR(-3) - INTLIKE_HDR(-2) - INTLIKE_HDR(-1) - INTLIKE_HDR(0) - INTLIKE_HDR(1) - INTLIKE_HDR(2) - INTLIKE_HDR(3) - INTLIKE_HDR(4) - INTLIKE_HDR(5) - INTLIKE_HDR(6) - INTLIKE_HDR(7) - INTLIKE_HDR(8) - INTLIKE_HDR(9) - INTLIKE_HDR(10) - INTLIKE_HDR(11) - INTLIKE_HDR(12) - INTLIKE_HDR(13) - INTLIKE_HDR(14) - INTLIKE_HDR(15) - INTLIKE_HDR(16) - INTLIKE_HDR(17) - INTLIKE_HDR(18) - INTLIKE_HDR(19) - INTLIKE_HDR(20) - INTLIKE_HDR(21) - INTLIKE_HDR(22) - INTLIKE_HDR(23) - INTLIKE_HDR(24) - INTLIKE_HDR(25) - INTLIKE_HDR(26) - INTLIKE_HDR(27) - INTLIKE_HDR(28) - INTLIKE_HDR(29) - INTLIKE_HDR(30) - INTLIKE_HDR(31) - INTLIKE_HDR(32) - INTLIKE_HDR(33) - INTLIKE_HDR(34) - INTLIKE_HDR(35) - INTLIKE_HDR(36) - INTLIKE_HDR(37) - INTLIKE_HDR(38) - INTLIKE_HDR(39) - INTLIKE_HDR(40) - INTLIKE_HDR(41) - INTLIKE_HDR(42) - INTLIKE_HDR(43) - INTLIKE_HDR(44) - INTLIKE_HDR(45) - INTLIKE_HDR(46) - INTLIKE_HDR(47) - INTLIKE_HDR(48) - INTLIKE_HDR(49) - INTLIKE_HDR(50) - INTLIKE_HDR(51) - INTLIKE_HDR(52) - INTLIKE_HDR(53) - INTLIKE_HDR(54) - INTLIKE_HDR(55) - INTLIKE_HDR(56) - INTLIKE_HDR(57) - INTLIKE_HDR(58) - INTLIKE_HDR(59) - INTLIKE_HDR(60) - INTLIKE_HDR(61) - INTLIKE_HDR(62) - INTLIKE_HDR(63) - INTLIKE_HDR(64) - INTLIKE_HDR(65) - INTLIKE_HDR(66) - INTLIKE_HDR(67) - INTLIKE_HDR(68) - INTLIKE_HDR(69) - INTLIKE_HDR(70) - INTLIKE_HDR(71) - INTLIKE_HDR(72) - INTLIKE_HDR(73) - INTLIKE_HDR(74) - INTLIKE_HDR(75) - INTLIKE_HDR(76) - INTLIKE_HDR(77) - INTLIKE_HDR(78) - INTLIKE_HDR(79) - INTLIKE_HDR(80) - INTLIKE_HDR(81) - INTLIKE_HDR(82) - INTLIKE_HDR(83) - INTLIKE_HDR(84) - INTLIKE_HDR(85) - INTLIKE_HDR(86) - INTLIKE_HDR(87) - INTLIKE_HDR(88) - INTLIKE_HDR(89) - INTLIKE_HDR(90) - INTLIKE_HDR(91) - INTLIKE_HDR(92) - INTLIKE_HDR(93) - INTLIKE_HDR(94) - INTLIKE_HDR(95) - INTLIKE_HDR(96) - INTLIKE_HDR(97) - INTLIKE_HDR(98) - INTLIKE_HDR(99) - INTLIKE_HDR(100) - INTLIKE_HDR(101) - INTLIKE_HDR(102) - INTLIKE_HDR(103) - INTLIKE_HDR(104) - INTLIKE_HDR(105) - INTLIKE_HDR(106) - INTLIKE_HDR(107) - INTLIKE_HDR(108) - INTLIKE_HDR(109) - INTLIKE_HDR(110) - INTLIKE_HDR(111) - INTLIKE_HDR(112) - INTLIKE_HDR(113) - INTLIKE_HDR(114) - INTLIKE_HDR(115) - INTLIKE_HDR(116) - INTLIKE_HDR(117) - INTLIKE_HDR(118) - INTLIKE_HDR(119) - INTLIKE_HDR(120) - INTLIKE_HDR(121) - INTLIKE_HDR(122) - INTLIKE_HDR(123) - INTLIKE_HDR(124) - INTLIKE_HDR(125) - INTLIKE_HDR(126) - INTLIKE_HDR(127) - INTLIKE_HDR(128) - INTLIKE_HDR(129) - INTLIKE_HDR(130) - INTLIKE_HDR(131) - INTLIKE_HDR(132) - INTLIKE_HDR(133) - INTLIKE_HDR(134) - INTLIKE_HDR(135) - INTLIKE_HDR(136) - INTLIKE_HDR(137) - INTLIKE_HDR(138) - INTLIKE_HDR(139) - INTLIKE_HDR(140) - INTLIKE_HDR(141) - INTLIKE_HDR(142) - INTLIKE_HDR(143) - INTLIKE_HDR(144) - INTLIKE_HDR(145) - INTLIKE_HDR(146) - INTLIKE_HDR(147) - INTLIKE_HDR(148) - INTLIKE_HDR(149) - INTLIKE_HDR(150) - INTLIKE_HDR(151) - INTLIKE_HDR(152) - INTLIKE_HDR(153) - INTLIKE_HDR(154) - INTLIKE_HDR(155) - INTLIKE_HDR(156) - INTLIKE_HDR(157) - INTLIKE_HDR(158) - INTLIKE_HDR(159) - INTLIKE_HDR(160) - INTLIKE_HDR(161) - INTLIKE_HDR(162) - INTLIKE_HDR(163) - INTLIKE_HDR(164) - INTLIKE_HDR(165) - INTLIKE_HDR(166) - INTLIKE_HDR(167) - INTLIKE_HDR(168) - INTLIKE_HDR(169) - INTLIKE_HDR(170) - INTLIKE_HDR(171) - INTLIKE_HDR(172) - INTLIKE_HDR(173) - INTLIKE_HDR(174) - INTLIKE_HDR(175) - INTLIKE_HDR(176) - INTLIKE_HDR(177) - INTLIKE_HDR(178) - INTLIKE_HDR(179) - INTLIKE_HDR(180) - INTLIKE_HDR(181) - INTLIKE_HDR(182) - INTLIKE_HDR(183) - INTLIKE_HDR(184) - INTLIKE_HDR(185) - INTLIKE_HDR(186) - INTLIKE_HDR(187) - INTLIKE_HDR(188) - INTLIKE_HDR(189) - INTLIKE_HDR(190) - INTLIKE_HDR(191) - INTLIKE_HDR(192) - INTLIKE_HDR(193) - INTLIKE_HDR(194) - INTLIKE_HDR(195) - INTLIKE_HDR(196) - INTLIKE_HDR(197) - INTLIKE_HDR(198) - INTLIKE_HDR(199) - INTLIKE_HDR(200) - INTLIKE_HDR(201) - INTLIKE_HDR(202) - INTLIKE_HDR(203) - INTLIKE_HDR(204) - INTLIKE_HDR(205) - INTLIKE_HDR(206) - INTLIKE_HDR(207) - INTLIKE_HDR(208) - INTLIKE_HDR(209) - INTLIKE_HDR(210) - INTLIKE_HDR(211) - INTLIKE_HDR(212) - INTLIKE_HDR(213) - INTLIKE_HDR(214) - INTLIKE_HDR(215) - INTLIKE_HDR(216) - INTLIKE_HDR(217) - INTLIKE_HDR(218) - INTLIKE_HDR(219) - INTLIKE_HDR(220) - INTLIKE_HDR(221) - INTLIKE_HDR(222) - INTLIKE_HDR(223) - INTLIKE_HDR(224) - INTLIKE_HDR(225) - INTLIKE_HDR(226) - INTLIKE_HDR(227) - INTLIKE_HDR(228) - INTLIKE_HDR(229) - INTLIKE_HDR(230) - INTLIKE_HDR(231) - INTLIKE_HDR(232) - INTLIKE_HDR(233) - INTLIKE_HDR(234) - INTLIKE_HDR(235) - INTLIKE_HDR(236) - INTLIKE_HDR(237) - INTLIKE_HDR(238) - INTLIKE_HDR(239) - INTLIKE_HDR(240) - INTLIKE_HDR(241) - INTLIKE_HDR(242) - INTLIKE_HDR(243) - INTLIKE_HDR(244) - INTLIKE_HDR(245) - INTLIKE_HDR(246) - INTLIKE_HDR(247) - INTLIKE_HDR(248) - INTLIKE_HDR(249) - INTLIKE_HDR(250) - INTLIKE_HDR(251) - INTLIKE_HDR(252) - INTLIKE_HDR(253) - INTLIKE_HDR(254) - INTLIKE_HDR(255) /* MAX_INTLIKE == 255 - See #16961 for why 255 */ -} ===================================== rts/include/rts/Constants.h ===================================== @@ -57,11 +57,12 @@ #define MAX_SPEC_CONSTR_SIZE 2 /* Range of built-in table of static small int-like and char-like closures. + * Range is inclusive of both minimum and maximum. * * NB. This corresponds with the number of actual INTLIKE/CHARLIKE * closures defined in rts/StgMiscClosures.cmm. */ -#define MAX_INTLIKE 255 +#define MAX_INTLIKE 255 /* See #16961 for why 255 */ #define MIN_INTLIKE (-16) #define MAX_CHARLIKE 255 ===================================== rts/include/stg/MiscClosures.h ===================================== @@ -277,8 +277,8 @@ RTS_ENTRY(stg_NO_FINALIZER); extern StgWordArray stg_CHARLIKE_closure; extern StgWordArray stg_INTLIKE_closure; #else -extern StgIntCharlikeClosure stg_CHARLIKE_closure[]; -extern StgIntCharlikeClosure stg_INTLIKE_closure[]; +extern StgIntCharlikeClosure stg_CHARLIKE_closure[MAX_CHARLIKE - MIN_CHARLIKE + 1]; +extern StgIntCharlikeClosure stg_INTLIKE_closure[MAX_INTLIKE - MIN_INTLIKE + 1]; #endif /* StgStartup */ ===================================== rts/rts.cabal ===================================== @@ -403,6 +403,7 @@ library adjustor/AdjustorPool.c ExecPage.c Arena.c + BuiltinClosures.c Capability.c CheckUnload.c CheckVectorSupport.c View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/757b4319d11bba64ff23be588b97d2f1... -- View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/757b4319d11bba64ff23be588b97d2f1... You're receiving this email because of your account on gitlab.haskell.org.
participants (1)
-
Ben Gamari (@bgamari)