1
0
mirror of https://github.com/golang/go synced 2024-11-21 23:34:42 -07:00
go/lib
Cherry Mui 4ffa2aecc1 cmd/internal/obj/wasm: correct return PC for frameless wasmexport wrappers
For a wasmexport wrapper, we generate a call to the actual
exported Go function, and use the wrapper function's PC 1 as the
(fake) return address. This address is not used for returning,
which is handled by the Wasm call stack. It is used for stack
unwinding, and PC 1 makes it past the prologue and therefore has
the right SP delta. But if the function has no arguments and
results, the wrapper is frameless, with no prologue, and PC 1
doesn't exist. This causes the unwinder to fail. In this case, we
put PC 0, which also has the correct SP delta (0).

Fixes #69584.

Change-Id: Ic047a6e62100db540b5099cc5a56a1d0f16d58b9
Reviewed-on: https://go-review.googlesource.com/c/go/+/624000
Reviewed-by: David Chase <drchase@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-11-13 20:09:36 +00:00
..
time lib/time: update to 2024b/2024b 2024-09-23 14:25:08 +00:00
wasm cmd/internal/obj/wasm: correct return PC for frameless wasmexport wrappers 2024-11-13 20:09:36 +00:00