]> Cypherpunks.ru repositories - gostls13.git/commitdiff
cmd/link: pass -Wl,--no-insert-timestamp to external linker on windows
authorThan McIntosh <thanm@google.com>
Tue, 6 Dec 2022 15:22:09 +0000 (10:22 -0500)
committerThan McIntosh <thanm@google.com>
Tue, 6 Dec 2022 15:55:39 +0000 (15:55 +0000)
Pass -Wl,--no-insert-timestamp to the external linker on windows, so
as to suppress generation of the PE file header data/time stamp. This
is in order to make it possible to get reproducible CGO builds on
windows (note that we already zero the timestamp field in question for
internal linkage).

Updates #35006.

Change-Id: I3d69cf1fd32e099bd9bb4b0431a4c5f43e4b08f3
Reviewed-on: https://go-review.googlesource.com/c/go/+/455535
Run-TryBot: Than McIntosh <thanm@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>

src/cmd/link/internal/ld/lib.go

index d225a8a163f18e312cb9953f6e3030b39c355450..c0730179db4accf3500cb69b56aeab262062d0aa 100644 (file)
@@ -1619,6 +1619,17 @@ func (ctxt *Link) hostlink() {
                argv = append(argv, unusedArguments)
        }
 
+       if ctxt.IsWindows() {
+               // Suppress generation of the PE file header timestamp,
+               // so as to avoid spurious build ID differences between
+               // linked binaries that are otherwise identical other than
+               // the date/time they were linked.
+               const noTimeStamp = "-Wl,--no-insert-timestamp"
+               if linkerFlagSupported(ctxt.Arch, argv[0], altLinker, noTimeStamp) {
+                       argv = append(argv, noTimeStamp)
+               }
+       }
+
        const compressDWARF = "-Wl,--compress-debug-sections=zlib"
        if ctxt.compressDWARF && linkerFlagSupported(ctxt.Arch, argv[0], altLinker, compressDWARF) {
                argv = append(argv, compressDWARF)