[lld] r313175 - [MinGW] Only apply -Bstatic to following libraries
Martin Storsjo via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 13 12:29:44 PDT 2017
Author: mstorsjo
Date: Wed Sep 13 12:29:44 2017
New Revision: 313175
URL: http://llvm.org/viewvc/llvm-project?rev=313175&view=rev
Log:
[MinGW] Only apply -Bstatic to following libraries
This is how the flag is documented in GNU binutils ld; -Bstatic
only applies to -l options after it, until the next -Bdynamic.
Differential Revision: https://reviews.llvm.org/D37794
Modified:
lld/trunk/MinGW/Driver.cpp
lld/trunk/test/MinGW/lib.test
Modified: lld/trunk/MinGW/Driver.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/MinGW/Driver.cpp?rev=313175&r1=313174&r2=313175&view=diff
==============================================================================
--- lld/trunk/MinGW/Driver.cpp (original)
+++ lld/trunk/MinGW/Driver.cpp Wed Sep 13 12:29:44 2017
@@ -174,8 +174,8 @@ bool mingw::link(ArrayRef<const char *>
SearchPaths.push_back(A->getValue());
StringRef Prefix = "";
- for (auto *A : Args.filtered(OPT_INPUT, OPT_l, OPT_whole_archive,
- OPT_no_whole_archive)) {
+ bool Static = false;
+ for (auto *A : Args) {
switch (A->getOption().getID()) {
case OPT_INPUT:
if (StringRef(A->getValue()).endswith(".def"))
@@ -184,8 +184,7 @@ bool mingw::link(ArrayRef<const char *>
Add(Prefix + StringRef(A->getValue()));
break;
case OPT_l:
- Add(Prefix +
- searchLibrary(A->getValue(), SearchPaths, Args.hasArg(OPT_Bstatic)));
+ Add(Prefix + searchLibrary(A->getValue(), SearchPaths, Static));
break;
case OPT_whole_archive:
Prefix = "-wholearchive:";
@@ -193,6 +192,12 @@ bool mingw::link(ArrayRef<const char *>
case OPT_no_whole_archive:
Prefix = "";
break;
+ case OPT_Bstatic:
+ Static = true;
+ break;
+ case OPT_Bdynamic:
+ Static = false;
+ break;
}
}
Modified: lld/trunk/test/MinGW/lib.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/MinGW/lib.test?rev=313175&r1=313174&r2=313175&view=diff
==============================================================================
--- lld/trunk/test/MinGW/lib.test (original)
+++ lld/trunk/test/MinGW/lib.test Wed Sep 13 12:29:44 2017
@@ -7,9 +7,15 @@ RUN: echo > %t/lib/libfoo.dll.a
RUN: ld.lld -### -m i386pep -lfoo -L%t/lib | FileCheck -check-prefix=LIB2 %s
LIB2: libfoo.dll.a
-RUN: not ld.lld -### -m i386pep -lfoo -L%t/lib -Bstatic 2>&1 | FileCheck -check-prefix=LIB3 %s
+RUN: not ld.lld -### -m i386pep -Bstatic -lfoo -L%t/lib 2>&1 | FileCheck -check-prefix=LIB3 %s
LIB3: unable to find library -lfoo
RUN: echo > %t/lib/libfoo.a
-RUN: ld.lld -### -m i386pep -lfoo -L%t/lib -Bstatic | FileCheck -check-prefix=LIB4 %s
+RUN: ld.lld -### -m i386pep -Bstatic -lfoo -L%t/lib | FileCheck -check-prefix=LIB4 %s
LIB4: libfoo.a
+
+RUN: echo > %t/lib/libbar.dll.a
+RUN: echo > %t/lib/libbar.a
+RUN: ld.lld -### -m i386pep -Bstatic -lfoo -Bdynamic -lbar -L%t/lib | FileCheck -check-prefix=LIB5 %s
+LIB5: libfoo.a
+LIB5-SAME: libbar.dll.a
More information about the llvm-commits
mailing list