Reproducible builds are hard to do and require thought being put in the original build. Even something like setting the time and date string to a different one will produce a different binary, so to get all the variables that went into the original compilation just right to be able to land on the same binary from the same code sounds very impractical. Imagine using that as a strategy to check another version of the whole source code…
I’ve recently seen a suite that has a ready made setup to compare sections of asm to the original.
Perfectly matching the full game or even binary isn’t necessary, when you already split the original apart into finer chunks, since you want some better feedback on exactly what sections are wrong.
For a basic example though, if you compile to an elf for example you can take out the code section and there’ll be no metadata. Actually gcc already builds reproducibly by default, even with the metadata section. It doesn’t add any timestamps nor version info.
Reproducible builds are hard to do and require thought being put in the original build. Even something like setting the time and date string to a different one will produce a different binary, so to get all the variables that went into the original compilation just right to be able to land on the same binary from the same code sounds very impractical. Imagine using that as a strategy to check another version of the whole source code…
I’ve recently seen a suite that has a ready made setup to compare sections of asm to the original.
Perfectly matching the full game or even binary isn’t necessary, when you already split the original apart into finer chunks, since you want some better feedback on exactly what sections are wrong.
For a basic example though, if you compile to an elf for example you can take out the code section and there’ll be no metadata. Actually gcc already builds reproducibly by default, even with the metadata section. It doesn’t add any timestamps nor version info.