Marge Bot pushed to branch wip/marge_bot_batch_merge_job at Glasgow Haskell Compiler / GHC Commits: 554487a7 by Rodrigo Mesquita at 2025-10-01T23:04:43-04:00 cleanup: Drop obsolete comment about HsConDetails HsConDetails used to have an argument representing the type of the tyargs in a list: data HsConDetails tyarg arg rec = PrefixCon [tyarg] [arg] This datatype was shared across 3 synonyms: HsConPatDetails, HsConDeclH98Details, HsPatSynDetails. In the latter two cases, `tyarg` was instanced to `Void` meaning the list was always empty for these cases. In 7b84c58867edca57a45945a20a9391724db6d9e4, this was refactored such that HsConDetails no longer needs a type of tyargs by construction. The first case now represents the type arguments in the args type itself, with something like: ConPat "MkE" [InvisP tp1, InvisP tp2, p1, p2] So the deleted comment really is just obsolete. Fixes #26461 - - - - - eccf0e38 by Cheng Shao at 2025-10-01T23:37:01-04:00 testsuite: remove unused expected output files This patch removes unused expected output files in the testsuites on platforms that we no longer support. - - - - - 7445c498 by Ben Gamari at 2025-10-01T23:37:02-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. - - - - - 911b0177 by Cheng Shao at 2025-10-01T23:37:03-04:00 compiler: only invoke keepCAFsForGHCi if internal-interpreter is enabled This patch makes the ghc library only invoke keepCAFsForGHCi if internal-interpreter is enabled. For cases when it's not (e.g. the host build of a cross ghc), this avoids unnecessarily retaining all CAFs in the heap. Also fixes the type signature of c_keepCAFsForGHCi to match the C ABI. - - - - - 17 changed files: - compiler/GHC.hs - compiler/Language/Haskell/Syntax/Decls.hs - compiler/cbits/keepCAFsForGHCi.c - compiler/ghc.cabal.in - + 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 - − testsuite/tests/process/process010.stdout-i386-unknown-solaris2 - − testsuite/tests/rts/linker/T11223/T11223_link_order_a_b_2_fail.stderr-ws-32-mingw32 - − testsuite/tests/rts/linker/T11223/T11223_simple_duplicate_lib.stderr-ws-32-mingw32 - − testsuite/tests/rts/outofmem.stderr-i386-apple-darwin - − testsuite/tests/rts/outofmem.stderr-i386-unknown-mingw32 - − testsuite/tests/rts/outofmem.stderr-powerpc-apple-darwin Changes: ===================================== compiler/GHC.hs ===================================== @@ -463,6 +463,9 @@ import System.Exit ( exitWith, ExitCode(..) ) import System.FilePath import System.IO.Error ( isDoesNotExistError ) +#if defined(HAVE_INTERNAL_INTERPRETER) +import Foreign.C +#endif -- %************************************************************************ -- %* * @@ -597,12 +600,12 @@ withCleanupSession ghc = ghc `MC.finally` cleanup initGhcMonad :: GhcMonad m => Maybe FilePath -> m () initGhcMonad mb_top_dir = setSession =<< liftIO ( do -#if !defined(javascript_HOST_ARCH) +#if defined(HAVE_INTERNAL_INTERPRETER) -- The call to c_keepCAFsForGHCi must not be optimized away. Even in non-debug builds. -- So we can't use assertM here. -- See Note [keepCAFsForGHCi] in keepCAFsForGHCi.c for details about why. !keep_cafs <- c_keepCAFsForGHCi - massert keep_cafs + massert $ keep_cafs /= 0 #endif initHscEnv mb_top_dir ) @@ -2092,7 +2095,7 @@ mkApiErr :: DynFlags -> SDoc -> GhcApiError mkApiErr dflags msg = GhcApiError (showSDoc dflags msg) -#if !defined(javascript_HOST_ARCH) +#if defined(HAVE_INTERNAL_INTERPRETER) foreign import ccall unsafe "keepCAFsForGHCi" - c_keepCAFsForGHCi :: IO Bool + c_keepCAFsForGHCi :: IO CBool #endif ===================================== compiler/Language/Haskell/Syntax/Decls.hs ===================================== @@ -1120,8 +1120,6 @@ or contexts in two parts: -- | The arguments in a Haskell98-style data constructor. type HsConDeclH98Details pass = HsConDetails (HsConDeclField pass) (XRec pass [LHsConDeclRecField pass]) --- The Void argument to HsConDetails here is a reflection of the fact that --- type applications are not allowed in data constructor declarations. -- | The arguments in a GADT constructor. Unlike Haskell98-style constructors, -- GADT constructors cannot be declared with infix syntax. As a result, we do ===================================== compiler/cbits/keepCAFsForGHCi.c ===================================== @@ -21,7 +21,7 @@ // the constructor to be run, allowing the assertion to succeed in the first place // as keepCAFs will have been set already during initialization of constructors. - +#if defined(HAVE_INTERNAL_INTERPRETER) bool keepCAFsForGHCi(void) __attribute__((constructor)); @@ -32,4 +32,4 @@ bool keepCAFsForGHCi(void) return was_set; } - +#endif ===================================== compiler/ghc.cabal.in ===================================== @@ -156,6 +156,7 @@ Library if flag(internal-interpreter) CPP-Options: -DHAVE_INTERNAL_INTERPRETER + cc-options: -DHAVE_INTERNAL_INTERPRETER -- if no dynamic system linker is available, don't try DLLs. if flag(dynamic-system-linker) ===================================== 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 ===================================== testsuite/tests/process/process010.stdout-i386-unknown-solaris2 deleted ===================================== @@ -1,4 +0,0 @@ -ExitSuccess -ExitFailure 255 -Exc: /non/existent: rawSystem: runInteractiveProcess: exec: does not exist (No such file or directory) -Done ===================================== testsuite/tests/rts/linker/T11223/T11223_link_order_a_b_2_fail.stderr-ws-32-mingw32 deleted ===================================== @@ -1,25 +0,0 @@ -GHC runtime linker: fatal error: I found a duplicate definition for symbol - _a -whilst processing object file - E:\ghc-dev\msys64\home\Tamar\ghc\testsuite\tests\rts\T11223\T11223_link_order_a_b_2_fail.run\libfoo_link_lib_3.a -The symbol was previously defined in - E:\ghc-dev\msys64\home\Tamar\ghc\testsuite\tests\rts\T11223\T11223_link_order_a_b_2_fail.run\libbar_link_lib_3.a(#3:bar_link_lib_3.o) -This could be caused by: - * Loading two different object files which export the same symbol - * Specifying the same object file twice on the GHCi command line - * An incorrect `package.conf' entry, causing some object to be - loaded twice. -ghc-stage2.exe: ^^ Could not load '_c', dependency unresolved. See top entry above. You might consider using --optimistic-linking - - -GHC.ByteCode.Linker: can't find label -During interactive linking, GHCi couldn't find the following symbol: - c -This may be due to you not asking GHCi to load extra object files, -archives or DLLs needed by your current session. Restart GHCi, specifying -the missing library using the -L/path/to/object/dir and -lmissinglibname -flags, or simply by naming the relevant files on the GHCi command line. -Alternatively, this link failure might indicate a bug in GHCi. -If you suspect the latter, please report this as a GHC bug: - https://www.haskell.org/ghc/reportabug - ===================================== testsuite/tests/rts/linker/T11223/T11223_simple_duplicate_lib.stderr-ws-32-mingw32 deleted ===================================== @@ -1,25 +0,0 @@ -GHC runtime linker: fatal error: I found a duplicate definition for symbol - _a -whilst processing object file - E:\ghc-dev\msys64\home\Tamar\ghc\testsuite\tests\rts\T11223\T11223_simple_duplicate_lib.run\libfoo_dup_lib.a -The symbol was previously defined in - E:\ghc-dev\msys64\home\Tamar\ghc\testsuite\tests\rts\T11223\T11223_simple_duplicate_lib.run\bar_dup_lib.o -This could be caused by: - * Loading two different object files which export the same symbol - * Specifying the same object file twice on the GHCi command line - * An incorrect `package.conf' entry, causing some object to be - loaded twice. -ghc-stage2.exe: ^^ Could not load '_c', dependency unresolved. See top entry above. You might consider using --optimistic-linking - - -GHC.ByteCode.Linker: can't find label -During interactive linking, GHCi couldn't find the following symbol: - c -This may be due to you not asking GHCi to load extra object files, -archives or DLLs needed by your current session. Restart GHCi, specifying -the missing library using the -L/path/to/object/dir and -lmissinglibname -flags, or simply by naming the relevant files on the GHCi command line. -Alternatively, this link failure might indicate a bug in GHCi. -If you suspect the latter, please report this as a GHC bug: - https://www.haskell.org/ghc/reportabug - ===================================== testsuite/tests/rts/outofmem.stderr-i386-apple-darwin deleted ===================================== @@ -1 +0,0 @@ -outofmem: memory allocation failed (requested 1074790400 bytes) ===================================== testsuite/tests/rts/outofmem.stderr-i386-unknown-mingw32 deleted ===================================== @@ -1 +0,0 @@ -outofmem.exe: Out of memory ===================================== testsuite/tests/rts/outofmem.stderr-powerpc-apple-darwin deleted ===================================== @@ -1 +0,0 @@ -outofmem: memory allocation failed (requested 1074790400 bytes) View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/d21638e35db5a32a9420b691c5244fb... -- View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/d21638e35db5a32a9420b691c5244fb... You're receiving this email because of your account on gitlab.haskell.org.