link.Coff: Basic support for /Brepro in the self-hosted linker.

Just keep things simple and zero the timestamp. It's not obvious that there's
any real benefit to adding complexity and harming performance by computing a
hash of the whole file for the timestamp value.

See:

* https://learn.microsoft.com/en-us/windows/win32/debug/pe-format#general-concepts
* https://learn.microsoft.com/en-us/windows/win32/debug/pe-format#debug-type

In the future, we should at least add an empty `IMAGE_DEBUG_TYPE_REPRO` entry to
the debug data directory for this case, but I didn't want to do too much surgery
right now since it's early days for COFF support in the self-hosted linker.
This commit is contained in:
Alex Rønne Petersen 2024-07-28 15:56:45 +02:00 committed by Jakub Konka
parent d30d37e356
commit c157550928

View file

@ -2289,7 +2289,7 @@ fn writeHeader(self: *Coff) !void {
flags.DLL = 1;
}
const timestamp = std.time.timestamp();
const timestamp = if (self.repro) 0 else std.time.timestamp();
const size_of_optional_header = @as(u16, @intCast(self.getOptionalHeaderSize() + self.getDataDirectoryHeadersSize()));
var coff_header = coff.CoffHeader{
.machine = coff.MachineType.fromTargetCpuArch(target.cpu.arch),