From: Cherry Zhang Date: Tue, 11 Aug 2020 18:58:03 +0000 (-0400) Subject: [dev.link] cmd/internal/obj: traverse files in deterministic order X-Git-Tag: go1.16beta1~1378^2~4 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=991adcd21b57b9d906021f972eb01534176ad493;p=gostls13.git [dev.link] cmd/internal/obj: traverse files in deterministic order CL 245485 introduced a map for used files in a function. When numbering symbols, make sure we traverse the files in deterministic order. Should fix longtest builders. Change-Id: I1006bc5425116ab40e33a61e8f5acd1bdb4abad9 Reviewed-on: https://go-review.googlesource.com/c/go/+/247997 Run-TryBot: Cherry Zhang Reviewed-by: Than McIntosh TryBot-Result: Gobot Gobot --- diff --git a/src/cmd/internal/obj/sym.go b/src/cmd/internal/obj/sym.go index cf78849cda..34f61b7f62 100644 --- a/src/cmd/internal/obj/sym.go +++ b/src/cmd/internal/obj/sym.go @@ -368,7 +368,12 @@ func (ctxt *Link) traverseFuncAux(flag traverseFlag, fsym *LSym, fn func(parent } } files := ctxt.PosTable.FileTable() + usedFiles := make([]goobj.CUFileIndex, 0, len(pc.UsedFiles)) for f := range pc.UsedFiles { + usedFiles = append(usedFiles, f) + } + sort.Slice(usedFiles, func(i, j int) bool { return usedFiles[i] < usedFiles[j] }) + for _, f := range usedFiles { if filesym := ctxt.Lookup(files[f]); filesym != nil { fn(fsym, filesym) }