[cfe-dev] Using lld in ELLCC for different targets

Richard Pennington via cfe-dev cfe-dev at lists.llvm.org
Fri Oct 28 14:56:46 PDT 2016


With all the talk about using lld on the list, I thought it would be 
interesting to try using it in my clang based ELLCC cross compilation 
tool chain. http://ellcc.org

The change was simple, since I use configuration files to tell clang how 
to compile, where to find libraries, etc. I described the config files 
here: http://ellcc.org/blog/?p=13246

All I had to do was change the linker executable definition for each target:

linker:

   #exe: $E/ecc-ld$X

   exe: $E/ld.lld$x

(where $E is the executable directory where the compiler was found and 
$X is the executable extension, "" under Linux)

Here are the results of linking a program for Linux:

ARM32 v6: Good

ARM32 v7: Good

ARM32 big endian: Not supported by lld, no armelfb_linux_eabi emulation 
mode.

Aarch64: Good

MIPS 32 little and big endian: Good

MIPS64 big endian: Good

PPC32: lld failed with a bad relocation type.

PPC64 little endian: Not supported by lld, no elf64lppc emulation mode.

X86 32 and 64: Good

As a test I built clang to run native on ARMv6, ARMv7, Aarch64, MIPS32, 
MIPS64, and x86_84 Linux: Good

Very cool!

I use ld for mingw-w64 targets. Is there a mode for the COFF lld that 
makes it also act like ld?

Now I have to look into how lld supports Linker scripts for my non-Linux 
targets.

-Rich





More information about the cfe-dev mailing list