From fb95fd84431e399d79266d5c9c4acd8ea124399a Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Fri, 30 Apr 2021 11:24:15 -0700 Subject: [PATCH] start.zig: unconditionally import the root source file stage1 did this by accident by unconditionally semantically analyzing std.builtin.panic, which imports the root source file to look for a panic handler override. But stage2 is smarter; it will only semantically analyze std.builtin.panic if any panic calls are emitted. So for very simple compilations, the root source file was being ignored, even if it contained `export` functions in it. --- lib/std/start.zig | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/std/start.zig b/lib/std/start.zig index acf7ed5adb..ccd7ae410d 100644 --- a/lib/std/start.zig +++ b/lib/std/start.zig @@ -19,6 +19,10 @@ var argc_argv_ptr: [*]usize = undefined; const start_sym_name = if (native_arch.isMIPS()) "__start" else "_start"; comptime { + // No matter what, we import the root file, so that any export, test, comptime + // decls there get run. + _ = root; + // The self-hosted compiler is not fully capable of handling all of this start.zig file. // Until then, we have simplified logic here for self-hosted. TODO remove this once // self-hosted is capable enough to handle all of the real start.zig logic.