summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lld/COFF/Driver.cpp12
-rw-r--r--lld/docs/ReleaseNotes.rst3
-rw-r--r--lld/test/COFF/linkrepro-res.test2
-rw-r--r--lld/test/COFF/linkrepro.test6
4 files changed, 12 insertions, 11 deletions
diff --git a/lld/COFF/Driver.cpp b/lld/COFF/Driver.cpp
index aaf0367e3b5..882313a18bf 100644
--- a/lld/COFF/Driver.cpp
+++ b/lld/COFF/Driver.cpp
@@ -50,7 +50,7 @@
using namespace llvm;
using namespace llvm::object;
using namespace llvm::COFF;
-using llvm::sys::Process;
+using namespace llvm::sys;
namespace lld {
namespace coff {
@@ -1138,17 +1138,15 @@ void LinkerDriver::link(ArrayRef<const char *> argsArr) {
config->mingw = args.hasArg(OPT_lldmingw);
if (auto *arg = args.getLastArg(OPT_linkrepro)) {
- SmallString<64> path = StringRef(arg->getValue());
- sys::path::append(path, "repro.tar");
+ const char *path = arg->getValue();
Expected<std::unique_ptr<TarWriter>> errOrWriter =
- TarWriter::create(path, "repro");
-
+ TarWriter::create(path, path::stem(path));
if (errOrWriter) {
tar = std::move(*errOrWriter);
+ tar->append("version.txt", getLLDVersion() + "\n");
} else {
- error("/linkrepro: failed to open " + path + ": " +
- toString(errOrWriter.takeError()));
+ error("/linkrepro: " + toString(errOrWriter.takeError()));
}
}
diff --git a/lld/docs/ReleaseNotes.rst b/lld/docs/ReleaseNotes.rst
index 8cc70656a21..e63f75bef90 100644
--- a/lld/docs/ReleaseNotes.rst
+++ b/lld/docs/ReleaseNotes.rst
@@ -29,6 +29,9 @@ ELF Improvements
COFF Improvements
-----------------
+* /linkrepro: now takes the filename of the tar archive it writes, instead
+ of the name of a directory that a file called "repro.tar" is created in,
+ matching the behavior of ELF lld.
* ...
MinGW Improvements
diff --git a/lld/test/COFF/linkrepro-res.test b/lld/test/COFF/linkrepro-res.test
index cf0aa1636ce..aac614ff3aa 100644
--- a/lld/test/COFF/linkrepro-res.test
+++ b/lld/test/COFF/linkrepro-res.test
@@ -4,7 +4,7 @@
# RUN: mkdir -p %t.dir/build
# RUN: cd %t.dir/build
# RUN: lld-link %p/Inputs/resource.res /subsystem:console /machine:x64 \
-# RUN: /entry:__ImageBase /linkrepro:. /out:%t.exe
+# RUN: /entry:__ImageBase /linkrepro:repro.tar /out:%t.exe
# RUN: tar xf repro.tar
# RUN: diff %p/Inputs/resource.res repro/%:p/Inputs/resource.res
# RUN: FileCheck %s --check-prefix=RSP < repro/response.txt
diff --git a/lld/test/COFF/linkrepro.test b/lld/test/COFF/linkrepro.test
index 8f4223420a4..4bb5e59277a 100644
--- a/lld/test/COFF/linkrepro.test
+++ b/lld/test/COFF/linkrepro.test
@@ -6,7 +6,7 @@
# RUN: cd %t.dir/build1
# RUN: lld-link %t.obj %p/Inputs/std32.lib /subsystem:console \
-# RUN: /entry:main@0 /linkrepro:. /out:%t.exe
+# RUN: /entry:main@0 /linkrepro:repro.tar /out:%t.exe
# RUN: tar xf repro.tar
# RUN: diff %t.obj repro/%:t.obj
# RUN: diff %p/Inputs/std32.lib repro/%:p/Inputs/std32.lib
@@ -14,7 +14,7 @@
# RUN: cd %t.dir/build2
# RUN: lld-link %t.obj /libpath:%p/Inputs /defaultlib:std32 /subsystem:console \
-# RUN: /entry:main@0 /linkrepro:. /out:%t.exe
+# RUN: /entry:main@0 /linkrepro:repro.tar /out:%t.exe
# RUN: tar xf repro.tar
# RUN: diff %t.obj repro/%:t.obj
# RUN: diff %p/Inputs/std32.lib repro/%:p/Inputs/std32.lib
@@ -22,7 +22,7 @@
# RUN: cd %t.dir/build3
# RUN: env LIB=%p/Inputs lld-link %t.obj /defaultlib:std32 /subsystem:console \
-# RUN: /entry:main@0 /linkrepro:. /out:%t.exe
+# RUN: /entry:main@0 /linkrepro:repro.tar /out:%t.exe
# RUN: tar xf repro.tar
# RUN: diff %t.obj repro/%:t.obj
# RUN: diff %p/Inputs/std32.lib repro/%:p/Inputs/std32.lib
OpenPOWER on IntegriCloud