ghc-internal-9.1401.0: cbits/RtsIface.c
/*
* (c) The GHC Team, 2025-2026
*
* RTS/ghc-internal interface
*
* See Note [RTS/ghc-internal interface].
*/
#include "Rts.h"
void init_ghc_hs_iface(void);
// Forward declarations
#define CLOSURE(module, symbol) \
extern StgClosure ghczminternal_##module##_##symbol;
#define UNDEF_CLOSURE(module, symbol)
#define INFO_TBL(module, symbol) \
extern const StgInfoTable ghczminternal_##module##_##symbol;
#include "RtsIfaceSymbols.h"
#undef CLOSURE
#undef UNDEF_CLOSURE
#undef INFO_TBL
// HsIface definition
#define CLOSURE(module, symbol) \
.symbol = &ghczminternal_##module##_##symbol,
#define UNDEF_CLOSURE(module, symbol) \
.symbol = NULL,
#define INFO_TBL(module, symbol) \
.symbol = &ghczminternal_##module##_##symbol,
static HsIface the_ghc_hs_iface = {
#include "RtsIfaceSymbols.h"
};
void init_ghc_hs_iface(void)
{
/*
* N.B. ghc-internal may be load multiple times, e.g., when the
* RTS linker is in use. For this reason we explicitly refuse to
* override ghc_hs_iface if it has already been initialized.
*/
if (ghc_hs_iface == NULL) {
ghc_hs_iface = &the_ghc_hs_iface;
}
}