lld: a linker for LLVM
lld is a new set of modular code for creating linker tools.
Features and Goals
End-User Features:
- Compatible with existing linker options
- Fast link times
- Minimal memory use
- Remove clang's reliance on "the system linker"
Applications:
- Use the LLVM 'BSD' License
- Modular design
- Support cross linking
- Easy to add new CPU support
- Can be built as static tool or library
Design and Implementation:
- Extensive unit tests
- Internal linker model can be dumped/read to textual format
- Internal linker model can be dumped/read to new native format
- Additional linking features can be plugged in as "passes"
- OS specific and CPU specific code factored out
Why a new linker?
The fact that clang relies on whatever linker tool you happen to have installed means that clang has been very conservative adopting features which require a recent linker.
In the same way that the MC layer of LLVM has removed clang's reliance on the system assembler tool, the lld project will remove clang's reliance on the system linker tool.
Current Status
lld is in its very early stages of development.