danalbert added a comment.

In D95166#2527437 <https://reviews.llvm.org/D95166#2527437>, @vitalybuka wrote:
> Our Android build bot is broken after this patch 
> http://lab.llvm.org:8011/#/builders/77/builds/3234

Shouldn't that build be using lld?

In D95166#2526839 <https://reviews.llvm.org/D95166#2526839>, @glandium wrote:

> "Android only supports lld" might be true now, but it hasn't always been 
> true, which means the change is not backwards compatible with versions of the 
> NDK that don't use lld.

If I'm understanding correctly, Firefox is building a custom toolchain for use 
with the NDK sysroot? That works as long as you're building the whole toolchain 
(though we can't guarantee that even that will work out of the box, because 
these things are developed in tandem and other configurations are not tested), 
but you'll need to build lld, llvm-ar, etc and use those as well.

> Also, `-fuse-ld` is still a valid flag that can allow to use a different 
> linker than lld.

We could check `-fuse-ld` for something other than `ld` or `lld` and not pass 
these flags in those cases. Would that be suitable? I see Clang did recently 
gain a `LinkerIsLLD` out param for `Toolchain::GetLinkerPath`. It's wrong for 
Android toolchains (because it assumes `ld` is not `lld`), but we could fix 
that. It'd be wrong whenever someone is using any toolchain other than the 
default NDK configuration (which would include Firefox), but at least it'd work 
for the common case.

A better solution IMO would be to let each target have its own default linker. 
We currently have this at the OS level, but that means that Android and GNU 
systems are assumed to have the same default linker. That's false. I'd tried 
fixing this with https://reviews.llvm.org/D76452 but the patch was not 
accepted. I'd be happy to revive and submit that if folks agree that it is the 
better choice.

Though TBH my favorite solution is still to make it clear that Android no 
longer supports anything but lld and skip all the special cases that will never 
get tested in practice. gold and bfd just barely worked for Android even when 
they were our defaults. One of the other fixes I suggest might fix your build 
today, but it's doubtful to me that it'd help you for long.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D95166

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to