[lld] 65271ff - [lld][MinGW] Introduce aliases for -Bdynamic and -Bstatic

Markus Böck via llvm-commits llvm-commits at lists.llvm.org
Mon May 17 13:13:34 PDT 2021


Author: Markus Böck
Date: 2021-05-17T22:13:26+02:00
New Revision: 65271ffe84165b935cefc9a7d468cb6f46a96a91

URL: https://github.com/llvm/llvm-project/commit/65271ffe84165b935cefc9a7d468cb6f46a96a91
DIFF: https://github.com/llvm/llvm-project/commit/65271ffe84165b935cefc9a7d468cb6f46a96a91.diff

LOG: [lld][MinGW] Introduce aliases for -Bdynamic and -Bstatic

Besides -Bdynamic and -Bstatic, ld documents additional aliases for both of these options. Instead of -Bstatic, one may write -dn, -non_shared or -static. Instead of -Bdynamic one may write -dy or -call_shared. Source: https://sourceware.org/binutils/docs-2.36/ld/Options.html

This patch adds those aliases to the MinGW driver of lld for the sake of ld compatibility.

Encountered this case while compiling a static Qt 6.1 distribution and got build failures as -static was passed directly to the linker, instead of through the compiler driver.

Differential Revision: https://reviews.llvm.org/D102637

Added: 
    

Modified: 
    lld/MinGW/Options.td
    lld/test/MinGW/lib.test

Removed: 
    


################################################################################
diff  --git a/lld/MinGW/Options.td b/lld/MinGW/Options.td
index 3a4a40bbe11f7..e27c1365ab1f3 100644
--- a/lld/MinGW/Options.td
+++ b/lld/MinGW/Options.td
@@ -113,6 +113,11 @@ def Xlink : J<"Xlink=">, MetaVarName<"<arg>">,
     HelpText<"Pass <arg> to the COFF linker">;
 
 // Alias
+def alias_Bdynamic_call_shared: Flag<["-"], "call_shared">, Alias<Bdynamic>;
+def alias_Bdynamic_dy: Flag<["-"], "dy">, Alias<Bdynamic>;
+def alias_Bstatic_dn: Flag<["-"], "dn">, Alias<Bstatic>;
+def alias_Bstatic_non_shared: Flag<["-"], "non_shared">, Alias<Bstatic>;
+def alias_Bstatic_static: Flag<["-"], "static">, Alias<Bstatic>;
 def alias_entry_e: JoinedOrSeparate<["-"], "e">, Alias<entry>;
 def alias_strip_s: Flag<["-"], "s">, Alias<strip_all>;
 def alias_strip_S: Flag<["-"], "S">, Alias<strip_debug>;

diff  --git a/lld/test/MinGW/lib.test b/lld/test/MinGW/lib.test
index a2bd091bc691e..09bff012b237e 100644
--- a/lld/test/MinGW/lib.test
+++ b/lld/test/MinGW/lib.test
@@ -15,6 +15,9 @@ RUN: ld.lld -### -m i386pep -l:barefilename -L%t/lib 2>&1 | FileCheck -check-pre
 LIB-LITERAL: barefilename
 
 RUN: not ld.lld -### -m i386pep -Bstatic -lfoo -L%t/lib 2>&1 | FileCheck -check-prefix=LIB3 %s
+RUN: not ld.lld -### -m i386pep -dn -lfoo -L%t/lib 2>&1 | FileCheck -check-prefix=LIB3 %s
+RUN: not ld.lld -### -m i386pep -static -lfoo -L%t/lib 2>&1 | FileCheck -check-prefix=LIB3 %s
+RUN: not ld.lld -### -m i386pep -non_shared -lfoo -L%t/lib 2>&1 | FileCheck -check-prefix=LIB3 %s
 LIB3: unable to find library -lfoo
 
 RUN: echo > %t/lib/libfoo.a
@@ -24,6 +27,8 @@ 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
+RUN: ld.lld -### -m i386pep -Bstatic -lfoo -dy -lbar -L%t/lib | FileCheck -check-prefix=LIB5 %s
+RUN: ld.lld -### -m i386pep -Bstatic -lfoo -call_shared -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