]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go/internal/load,cmd/link/internal/ld: use objabi.LookupPkgSpecial(pkg).Runtime
authorJes Cok <xigua67damn@gmail.com>
Wed, 12 Mar 2025 15:46:37 +0000 (15:46 +0000)
committerMichael Pratt <mpratt@google.com>
Thu, 13 Mar 2025 14:40:35 +0000 (07:40 -0700)
As suggested by Michael in CL 655515.

Change-Id: Idf0b879287bd777d03443aebc7351fcb0d724885
GitHub-Last-Rev: 58eda020f5310f873674f56903facec4f212d6c0
GitHub-Pull-Request: golang/go#72806
Reviewed-on: https://go-review.googlesource.com/c/go/+/656856
Reviewed-by: David Chase <drchase@google.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>

src/cmd/go/internal/load/pkg.go
src/cmd/link/internal/ld/data.go

index 9d8523725aa596a327d4e7c791b66bfc477ef643..5524f86044637f591e7a3550622b25a59909383e 100644 (file)
@@ -7,6 +7,7 @@ package load
 
 import (
        "bytes"
+       "cmd/internal/objabi"
        "context"
        "encoding/json"
        "errors"
@@ -3561,7 +3562,7 @@ func SelectCoverPackages(roots []*Package, match []func(*Package) bool, op strin
                // $GOROOT/src/internal/coverage/pkid.go dealing with
                // hard-coding of runtime package IDs.
                cmode := cfg.BuildCoverMode
-               if cfg.BuildRace && p.Standard && p.ImportPath == "runtime" {
+               if cfg.BuildRace && p.Standard && objabi.LookupPkgSpecial(p.ImportPath).Runtime {
                        cmode = "regonly"
                }
 
index 67ee71bab3193913ba063b680af61ef13c8b5a3a..ca394700cfe34f57a392a11cc6762123ea2a754f 100644 (file)
@@ -55,30 +55,8 @@ import (
 )
 
 // 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 {
-       switch pkg {
-       case "runtime",
-               "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/asan",
-               "internal/bytealg", // for IndexByte
-               "internal/byteorder",
-               "internal/chacha8rand", // for rand
-               "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 strings.HasPrefix(pkg, "internal/runtime/") && !strings.HasSuffix(pkg, "_test")
+       return objabi.LookupPkgSpecial(pkg).Runtime
 }
 
 // Estimate the max size needed to hold any new trampolines created for this function. This