From 781b71e6ea2a9dc088bd65303f93dac15b83584f Mon Sep 17 00:00:00 2001 From: gingerBill Date: Mon, 4 May 2026 11:31:56 +0100 Subject: [PATCH] `-disable-init-fini` --- src/build_settings.cpp | 1 + src/check_decl.cpp | 4 ++++ src/main.cpp | 6 ++++++ 3 files changed, 11 insertions(+) diff --git a/src/build_settings.cpp b/src/build_settings.cpp index a8592ecf1..41934148e 100644 --- a/src/build_settings.cpp +++ b/src/build_settings.cpp @@ -608,6 +608,7 @@ struct BuildContext { bool bedrock; bool disable_non_constant_globals; + bool disable_init_fini; u32 cmd_doc_flags; diff --git a/src/check_decl.cpp b/src/check_decl.cpp index 625fb6203..207ff8e7b 100644 --- a/src/check_decl.cpp +++ b/src/check_decl.cpp @@ -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; } diff --git a/src/main.cpp b/src/main.cpp index fc67c20e5..2482d6791 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -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 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 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;