[llvm-dev] Using lld in ELLCC for different targets (original) (raw)
Richard Pennington via llvm-dev llvm-dev at lists.llvm.org
Fri Oct 28 14:56:46 PDT 2016
- Previous message: [llvm-dev] Vector Shuffle chain lowering to X86 instructions simplification inconsistencies
- Next message: [llvm-dev] [cfe-dev] Using lld in ELLCC for different targets
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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−ldE/ecc-ldE/ecc−ldX
exe: E/ld.lldE/ld.lldE/ld.lldx
(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
- Previous message: [llvm-dev] Vector Shuffle chain lowering to X86 instructions simplification inconsistencies
- Next message: [llvm-dev] [cfe-dev] Using lld in ELLCC for different targets
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]