aboutsummaryrefslogtreecommitdiff
path: root/lib/std
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-04-30 11:24:15 -0700
committerAndrew Kelley <andrew@ziglang.org>2021-04-30 11:24:15 -0700
commitfb95fd84431e399d79266d5c9c4acd8ea124399a (patch)
treeee18dff0451955be7115b94bdf725dc92ae1163e /lib/std
parent2d8d681b5ee34663aa87f0583f7b1a012b17d5b4 (diff)
downloadzig-fb95fd84431e399d79266d5c9c4acd8ea124399a.tar.gz
zig-fb95fd84431e399d79266d5c9c4acd8ea124399a.zip
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.
Diffstat (limited to 'lib/std')
-rw-r--r--lib/std/start.zig4
1 files changed, 4 insertions, 0 deletions
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.