mirror of
https://github.com/intel/llvm.git
synced 2026-01-28 09:14:23 +08:00
Add "(compatible with GNU linkers)" to the -version output.
Previous output: $ ld.lld -version LLD 5.0.0 New output: $ ld.lld -version LLD 5.0.0 (compatible with GNU linkers) Differential Revision: https://reviews.llvm.org/D31199 llvm-svn: 298532
This commit is contained in:
@@ -300,11 +300,27 @@ void LinkerDriver::main(ArrayRef<const char *> ArgsArr, bool CanExitEarly) {
|
||||
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))
|
||||
message(getLLDVersion());
|
||||
// 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))
|
||||
message(getLLDVersion() + " (compatible with GNU linkers)");
|
||||
|
||||
// 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;
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user