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 @@
1use @import("wasi/core.zig");
1pub use @import("wasi/core.zig");
22
33pub const STDIN_FILENO = 0;
44pub const STDOUT_FILENO = 1;
std/special/bootstrap.zig+4-12
......@@ -14,14 +14,16 @@ comptime {
1414 @export("main", main, strong_linkage);
1515 } else if (builtin.os == builtin.Os.windows) {
1616 @export("WinMainCRTStartup", WinMainCRTStartup, strong_linkage);
17 } else if (builtin.os == builtin.Os.wasi) {
18 @export("_start", wasiStart, strong_linkage);
1917 } else {
2018 @export("_start", _start, strong_linkage);
2119 }
2220}
2321
2422nakedcc fn _start() noreturn {
23 if (builtin.os == builtin.Os.wasi) {
24 std.os.wasi.__wasi_proc_exit(callMain());
25 }
26
2527 switch (builtin.arch) {
2628 builtin.Arch.x86_64 => {
2729 argc_ptr = asm ("lea (%%rsp), %[argc]"
......@@ -45,16 +47,6 @@ nakedcc fn _start() noreturn {
4547 @noInlineCall(posixCallMainAndExit);
4648}
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
5850extern fn WinMainCRTStartup() noreturn {
5951 @setAlignStack(16);
6052 if (!builtin.single_threaded) {