[lld] r301444 - Merge r298532: Add "(compatible with GNU linkers)" to the -version output.

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 26 12:15:43 PDT 2017


Author: ruiu
Date: Wed Apr 26 14:15:42 2017
New Revision: 301444

URL: http://llvm.org/viewvc/llvm-project?rev=301444&view=rev
Log:
Merge r298532: Add "(compatible with GNU linkers)" to the -version output.

Cherrypick request: http://bugs.llvm.org/show_bug.cgi?id=32601


Modified:
    lld/branches/release_40/ELF/Driver.cpp
    lld/branches/release_40/test/ELF/driver.test

Modified: lld/branches/release_40/ELF/Driver.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/branches/release_40/ELF/Driver.cpp?rev=301444&r1=301443&r2=301444&view=diff
==============================================================================
--- lld/branches/release_40/ELF/Driver.cpp (original)
+++ lld/branches/release_40/ELF/Driver.cpp Wed Apr 26 14:15:42 2017
@@ -281,11 +281,27 @@ void LinkerDriver::main(ArrayRef<const c
     return;
   }
 
-  // GNU linkers disagree here. Though both -version and -v are mentioned
-  // in help to print the version information, GNU ld just normally exits,
-  // while gold can continue linking. We are compatible with ld.bfd here.
-  if (Args.hasArg(OPT_version) || Args.hasArg(OPT_v))
-    outs() << getLLDVersion() << "\n";
+  // Handle -v or -version.
+  //
+  // A note about "compatible with GNU linkers" message: this is a hack for
+  // scripts generated by GNU Libtool 2.4.6 (released in February 2014 and
+  // still the newest version in March 2017) or earlier to recognize LLD as
+  // a GNU compatible linker. As long as an output for the -v option
+  // contains "GNU" or "with BFD", they recognize us as GNU-compatible.
+  //
+  // This is somewhat ugly hack, but in reality, we had no choice other
+  // than doing this. Considering the very long release cycle of Libtool,
+  // it is not easy to improve it to recognize LLD as a GNU compatible
+  // linker in a timely manner. Even if we can make it, there are still a
+  // lot of "configure" scripts out there that are generated by old version
+  // of Libtool. We cannot convince every software developer to migrate to
+  // the latest version and re-generate scripts. So we have this hack.
+  if (Args.hasArg(OPT_v) || Args.hasArg(OPT_version))
+    outs() << getLLDVersion() << " (compatible with GNU linkers)\n";
+
+  // ld.bfd always exits after printing out the version string.
+  // ld.gold proceeds if a given option is -v. Because gold's behavior
+  // is more permissive than ld.bfd, we chose what gold does here.
   if (Args.hasArg(OPT_version))
     return;
 

Modified: lld/branches/release_40/test/ELF/driver.test
URL: http://llvm.org/viewvc/llvm-project/lld/branches/release_40/test/ELF/driver.test?rev=301444&r1=301443&r2=301444&view=diff
==============================================================================
--- lld/branches/release_40/test/ELF/driver.test (original)
+++ lld/branches/release_40/test/ELF/driver.test Wed Apr 26 14:15:42 2017
@@ -17,7 +17,7 @@
 # HELP: USAGE:
 
 # RUN: ld.lld --version 2>&1 | FileCheck -check-prefix=VERSION %s
-# VERSION: LLD
+# VERSION: LLD {{.*}} (compatible with GNU linkers)
 
 # RUN: not ld.lld -v 2>&1 | FileCheck -check-prefix=VERSION %s
 




More information about the llvm-commits mailing list