authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-05-16 14:17:00-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-05-16 14:19:13-04:00
log978fab817caacb7bb3ba96fe3ec08bab1c78c1da
tree584a749d0d79d662f12454b0e2179dde12ad3056
parent81e960eb748fdb37d1d61da262ec343e2fdb2511
signaturelock-open Commit is signed but in an unrecognized format.

the wasm freestanding _start function is return value void


2 files changed, 14 insertions(+), 11 deletions(-)

std/special/bootstrap.zig+12-9
......@@ -8,17 +8,24 @@ const assert = std.debug.assert;
88
99var argc_ptr: [*]usize = undefined;
1010
11const is_wasm = switch (builtin.arch) { .wasm32, .wasm64 => true, else => false};
12
1113comptime {
12 const strong_linkage = builtin.GlobalLinkage.Strong;
1314 if (builtin.link_libc) {
14 @export("main", main, strong_linkage);
15 } else if (builtin.os == builtin.Os.windows) {
16 @export("WinMainCRTStartup", WinMainCRTStartup, strong_linkage);
15 @export("main", main, .Strong);
16 } else if (builtin.os == .windows) {
17 @export("WinMainCRTStartup", WinMainCRTStartup, .Strong);
18 } else if (is_wasm and builtin.os == .freestanding) {
19 @export("_start", wasm_freestanding_start, .Strong);
1720 } else {
18 @export("_start", _start, strong_linkage);
21 @export("_start", _start, .Strong);
1922 }
2023}
2124
25extern fn wasm_freestanding_start() void {
26 _ = callMain();
27}
28
2229nakedcc fn _start() noreturn {
2330 if (builtin.os == builtin.Os.wasi) {
2431 std.os.wasi.proc_exit(callMain());
......@@ -40,10 +47,6 @@ nakedcc fn _start() noreturn {
4047 : [argc] "=r" (-> [*]usize)
4148 );
4249 },
43 .wasm32, .wasm64 => {
44 _ = callMain();
45 while (true) {}
46 },
4750 else => @compileError("unsupported arch"),
4851 }
4952 // If LLVM inlines stack variables into _start, they will overwrite
std/special/c.zig+2-2
......@@ -17,8 +17,8 @@ comptime {
1717}
1818
1919extern fn main(argc: c_int, argv: [*][*]u8) c_int;
20extern fn wasm_start() c_int {
21 return main(0, undefined);
20extern fn wasm_start() void {
21 _ = main(0, undefined);
2222}
2323
2424// Avoid dragging in the runtime safety mechanisms into this .o file,