summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShenghou Ma <minux.ma@gmail.com>2012-07-05 15:24:33 -0400
committerShenghou Ma <minux.ma@gmail.com>2012-07-05 15:24:33 -0400
commita49172663cb4082dcbafa8200b70c93b1c19314a (patch)
tree2bc666a94c1368257ca55f80490f5cef485e976c
parenta54f920bfe473721ef98d94feb88f395cb642cd4 (diff)
downloadgo-git-a49172663cb4082dcbafa8200b70c93b1c19314a.tar.gz
cmd/cgo: make typedef map traversal order consistent
So that _cgo_gotypes.go will be the same for the same source code. R=nigeltao CC=golang-dev https://golang.org/cl/6357067
-rw-r--r--src/cmd/cgo/out.go9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/cmd/cgo/out.go b/src/cmd/cgo/out.go
index 2ab974c979..ae572d6dc6 100644
--- a/src/cmd/cgo/out.go
+++ b/src/cmd/cgo/out.go
@@ -14,6 +14,7 @@ import (
"go/printer"
"go/token"
"os"
+ "sort"
"strings"
)
@@ -57,7 +58,13 @@ func (p *Package) writeDefs() {
fmt.Fprintf(fgo2, "type _ unsafe.Pointer\n\n")
fmt.Fprintf(fgo2, "func _Cerrno(dst *error, x int) { *dst = syscall.Errno(x) }\n")
- for name, def := range typedef {
+ typedefNames := make([]string, 0, len(typedef))
+ for name := range typedef {
+ typedefNames = append(typedefNames, name)
+ }
+ sort.Strings(typedefNames)
+ for _, name := range typedefNames {
+ def := typedef[name]
fmt.Fprintf(fgo2, "type %s ", name)
conf.Fprint(fgo2, fset, def.Go)
fmt.Fprintf(fgo2, "\n\n")