From 2c673f15f655cd5f80b959d60d051aa6865467ec Mon Sep 17 00:00:00 2001 From: Adam Langley Date: Thu, 13 Apr 2017 11:10:44 -0700 Subject: [PATCH] Emit redirector functions in a fixed order. Otherwise the order changes each time, which will make the build egregiously non-deterministic. Change-Id: Idd501ecd118c61a27566eafc61157715e48758bc Reviewed-on: https://boringssl-review.googlesource.com/15026 Commit-Queue: David Benjamin Reviewed-by: David Benjamin CQ-Verified: CQ bot account: commit-bot@chromium.org --- crypto/fipsmodule/delocate.go | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/crypto/fipsmodule/delocate.go b/crypto/fipsmodule/delocate.go index d0998239..d8b5fb3f 100644 --- a/crypto/fipsmodule/delocate.go +++ b/crypto/fipsmodule/delocate.go @@ -23,6 +23,7 @@ import ( "fmt" "os" "path/filepath" + "sort" "strconv" "strings" "unicode/utf8" @@ -289,10 +290,16 @@ func transform(lines []string, symbols map[string]bool) (ret []string) { ret = append(ret, "BORINGSSL_bcm_text_end:") // Emit redirector functions. Each is a single JMP instruction. - for redirectorName, target := range redirectors { - ret = append(ret, ".type "+redirectorName+", @function") - ret = append(ret, redirectorName+":") - ret = append(ret, "\tjmp "+target) + var redirectorNames []string + for name := range redirectors { + redirectorNames = append(redirectorNames, name) + } + sort.Strings(redirectorNames) + + for _, name := range redirectorNames { + ret = append(ret, ".type "+name+", @function") + ret = append(ret, name+":") + ret = append(ret, "\tjmp "+redirectors[name]) } // Emit BSS accessor functions. Each is a single LEA followed by RET.