-disable-init-fini

This commit is contained in:
gingerBill
2026-05-04 11:31:56 +01:00
parent cdc0efce43
commit 781b71e6ea
3 changed files with 11 additions and 0 deletions

View File

@@ -608,6 +608,7 @@ struct BuildContext {
bool bedrock;
bool disable_non_constant_globals;
bool disable_init_fini;
u32 cmd_doc_flags;

View File

@@ -1334,6 +1334,10 @@ gb_internal void check_proc_decl(CheckerContext *ctx, Entity *e, DeclInfo *d) {
e->flags |= EntityFlag_Fini;
}
if (build_context.disable_init_fini && (e->flags & (EntityFlag_Init|EntityFlag_Fini))) {
error(e->token, "@(init) and @(fini) have been disabled with '-disable-init-fini'");
}
if (ac.set_cold) {
e->flags |= EntityFlag_Cold;
}

View File

@@ -396,6 +396,7 @@ enum BuildFlagKind {
BuildFlag_Bedrock,
BuildFlag_DisableNonConstantGlobals,
BuildFlag_DisableInitFini,
// internal use only
BuildFlag_InternalFastISel,
@@ -632,6 +633,7 @@ gb_internal bool parse_build_flags(Array<String> args) {
add_flag(&build_flags, BuildFlag_Bedrock, str_lit("bedrock"), BuildFlagParam_None, Command__does_check);
add_flag(&build_flags, BuildFlag_DisableNonConstantGlobals, str_lit("disable-non-constant-globals"), BuildFlagParam_None, Command__does_check);
add_flag(&build_flags, BuildFlag_DisableInitFini, str_lit("disable-init-fini"), BuildFlagParam_None, Command__does_check);
add_flag(&build_flags, BuildFlag_InternalFastISel, str_lit("internal-fast-isel"), BuildFlagParam_None, Command_all);
add_flag(&build_flags, BuildFlag_InternalIgnoreLazy, str_lit("internal-ignore-lazy"), BuildFlagParam_None, Command_all);
@@ -1609,11 +1611,15 @@ gb_internal bool parse_build_flags(Array<String> args) {
build_context.bedrock = true;
build_context.no_rtti = true;
build_context.disable_non_constant_globals = true;
build_context.disable_init_fini = true;
break;
case BuildFlag_DisableNonConstantGlobals:
build_context.disable_non_constant_globals = true;
break;
case BuildFlag_DisableInitFini:
build_context.disable_init_fini = true;
break;
case BuildFlag_InternalFastISel:
build_context.fast_isel = true;