diff --git a/compiler/symbol.go b/compiler/symbol.go index 4a080cbbce..216aa6eecb 100644 --- a/compiler/symbol.go +++ b/compiler/symbol.go @@ -389,6 +389,13 @@ func (c *compilerContext) parsePragmas(info *functionInfo, f *ssa.Function) { } } } + + // If both //go:wasmexport and //go:export or //export are declared, + // only honor go:wasmexport. + if info.wasmExport != "" { + // TODO: log warning? + info.exported = false + } } // Check whether this function can be used in //go:wasmimport or diff --git a/src/runtime/runtime_wasm_wasip2.go b/src/runtime/runtime_wasip2.go similarity index 75% rename from src/runtime/runtime_wasm_wasip2.go rename to src/runtime/runtime_wasip2.go index 57e6623d33..ba8f52100b 100644 --- a/src/runtime/runtime_wasm_wasip2.go +++ b/src/runtime/runtime_wasip2.go @@ -6,18 +6,19 @@ import ( "unsafe" "internal/wasi/cli/v0.2.0/environment" + wasiclirun "internal/wasi/cli/v0.2.0/run" monotonicclock "internal/wasi/clocks/v0.2.0/monotonic-clock" + + "internal/cm" ) type timeUnit int64 -//export wasi:cli/run@0.2.0#run -func __wasi_cli_run_run() uint32 { - // These need to be initialized early so that the heap can be initialized. - heapStart = uintptr(unsafe.Pointer(&heapStartSymbol)) - heapEnd = uintptr(wasm_memory_size(0) * wasmPageSize) - run() - return 0 +func init() { + wasiclirun.Exports.Run = func() cm.BoolResult { + callMain() + return false + } } var args []string @@ -51,3 +52,6 @@ func sleepTicks(d timeUnit) { func ticks() timeUnit { return timeUnit(monotonicclock.Now()) } + +func beforeExit() { +} diff --git a/src/runtime/runtime_wasmentry.go b/src/runtime/runtime_wasmentry.go index 5a135f428d..7bb1e1b44e 100644 --- a/src/runtime/runtime_wasmentry.go +++ b/src/runtime/runtime_wasmentry.go @@ -1,4 +1,4 @@ -//go:build tinygo.wasm && !wasip2 && !js +//go:build tinygo.wasm && !js package runtime diff --git a/targets/wasip2.json b/targets/wasip2.json index b32a68197e..4b0e675914 100644 --- a/targets/wasip2.json +++ b/targets/wasip2.json @@ -3,6 +3,7 @@ "cpu": "generic", "features": "+bulk-memory,+mutable-globals,+nontrapping-fptoint,+sign-ext", "build-tags": ["tinygo.wasm", "wasip2"], + "buildmode": "c-shared", "goos": "linux", "goarch": "arm", "linker": "wasm-ld",