Re: backport lld version string change

2017-03-23 Thread Mark Kettenis
> Date: Thu, 23 Mar 2017 14:34:48 +1100
> From: Jonathan Gray 
> 
> Backport a change to add "(compatible with GNU linkers)" to the lld
> version output to avoid having to regenerate a large number of configure
> scripts.
> 
> https://reviews.llvm.org/D31199?id=
> http://llvm.org/viewvc/llvm-project?view=revision=298532
> 
> The output is now
> 
> LLD 4.0.0 (compatible with GNU linkers)
> 
> Among other things this is required to build xenocara on arm64 without
> patching libtool and regenerating the configure script for Mesa.

Go for it.

> Index: ELF/Driver.cpp
> ===
> RCS file: /cvs/src/gnu/llvm/tools/lld/ELF/Driver.cpp,v
> retrieving revision 1.5
> diff -u -p -r1.5 Driver.cpp
> --- ELF/Driver.cpp18 Mar 2017 16:36:56 -  1.5
> +++ ELF/Driver.cpp23 Mar 2017 00:34:19 -
> @@ -281,11 +281,27 @@ void LinkerDriver::main(ArrayRef  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.
> +  // 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_version) || Args.hasArg(OPT_v))
> -outs() << getLLDVersion() << "\n";
> +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;
>  
> 
> 



backport lld version string change

2017-03-22 Thread Jonathan Gray
Backport a change to add "(compatible with GNU linkers)" to the lld
version output to avoid having to regenerate a large number of configure
scripts.

https://reviews.llvm.org/D31199?id=
http://llvm.org/viewvc/llvm-project?view=revision=298532

The output is now

LLD 4.0.0 (compatible with GNU linkers)

Among other things this is required to build xenocara on arm64 without
patching libtool and regenerating the configure script for Mesa.

Index: ELF/Driver.cpp
===
RCS file: /cvs/src/gnu/llvm/tools/lld/ELF/Driver.cpp,v
retrieving revision 1.5
diff -u -p -r1.5 Driver.cpp
--- ELF/Driver.cpp  18 Mar 2017 16:36:56 -  1.5
+++ ELF/Driver.cpp  23 Mar 2017 00:34:19 -
@@ -281,11 +281,27 @@ void LinkerDriver::main(ArrayRef