summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2015-12-21 08:03:07 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2015-12-21 08:03:07 +0000
commit18663f8787de1862ccc032c767dbfc84b33c60c4 (patch)
treeb711ee0bcbdedb3b37ae580be81c9128b30ba5a0
parent949e8c6ac67f643d9729ceba3cd4352ae1eeed26 (diff)
downloadbcm5719-llvm-18663f8787de1862ccc032c767dbfc84b33c60c4.tar.gz
bcm5719-llvm-18663f8787de1862ccc032c767dbfc84b33c60c4.zip
[MC, COFF] Unbreak support for COFF timestamps
Support for COFF timestamps was unintentionally broken in r246905 when it was conditionally available depending on whether or not LLVM was configured with LLVM_ENABLE_TIMESTAMPS. However, Config/config.h was never included which essentially broke the feature. Due to lax testing, the breakage was never identified until we observed strange failures during incremental links of Chromium. This issue is resolved by simply including Config/config.h in WinCOFFObjectWriter and teaching lit that the MC/COFF/timestamp.s test is conditionally supported depending on LLVM_ENABLE_TIMESTAMPS. With this in place, we can strengthen the test to ensure that it will not accidentally get broken in the future. This fixes PR25891. llvm-svn: 256137
-rw-r--r--llvm/lib/MC/WinCOFFObjectWriter.cpp1
-rw-r--r--llvm/test/MC/COFF/timestamp.s4
-rw-r--r--llvm/test/lit.cfg4
-rw-r--r--llvm/test/lit.site.cfg.in1
4 files changed, 9 insertions, 1 deletions
diff --git a/llvm/lib/MC/WinCOFFObjectWriter.cpp b/llvm/lib/MC/WinCOFFObjectWriter.cpp
index 59f06dcd113..ffb636a5932 100644
--- a/llvm/lib/MC/WinCOFFObjectWriter.cpp
+++ b/llvm/lib/MC/WinCOFFObjectWriter.cpp
@@ -17,6 +17,7 @@
#include "llvm/ADT/StringMap.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/Twine.h"
+#include "llvm/Config/config.h"
#include "llvm/MC/MCAsmLayout.h"
#include "llvm/MC/MCAssembler.h"
#include "llvm/MC/MCContext.h"
diff --git a/llvm/test/MC/COFF/timestamp.s b/llvm/test/MC/COFF/timestamp.s
index 917e1e717a8..ae982b4309e 100644
--- a/llvm/test/MC/COFF/timestamp.s
+++ b/llvm/test/MC/COFF/timestamp.s
@@ -1,4 +1,6 @@
// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s -o - | llvm-readobj -h | FileCheck %s
+// REQUIRES: timestamps
// CHECK: ImageFileHeader {
-// CHECK: TimeDateStamp: {{.*}}
+// CHECK: TimeDateStamp:
+// CHECK-NOT: 1970-01-01 00:00:00 (0x0)
diff --git a/llvm/test/lit.cfg b/llvm/test/lit.cfg
index 9fb9fb2b4de..3fb94e43f72 100644
--- a/llvm/test/lit.cfg
+++ b/llvm/test/lit.cfg
@@ -463,6 +463,10 @@ if platform.system() in ['Windows'] and re.match(r'.*-win32$', config.target_tri
if not re.match(r'^x86_64.*-(mingw32|windows-gnu|win32)', config.target_triple):
config.available_features.add('debug_frame')
+# Check if we are embedding timestamps.
+if config.enable_timestamps:
+ config.available_features.add('timestamps')
+
# Check if we should use gmalloc.
use_gmalloc_str = lit_config.params.get('use_gmalloc', None)
if use_gmalloc_str is not None:
diff --git a/llvm/test/lit.site.cfg.in b/llvm/test/lit.site.cfg.in
index 13f5372ef7e..ae5814f02f4 100644
--- a/llvm/test/lit.site.cfg.in
+++ b/llvm/test/lit.site.cfg.in
@@ -36,6 +36,7 @@ config.llvm_use_sanitizer = "@LLVM_USE_SANITIZER@"
config.have_zlib = "@HAVE_LIBZ@"
config.have_dia_sdk = @HAVE_DIA_SDK@
config.enable_ffi = "@LLVM_ENABLE_FFI@"
+config.enable_timestamps = "@ENABLE_TIMESTAMPS@"
config.test_examples = "@ENABLE_EXAMPLES@"
# Support substitution of the tools_dir with user parameters. This is
OpenPOWER on IntegriCloud