[PATCH] D59530: [LLD][COFF] Fix /linkrepro with options that take a filename or path
Alexandre Ganea via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 19 09:58:18 PDT 2019
aganea updated this revision to Diff 191335.
aganea edited the summary of this revision.
aganea added a comment.
Only output filenames, as requested.
Repository:
rLLD LLVM Linker
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D59530/new/
https://reviews.llvm.org/D59530
Files:
COFF/Driver.cpp
Common/Reproduce.cpp
include/lld/Common/Reproduce.h
test/COFF/linkrepro-pdb.test
Index: test/COFF/linkrepro-pdb.test
===================================================================
--- test/COFF/linkrepro-pdb.test
+++ test/COFF/linkrepro-pdb.test
@@ -4,6 +4,19 @@
RUN: yaml2obj %S/Inputs/pdb-type-server-simple-a.yaml -o a.obj
RUN: yaml2obj %S/Inputs/pdb-type-server-simple-b.yaml -o b.obj
RUN: llvm-pdbutil yaml2pdb %S/Inputs/pdb-type-server-simple-ts.yaml -pdb ts.pdb
-RUN: lld-link a.obj b.obj -entry:main -debug -out:t.exe -pdb:t.pdb -nodefaultlib -linkrepro:.
+RUN: lld-link a.obj b.obj -entry:main -debug -out:%t.exe -pdb:%t.pdb -nodefaultlib -linkrepro:.
RUN: tar xOf repro.tar repro/%:t/ts.pdb > repro-ts.pdb
RUN: diff ts.pdb repro-ts.pdb
+
+RUN: tar xf repro.tar
+RUN: cat repro/response.txt | FileCheck -check-prefix=PDB %s
+
+PDB: -out:linkrepro-pdb.test.tmp.exe
+PDB-NEXT: -pdb:linkrepro-pdb.test.tmp.pdb
+
+RUN: yaml2obj < %p/Inputs/export.yaml > %t1.obj
+RUN: lld-link /out:%t1.dll /dll %t1.obj /implib:%t1.lib /export:exportfn1 /export:exportfn2 /linkrepro:.
+RUN: tar xf repro.tar
+RUN: cat repro/response.txt | FileCheck -check-prefix=IMP %s
+
+IMP: /implib:linkrepro-pdb.test.tmp1.lib
Index: include/lld/Common/Reproduce.h
===================================================================
--- include/lld/Common/Reproduce.h
+++ include/lld/Common/Reproduce.h
@@ -29,6 +29,7 @@
// Returns the string form of the given argument.
std::string toString(const llvm::opt::Arg &Arg);
+std::string toString(const llvm::opt::Arg &Arg, StringRef ValueSubstitute);
}
#endif
Index: Common/Reproduce.cpp
===================================================================
--- Common/Reproduce.cpp
+++ Common/Reproduce.cpp
@@ -49,10 +49,15 @@
}
std::string lld::toString(const opt::Arg &Arg) {
+ return toString(Arg, "");
+}
+
+std::string lld::toString(const opt::Arg &Arg, StringRef ValueSubstitute) {
std::string K = Arg.getSpelling();
if (Arg.getNumValues() == 0)
return K;
- std::string V = quote(Arg.getValue());
+ std::string V =
+ quote(!ValueSubstitute.empty() ? ValueSubstitute : Arg.getValue());
if (Arg.getOption().getRenderStyle() == opt::Option::RenderJoinedStyle)
return K + V;
return K + " " + V;
Index: COFF/Driver.cpp
===================================================================
--- COFF/Driver.cpp
+++ COFF/Driver.cpp
@@ -523,6 +523,7 @@
raw_svector_ostream OS(Data);
for (auto *Arg : Args) {
+ StringRef Val;
switch (Arg->getOption().getID()) {
case OPT_linkrepro:
case OPT_INPUT:
@@ -535,8 +536,13 @@
case OPT_manifestinput:
case OPT_manifestuac:
break;
+ case OPT_implib:
+ case OPT_pdb:
+ case OPT_out:
+ Val = sys::path::filename(Arg->getValue());
+ LLVM_FALLTHROUGH;
default:
- OS << toString(*Arg) << "\n";
+ OS << toString(*Arg, Val) << "\n";
}
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D59530.191335.patch
Type: text/x-patch
Size: 2843 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190319/a66490ff/attachment.bin>
More information about the llvm-commits
mailing list