#include #include #include namespace arch::boot { extern "C" { using global_initializer = auto (*)() -> void; extern global_initializer __init_array_start; extern global_initializer __init_array_end; auto invoke_global_constructors() -> void { auto initializers = std::span{&__init_array_start, &__init_array_end}; std::ranges::for_each(initializers, [](auto invokable) { std::invoke(invokable); }); } } } // namespace arch::boot