cmd/link: update runtime dependency list

There have been a number of internal packages that the runtime
package depends on. Update the list. We should stop using a hard-
coded list.

Change-Id: I6f9338d6690d955b8200f3301addd0e133a1bfe2
Reviewed-on: https://go-review.googlesource.com/c/go/+/636478
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
This commit is contained in:
Cherry Mui 2024-12-16 17:06:35 -05:00
parent d92c34a387
commit 1218566fe5

View file

@ -55,17 +55,31 @@ import (
) )
// isRuntimeDepPkg reports whether pkg is the runtime package or its dependency. // isRuntimeDepPkg reports whether pkg is the runtime package or its dependency.
// TODO: just compute from the runtime package, and remove this hardcoded list.
func isRuntimeDepPkg(pkg string) bool { func isRuntimeDepPkg(pkg string) bool {
switch pkg { switch pkg {
case "runtime", case "runtime",
"sync/atomic", // runtime may call to sync/atomic, due to go:linkname "sync/atomic", // runtime may call to sync/atomic, due to go:linkname // TODO: this is not true?
"internal/abi", // used by reflectcall (and maybe more) "internal/abi", // used by reflectcall (and maybe more)
"internal/bytealg", // for IndexByte "internal/asan",
"internal/bytealg", // for IndexByte
"internal/byteorder",
"internal/chacha8rand", // for rand "internal/chacha8rand", // for rand
"internal/cpu": // for cpu features "internal/coverage/rtcov",
"internal/cpu", // for cpu features
"internal/goarch",
"internal/godebugs",
"internal/goexperiment",
"internal/goos",
"internal/msan",
"internal/profilerecord",
"internal/race",
"internal/stringslite",
"unsafe":
return true return true
} }
return strings.HasPrefix(pkg, "runtime/internal/") && !strings.HasSuffix(pkg, "_test") return (strings.HasPrefix(pkg, "runtime/internal/") || strings.HasPrefix(pkg, "internal/runtime/")) &&
!strings.HasSuffix(pkg, "_test")
} }
// Estimate the max size needed to hold any new trampolines created for this function. This // Estimate the max size needed to hold any new trampolines created for this function. This