aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2021-10-31 01:08:17 +0000
committergingerBill <bill@gingerbill.org>2021-10-31 01:08:17 +0000
commit9a5216921ca44fe25e66c81928f812f13f2d59e0 (patch)
tree6541c693d153ce4fa14bc86741cc167ffe0c8a69 /src/llvm_backend.cpp
parent8a2078aa9027daa863dc0a3603a1afedd5836cb8 (diff)
Add `wasi_wasm32`
Diffstat (limited to 'src/llvm_backend.cpp')
-rw-r--r--src/llvm_backend.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp
index 892f615df..27914efb2 100644
--- a/src/llvm_backend.cpp
+++ b/src/llvm_backend.cpp
@@ -784,6 +784,8 @@ lbProcedure *lb_create_main_procedure(lbModule *m, lbProcedure *startup_runtime)
params->Tuple.variables[2] = alloc_entity_param(nullptr, make_token_ident("lpReserved"), t_rawptr, false, true);
} else if (build_context.metrics.os == TargetOs_windows && build_context.metrics.arch == TargetArch_386) {
name = str_lit("mainCRTStartup");
+ } else if (build_context.metrics.os == TargetOs_wasi) {
+ name = str_lit("_start");
} else {
has_args = true;
slice_init(&params->Tuple.variables, permanent_allocator(), 2);
@@ -885,6 +887,14 @@ lbProcedure *lb_create_main_procedure(lbModule *m, lbProcedure *startup_runtime)
}
lb_end_procedure_body(p);
+
+
+ if (build_context.metrics.os == TargetOs_wasi) {
+ LLVMSetLinkage(p->value, LLVMDLLExportLinkage);
+ } else {
+ LLVMSetLinkage(p->value, LLVMExternalLinkage);
+ }
+
if (!m->debug_builder && LLVMVerifyFunction(p->value, LLVMReturnStatusAction)) {
gb_printf_err("LLVM CODE GEN FAILED FOR PROCEDURE: %s\n", "main");