blob: ea7a535d437d23123f535c27a23f5d4aff41829f [file] [log] [blame]
static int main_argc;
static char** main_argv;
IMPORT_IMPL(u32, Z_wasi_snapshot_preview1Z_args_sizes_getZ_iii, (u32 pargc, u32 pargv_buf_size), {
wasm_i32_store(pargc, main_argc);
u32 buf_size = 0;
for (u32 i = 0; i < main_argc; i++) {
buf_size += strlen(main_argv[i]) + 1;
}
wasm_i32_store(pargv_buf_size, buf_size);
return 0;
});
IMPORT_IMPL(u32, Z_wasi_snapshot_preview1Z_args_getZ_iii, (u32 argv, u32 argv_buf), {
u32 buf_size = 0;
for (u32 i = 0; i < main_argc; i++) {
u32 ptr = argv_buf + buf_size;
wasm_i32_store(argv + i * 4, ptr);
char* arg = main_argv[i];
strcpy(MEMACCESS(ptr), arg);
buf_size += strlen(arg) + 1;
}
return 0;
});
int main(int argc, char** argv) {
main_argc = argc;
main_argv = argv;
init_fds();
init();
int trap_code;
if ((trap_code = setjmp(g_jmp_buf))) {
printf("[wasm trap %d, halting]\n", trap_code);
return 1;
} else {
WASM_RT_ADD_PREFIX(Z__startZ_vv)();
}
return 0;
}