[MinGW] Add support for the options --[no-]whole-archive
Differential Revision: https://reviews.llvm.org/D37769
llvm-svn: 313124
diff --git a/lld/MinGW/Driver.cpp b/lld/MinGW/Driver.cpp
index 790bae7..e269ed8 100644
--- a/lld/MinGW/Driver.cpp
+++ b/lld/MinGW/Driver.cpp
@@ -172,11 +172,24 @@
for (auto *A : Args.filtered(OPT_L))
SearchPaths.push_back(A->getValue());
- for (auto *A : Args.filtered(OPT_INPUT, OPT_l)) {
- if (A->getOption().getUnaliasedOption().getID() == OPT_INPUT)
- Add(A->getValue());
- else
- Add(searchLibrary(A->getValue(), SearchPaths, Args.hasArg(OPT_Bstatic)));
+ StringRef Prefix = "";
+ for (auto *A : Args.filtered(OPT_INPUT, OPT_l, OPT_whole_archive,
+ OPT_no_whole_archive)) {
+ switch (A->getOption().getID()) {
+ case OPT_INPUT:
+ Add(Prefix + StringRef(A->getValue()));
+ break;
+ case OPT_l:
+ Add(Prefix +
+ searchLibrary(A->getValue(), SearchPaths, Args.hasArg(OPT_Bstatic)));
+ break;
+ case OPT_whole_archive:
+ Prefix = "-wholearchive:";
+ break;
+ case OPT_no_whole_archive:
+ Prefix = "";
+ break;
+ }
}
if (Args.hasArg(OPT_verbose))