diff --git a/src/cmd/link/internal/wasm/asm.go b/src/cmd/link/internal/wasm/asm.go
index 7cc6bef6b78daa888c45f1ab26b19208efb280e1..bffbc7c8a671ed9fbb9602f2b2bff207efb69601 100644
--- a/src/cmd/link/internal/wasm/asm.go
+++ b/src/cmd/link/internal/wasm/asm.go
@@ -11,6 +11,7 @@ import (
 	"cmd/link/internal/sym"
 	"io"
 	"regexp"
+	"runtime"
 )
 
 const (
@@ -172,6 +173,7 @@ func asmb(ctxt *ld.Link) {
 		writeBuildID(ctxt, buildid)
 	}
 
+	writeGoVersion(ctxt)
 	writeTypeSec(ctxt, types)
 	writeImportSec(ctxt, hostImports)
 	writeFunctionSec(ctxt, fns)
@@ -220,6 +222,13 @@ func writeBuildID(ctxt *ld.Link, buildid []byte) {
 	writeSecSize(ctxt, sizeOffset)
 }
 
+func writeGoVersion(ctxt *ld.Link) {
+	sizeOffset := writeSecHeader(ctxt, sectionCustom)
+	writeName(ctxt.Out, "go.version")
+	ctxt.Out.Write([]byte(runtime.Version()))
+	writeSecSize(ctxt, sizeOffset)
+}
+
 // writeTypeSec writes the section that declares all function types
 // so they can be referenced by index.
 func writeTypeSec(ctxt *ld.Link, types []*wasmFuncType) {