[tor-commits] [tor-browser-build/master] Bug 28716: Optionally omit timestamp in PE header

boklm at torproject.org boklm at torproject.org
Wed Aug 28 13:25:26 UTC 2019


commit 6ca067d2d716283c47c6b2fb822305e61b16e168
Author: Georg Koppen <gk at torproject.org>
Date:   Sun Aug 25 21:52:32 2019 +0000

    Bug 28716: Optionally omit timestamp in PE header
    
    Since r332613 lld has the option of setting the timestamp in PE headers
    to `0` which essentially is the behavior of ld's `--no-insert-timestamp`
    flag. However, we need a patch for lld's MingW target to pass this
    option on in our cross-compilation case, as it would not be available
    otherwise.
---
 projects/clang/build           |  1 +
 projects/clang/config          |  2 ++
 projects/clang/timestamp.patch | 54 ++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 57 insertions(+)

diff --git a/projects/clang/build b/projects/clang/build
index 50576b4..c1afa6d 100644
--- a/projects/clang/build
+++ b/projects/clang/build
@@ -30,6 +30,7 @@ mv compiler-rt-* llvm/projects/compiler-rt
   for i in {1..12}
     do git apply $rootdir/win-patches/llvm-objcopy-$i.patch
   done
+  patch -p1 -d llvm/tools/lld < $rootdir/timestamp.patch
 [% END %]
 cd llvm
 export LLVM_HOME=$(pwd)
diff --git a/projects/clang/config b/projects/clang/config
index f439cf7..08231be 100644
--- a/projects/clang/config
+++ b/projects/clang/config
@@ -43,3 +43,5 @@ input_files:
     file_gpg_id: 1
   - filename: win-patches
     enable: '[% c("var/windows") %]'
+  - filename: timestamp.patch
+    enable: '[% c("var/windows") %]'
diff --git a/projects/clang/timestamp.patch b/projects/clang/timestamp.patch
new file mode 100644
index 0000000..bea48a2
--- /dev/null
+++ b/projects/clang/timestamp.patch
@@ -0,0 +1,54 @@
+From f4743f40894d1dcd4ba131af3ad86a34c6d54598 Mon Sep 17 00:00:00 2001
+From: Martin Storsjo <martin at martin.st>
+Date: Tue, 5 Feb 2019 08:16:06 +0000
+Subject: [PATCH] Hook up the --no-insert-timestamp option
+
+This fixes PR40582.
+
+Patch by Georg Koppen!
+
+Differential Revision: https://reviews.llvm.org/D57679
+
+git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@353145 91177308-0d34-0410-b5e6-96231b3b80d8
+
+diff --git a/MinGW/Driver.cpp b/MinGW/Driver.cpp
+index 27a5550ec..d79ebe82e 100644
+--- a/MinGW/Driver.cpp
++++ b/MinGW/Driver.cpp
+@@ -170,6 +170,9 @@ bool mingw::link(ArrayRef<const char *> ArgsArr, raw_ostream &Diag) {
+       Args.getLastArgValue(OPT_m) != "arm64pe" && !Args.hasArg(OPT_dynamicbase))
+     Add("-dynamicbase:no");
+ 
++  if (Args.hasArg(OPT_no_insert_timestamp))
++    Add("-timestamp:0");
++
+   if (Args.hasFlag(OPT_gc_sections, OPT_no_gc_sections, false))
+     Add("-opt:ref");
+   else
+diff --git a/MinGW/Options.td b/MinGW/Options.td
+index ad699f711..5cc339a4a 100644
+--- a/MinGW/Options.td
++++ b/MinGW/Options.td
+@@ -20,6 +20,8 @@ def l: JoinedOrSeparate<["-"], "l">, MetaVarName<"<libName>">,
+ def m: JoinedOrSeparate<["-"], "m">, HelpText<"Set target emulation">;
+ def map: S<"Map">, HelpText<"Output a linker map">;
+ def map_eq: J<"Map=">, Alias<map>;
++def no_insert_timestamp: F<"no-insert-timestamp">,
++    HelpText<"Don't include PE header timestamp">;
+ def no_whole_archive: F<"no-whole-archive">,
+     HelpText<"No longer include all object files for following archives">;
+ def large_address_aware: Flag<["--"], "large-address-aware">,
+diff --git a/test/MinGW/driver.test b/test/MinGW/driver.test
+index 3222bb111..b853527a0 100644
+--- a/test/MinGW/driver.test
++++ b/test/MinGW/driver.test
+@@ -151,3 +151,6 @@ REQUIRE-DEFINED: -include:_foo -include:_bar -include:_baz -include:_foo2
+ 
+ RUN: ld.lld -### -m i386pep foo.o -Llibpath | FileCheck -check-prefix LIBPATH %s
+ LIBPATH: -libpath:libpath
++
++RUN: ld.lld -### -m i386pep foo.o --no-insert-timestamp | FileCheck -check-prefix NOTIMESTAMP %s
++NOTIMESTAMP: -timestamp:0
+-- 
+2.23.0.rc1
+





More information about the tor-commits mailing list