mirror of
https://github.com/golang/go.git
synced 2025-05-15 20:34:38 +00:00
[dev.link] cmd/link: ensure deterministic order in dynexp
dynexp is used for generating the dynamic symbol table. It is created from a map. Sort it to ensure deterministic order. Should fix solaris build. Change-Id: I561b9da3a4136a7ea41139073f76c98fb069d4fa Reviewed-on: https://go-review.googlesource.com/c/go/+/204378 Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Than McIntosh <thanm@google.com>
This commit is contained in:
parent
851b1f40b4
commit
43d25a61c1
@ -58,6 +58,7 @@ import (
|
|||||||
"os/exec"
|
"os/exec"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
)
|
)
|
||||||
@ -540,6 +541,7 @@ func setupdynexp(ctxt *Link) {
|
|||||||
s := ctxt.Syms.Lookup(exp, 0)
|
s := ctxt.Syms.Lookup(exp, 0)
|
||||||
dynexp = append(dynexp, s)
|
dynexp = append(dynexp, s)
|
||||||
}
|
}
|
||||||
|
sort.Sort(byName(dynexp))
|
||||||
|
|
||||||
// Resolve ABI aliases in the list of cgo-exported functions.
|
// Resolve ABI aliases in the list of cgo-exported functions.
|
||||||
// This is necessary because we load the ABI0 symbol for all
|
// This is necessary because we load the ABI0 symbol for all
|
||||||
|
@ -99,3 +99,10 @@ func contains(s []string, v string) bool {
|
|||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// implements sort.Interface, for sorting symbols by name.
|
||||||
|
type byName []*sym.Symbol
|
||||||
|
|
||||||
|
func (s byName) Len() int { return len(s) }
|
||||||
|
func (s byName) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
|
||||||
|
func (s byName) Less(i, j int) bool { return s[i].Name < s[j].Name }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user