the wasm freestanding _start function is return value void
This commit is contained in:
parent
81e960eb74
commit
978fab817c
|
@ -8,17 +8,24 @@ const assert = std.debug.assert;
|
|||
|
||||
var argc_ptr: [*]usize = undefined;
|
||||
|
||||
const is_wasm = switch (builtin.arch) { .wasm32, .wasm64 => true, else => false};
|
||||
|
||||
comptime {
|
||||
const strong_linkage = builtin.GlobalLinkage.Strong;
|
||||
if (builtin.link_libc) {
|
||||
@export("main", main, strong_linkage);
|
||||
} else if (builtin.os == builtin.Os.windows) {
|
||||
@export("WinMainCRTStartup", WinMainCRTStartup, strong_linkage);
|
||||
@export("main", main, .Strong);
|
||||
} else if (builtin.os == .windows) {
|
||||
@export("WinMainCRTStartup", WinMainCRTStartup, .Strong);
|
||||
} else if (is_wasm and builtin.os == .freestanding) {
|
||||
@export("_start", wasm_freestanding_start, .Strong);
|
||||
} else {
|
||||
@export("_start", _start, strong_linkage);
|
||||
@export("_start", _start, .Strong);
|
||||
}
|
||||
}
|
||||
|
||||
extern fn wasm_freestanding_start() void {
|
||||
_ = callMain();
|
||||
}
|
||||
|
||||
nakedcc fn _start() noreturn {
|
||||
if (builtin.os == builtin.Os.wasi) {
|
||||
std.os.wasi.proc_exit(callMain());
|
||||
|
@ -40,10 +47,6 @@ nakedcc fn _start() noreturn {
|
|||
: [argc] "=r" (-> [*]usize)
|
||||
);
|
||||
},
|
||||
.wasm32, .wasm64 => {
|
||||
_ = callMain();
|
||||
while (true) {}
|
||||
},
|
||||
else => @compileError("unsupported arch"),
|
||||
}
|
||||
// If LLVM inlines stack variables into _start, they will overwrite
|
||||
|
|
|
@ -17,8 +17,8 @@ comptime {
|
|||
}
|
||||
|
||||
extern fn main(argc: c_int, argv: [*][*]u8) c_int;
|
||||
extern fn wasm_start() c_int {
|
||||
return main(0, undefined);
|
||||
extern fn wasm_start() void {
|
||||
_ = main(0, undefined);
|
||||
}
|
||||
|
||||
// Avoid dragging in the runtime safety mechanisms into this .o file,
|
||||
|
|
Loading…
Reference in New Issue
Block a user