From: Than McIntosh Date: Tue, 6 Dec 2022 15:22:09 +0000 (-0500) Subject: cmd/link: pass -Wl,--no-insert-timestamp to external linker on windows X-Git-Tag: go1.20rc1~18 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=fe67a21625ee811897077b32d4e75566ef74c6c4;p=gostls13.git cmd/link: pass -Wl,--no-insert-timestamp to external linker on windows 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 Reviewed-by: Cherry Mui TryBot-Result: Gopher Robot --- diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go index d225a8a163..c0730179db 100644 --- a/src/cmd/link/internal/ld/lib.go +++ b/src/cmd/link/internal/ld/lib.go @@ -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)