[PATCH] D85309: [Driver] Support GNU ld on Solaris

Rainer Orth via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Aug 31 02:35:20 PDT 2023


ro marked an inline comment as done.
ro added inline comments.


================
Comment at: clang/lib/Driver/ToolChains/CommonArgs.cpp:305
 
+bool tools::isLinkerGnuLd(const ToolChain &TC, const ArgList &Args) {
+  // Only used if targetting Solaris.
----------------
MaskRay wrote:
> I suppose that this should be in a Solaris specific file to indicate that it's not for other systems.
> 
> GNU ld is almost ubiquitous on Linux and is almost always available at /usr/bin/ld (with very few distributions using others linkers by default or providing an option).
> 
> Detecting linker to affect driver decisions is we Linux are very wary of. We are nervous even trying to do some stuff only related to lld.
> 
> We likely don't want this function to be in CommonArgs to lure other contributors to use.
> I suppose that this should be in a Solaris specific file to indicate that it's not for other systems.

Indeed.  I've moved it to `Solaris.{h,cpp}` now.  In fact, initially i'd tried to assert a Solaris target in `isLinkerGnuLd`, but that cannot work because in some cases the function is called in common code, even though the result is only used on Solaris.

I briefly thought about generalizing both `IsLinkerGnuLd` and `IsLinkerLLD` into a common
```
enum LinkerFlavour getLinkerFlavor();
```
but doing this for all possible configs seemed like a can of worms I'd rather not open.

> GNU ld is almost ubiquitous on Linux and is almost always available at /usr/bin/ld (with very few distributions using others linkers by default or providing an option).
> 
> Detecting linker to affect driver decisions is we Linux are very wary of. We are nervous even trying to do some stuff only related to lld.

I saw: that code is only used on Darwin, it seems, and I'd like to avoid touching that.

> We likely don't want this function to be in CommonArgs to lure other contributors to use.

Apart from the move to `Solaris.h`, I've also moved it into the `solaris` namespace to make things completely obvious.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D85309/new/

https://reviews.llvm.org/D85309



More information about the cfe-commits mailing list