Unverified Commit 6ca067d2 authored by Georg Koppen's avatar Georg Koppen Committed by boklm
Browse files

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.
parent 8aeb0496
......@@ -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)
......
......@@ -43,3 +43,5 @@ input_files:
file_gpg_id: 1
- filename: win-patches
enable: '[% c("var/windows") %]'
- filename: timestamp.patch
enable: '[% c("var/windows") %]'
From f4743f40894d1dcd4ba131af3ad86a34c6d54598 Mon Sep 17 00:00:00 2001
From: Martin Storsjo <martin@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
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment