]> Cypherpunks.ru repositories - gostls13.git/blobdiff - src/cmd/go/internal/load/pkg.go
[dev.fuzz] all: merge master (c95464f) into dev.fuzz
[gostls13.git] / src / cmd / go / internal / load / pkg.go
index a83cc9a812b674fe863b19c16273f2f6626042f8..5126c46bbc3193db6180800d0a746eef5909e1ef 100644 (file)
@@ -2629,10 +2629,20 @@ func (e *mainPackageError) ImportPath() string {
 
 func setToolFlags(pkgs ...*Package) {
        for _, p := range PackageList(pkgs) {
-               p.Internal.Asmflags = BuildAsmflags.For(p)
-               p.Internal.Gcflags = BuildGcflags.For(p)
-               p.Internal.Ldflags = BuildLdflags.For(p)
-               p.Internal.Gccgoflags = BuildGccgoflags.For(p)
+               appendFlags(p, &p.Internal.Asmflags, &BuildAsmflags)
+               appendFlags(p, &p.Internal.Gcflags, &BuildGcflags)
+               appendFlags(p, &p.Internal.Ldflags, &BuildLdflags)
+               appendFlags(p, &p.Internal.Gccgoflags, &BuildGccgoflags)
+       }
+}
+
+func appendFlags(p *Package, flags *[]string, packageFlag *PerPackageFlag) {
+       if !packageFlag.seenPackages[p] {
+               if packageFlag.seenPackages == nil {
+                       packageFlag.seenPackages = make(map[*Package]bool)
+               }
+               packageFlag.seenPackages[p] = true
+               *flags = append(*flags, packageFlag.For(p)...)
        }
 }