diff options
author | Randy Reddig <[email protected]> | 2024-10-05 02:36:47 +0200 |
---|---|---|
committer | GitHub <[email protected]> | 2024-10-04 17:36:47 -0700 |
commit | 453a1d35c315cb4b2519c86e4d53a7699bbcdea2 (patch) | |
tree | 0d8c7e1f0f7e6466eea25e661d101c64e1aacdc3 | |
parent | 9da8b5c786880e47f6f96b82be7c410af6f9011b (diff) | |
download | tinygo-453a1d35c315cb4b2519c86e4d53a7699bbcdea2.tar.gz tinygo-453a1d35c315cb4b2519c86e4d53a7699bbcdea2.zip |
compiler, runtime: enable go:wasmexport for wasip2 (#4499)
* compiler: prefer go:wasmexport over go:export
* runtime, targets/wasip2: enable -buildmode=c-shared for wasip2
* runtime: rename import from wasi_run to wasiclirun (PR feedback)
-rw-r--r-- | compiler/symbol.go | 7 | ||||
-rw-r--r-- | src/runtime/runtime_wasip2.go (renamed from src/runtime/runtime_wasm_wasip2.go) | 18 | ||||
-rw-r--r-- | src/runtime/runtime_wasmentry.go | 2 | ||||
-rw-r--r-- | targets/wasip2.json | 1 |
4 files changed, 20 insertions, 8 deletions
diff --git a/compiler/symbol.go b/compiler/symbol.go index 4a080cbbc..216aa6eec 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 index 57e6623d3..ba8f52100 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/[email protected]#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 5a135f428..7bb1e1b44 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 b32a68197..4b0e67591 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", |