commit ad5ea06183c12e8ae18274a72cb5bbc353180400 Author: Georg Koppen gk@torproject.org Date: Mon Aug 4 14:26:34 2014 +0000
Bug 12753: Zeroing timestamps in PE headers.
Switching to a new toolchain for Windows (using Binutils 2.24 and GCC 4.8.3) led to new problems producing Windows bundles in a reliable fashion. Thanks to a patch by a cypherpunk we avoid differences in PE header timestamps as one possible source for the issues mentioned in bug 12753. --- gitian/descriptors/windows/gitian-utils.yml | 3 +++ gitian/patches/peXXigen.patch | 14 ++++++++++++++ 2 files changed, 17 insertions(+)
diff --git a/gitian/descriptors/windows/gitian-utils.yml b/gitian/descriptors/windows/gitian-utils.yml index 87a0bce..87dbe16 100644 --- a/gitian/descriptors/windows/gitian-utils.yml +++ b/gitian/descriptors/windows/gitian-utils.yml @@ -31,6 +31,7 @@ files: - "gcc.tar.bz2" - "openssl.tar.gz" - "gmp.tar.bz2" +- "peXXigen.patch" - "versions" - "dzip.sh" script: | @@ -45,6 +46,8 @@ script: | cd binutils* # XXX: This is needed due to bug 10102. sed 's/= extern_rt_rel_d;/= extern_rt_rel_d;\n memset (extern_rt_rel_d, 0, PE_IDATA5_SIZE);/' -i ld/pe-dll.c + # Zeroing timestamps in PE headers reliably, see bug 12753. + patch -p1 < ../peXXigen.patch ./configure --prefix=$INSTDIR/mingw-w64 --target=i686-w64-mingw32 --disable-multilib make $MAKEOPTS make install diff --git a/gitian/patches/peXXigen.patch b/gitian/patches/peXXigen.patch new file mode 100644 index 0000000..785aa02 --- /dev/null +++ b/gitian/patches/peXXigen.patch @@ -0,0 +1,14 @@ +diff -crB binutils-2.24/bfd/peXXigen.c binutils-2.24/bfd/peXXigen.c +*** binutils-2.24/bfd/peXXigen.c Tue Nov 26 11:37:33 2013 +--- binutils-2.24/bfd/peXXigen.c Mon Aug 4 07:10:15 2014 +*************** +*** 795,800 **** +--- 795,802 ---- + /* Only use a real timestamp if the option was chosen. */ + if ((pe_data (abfd)->insert_timestamp)) + H_PUT_32 (abfd, time(0), filehdr_out->f_timdat); ++ else ++ H_PUT_32 (abfd, 0, filehdr_out->f_timdat); + + PUT_FILEHDR_SYMPTR (abfd, filehdr_in->f_symptr, + filehdr_out->f_symptr);