diff --git a/src/cmd/link/internal/loader/loader.go b/src/cmd/link/internal/loader/loader.go index e7cc30ab07..0c234e8975 100644 --- a/src/cmd/link/internal/loader/loader.go +++ b/src/cmd/link/internal/loader/loader.go @@ -2394,6 +2394,16 @@ func (l *Loader) checkLinkname(pkg, name string, s Sym) { if pkg == p { return // pkg is allowed } + // crypto/internal/fips140/vX.Y.Z/... is the frozen version of + // crypto/internal/fips140/... and is similarly allowed. + if strings.HasPrefix(pkg, "crypto/internal/fips140/v") { + parts := strings.Split(pkg, "/") + parts = append(parts[:3], parts[4:]...) + pkg := strings.Join(parts, "/") + if pkg == p { + return + } + } } error() }