aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShritesh Bhattarai <shritesh@shritesh.com>2019-04-13 21:36:53 -0500
committerShritesh Bhattarai <shritesh@shritesh.com>2019-04-13 21:36:53 -0500
commitfe9cd0b4bc9aaf108d4b226710fa3c83612b62e1 (patch)
treeb9e055d122810b763ed5baeba1749e6129e9d913
parent72bcd5a4a50787b0407c21e61d660e59fa74e449 (diff)
downloadzig-fe9cd0b4bc9aaf108d4b226710fa3c83612b62e1.tar.gz
zig-fe9cd0b4bc9aaf108d4b226710fa3c83612b62e1.zip
wasi: use __wasi_proc_exit instead of posix.exit
-rw-r--r--std/os/wasi.zig2
-rw-r--r--std/special/bootstrap.zig16
2 files changed, 5 insertions, 13 deletions
diff --git a/std/os/wasi.zig b/std/os/wasi.zig
index 458669529c..af51b266d9 100644
--- a/std/os/wasi.zig
+++ b/std/os/wasi.zig
@@ -1,4 +1,4 @@
-use @import("wasi/core.zig");
+pub use @import("wasi/core.zig");
pub const STDIN_FILENO = 0;
pub const STDOUT_FILENO = 1;
diff --git a/std/special/bootstrap.zig b/std/special/bootstrap.zig
index e93a85861d..520561d547 100644
--- a/std/special/bootstrap.zig
+++ b/std/special/bootstrap.zig
@@ -14,14 +14,16 @@ comptime {
@export("main", main, strong_linkage);
} else if (builtin.os == builtin.Os.windows) {
@export("WinMainCRTStartup", WinMainCRTStartup, strong_linkage);
- } else if (builtin.os == builtin.Os.wasi) {
- @export("_start", wasiStart, strong_linkage);
} else {
@export("_start", _start, strong_linkage);
}
}
nakedcc fn _start() noreturn {
+ if (builtin.os == builtin.Os.wasi) {
+ std.os.wasi.__wasi_proc_exit(callMain());
+ }
+
switch (builtin.arch) {
builtin.Arch.x86_64 => {
argc_ptr = asm ("lea (%%rsp), %[argc]"
@@ -45,16 +47,6 @@ nakedcc fn _start() noreturn {
@noInlineCall(posixCallMainAndExit);
}
-nakedcc fn wasiStart() noreturn {
- // TODO: Decide if alloc at init is acceptable for args and env
- // @llvm.wasm.mem.grow.i32
- // __wasi_args_get()
- // __wasi_args_sizes_get()
- // __wasi_environ_get()
- // __wasi_environ_sizes_get()
- std.os.posix.exit(callMain());
-}
-
extern fn WinMainCRTStartup() noreturn {
@setAlignStack(16);
if (!builtin.single_threaded) {