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 <thanm@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
This commit is contained in:
Than McIntosh 2022-12-06 10:22:09 -05:00
parent 1eb0465fa5
commit fe67a21625
1 changed files with 11 additions and 0 deletions

View 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)