compiler: support //go:linknamestd pragma

Go 1.27 introduced the //go:linknamestd directive, a standard-library
variant of //go:linkname that does not require importing "unsafe". The
iter package switched to it for referencing runtime.newcoro and
runtime.coroswitch, which caused "linker could not find symbol
iter.newcoro / iter.coroswitch" errors when building with Go 1.27.

Handle //go:linknamestd the same as //go:linkname, bypassing the unsafe
import requirement, and add test coverage in the pragma compiler test.

Signed-off-by: deadprogram <ron@hybridgroup.com>
This commit is contained in:
deadprogram
2026-06-30 20:39:18 +02:00
committed by Ron Evans
parent 35a61ac8c5
commit 6d49f0177b
3 changed files with 9 additions and 1 deletions
+1 -1
View File
@@ -515,7 +515,7 @@ func (c *compilerContext) parsePragmas(info *functionInfo, f *ssa.Function) {
info.inline = inlineHint
case "//go:noinline":
info.inline = inlineNone
case "//go:linkname":
case "//go:linkname", "//go:linknamestd":
if len(parts) != 3 || parts[1] != f.Name() {
continue
}