[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