From 991adcd21b57b9d906021f972eb01534176ad493 Mon Sep 17 00:00:00 2001 From: Cherry Zhang Date: Tue, 11 Aug 2020 14:58:03 -0400 Subject: [PATCH] [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 --- src/cmd/internal/obj/sym.go | 5 +++++ 1 file changed, 5 insertions(+) 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) } -- 2.50.0