authorgravatar for shritesh@shritesh.comShritesh Bhattarai <shritesh@shritesh.com> 2019-04-13 21:36:53-05:00
committergravatar for shritesh@shritesh.comShritesh Bhattarai <shritesh@shritesh.com> 2019-04-13 21:36:53-05:00
logfe9cd0b4bc9aaf108d4b226710fa3c83612b62e1
treeb9e055d122810b763ed5baeba1749e6129e9d913
parent72bcd5a4a50787b0407c21e61d660e59fa74e449

wasi: use __wasi_proc_exit instead of posix.exit


2 files changed, 5 insertions(+), 13 deletions(-)

std/os/wasi.zig+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1use @import("wasi/core.zig");1pub use @import("wasi/core.zig");
22
3pub const STDIN_FILENO = 0;3pub const STDIN_FILENO = 0;
4pub const STDOUT_FILENO = 1;4pub const STDOUT_FILENO = 1;
std/special/bootstrap.zig+4-12
...@@ -14,14 +14,16 @@ comptime {...@@ -14,14 +14,16 @@ comptime {
14 @export("main", main, strong_linkage);14 @export("main", main, strong_linkage);
15 } else if (builtin.os == builtin.Os.windows) {15 } else if (builtin.os == builtin.Os.windows) {
16 @export("WinMainCRTStartup", WinMainCRTStartup, strong_linkage);16 @export("WinMainCRTStartup", WinMainCRTStartup, strong_linkage);
17 } else if (builtin.os == builtin.Os.wasi) {
18 @export("_start", wasiStart, strong_linkage);
19 } else {17 } else {
20 @export("_start", _start, strong_linkage);18 @export("_start", _start, strong_linkage);
21 }19 }
22}20}
2321
24nakedcc fn _start() noreturn {22nakedcc fn _start() noreturn {
23 if (builtin.os == builtin.Os.wasi) {
24 std.os.wasi.__wasi_proc_exit(callMain());
25 }
26
25 switch (builtin.arch) {27 switch (builtin.arch) {
26 builtin.Arch.x86_64 => {28 builtin.Arch.x86_64 => {
27 argc_ptr = asm ("lea (%%rsp), %[argc]"29 argc_ptr = asm ("lea (%%rsp), %[argc]"
...@@ -45,16 +47,6 @@ nakedcc fn _start() noreturn {...@@ -45,16 +47,6 @@ nakedcc fn _start() noreturn {
45 @noInlineCall(posixCallMainAndExit);47 @noInlineCall(posixCallMainAndExit);
46}48}
4749
48nakedcc fn wasiStart() noreturn {
49 // TODO: Decide if alloc at init is acceptable for args and env
50 // @llvm.wasm.mem.grow.i32
51 // __wasi_args_get()
52 // __wasi_args_sizes_get()
53 // __wasi_environ_get()
54 // __wasi_environ_sizes_get()
55 std.os.posix.exit(callMain());
56}
57
58extern fn WinMainCRTStartup() noreturn {50extern fn WinMainCRTStartup() noreturn {
59 @setAlignStack(16);51 @setAlignStack(16);
60 if (!builtin.single_threaded) {52 if (!builtin.single_threaded) {