[LLVMdev] Is lld the linker we need for our project ?

Michael Spencer bigcheesegs at gmail.com
Tue Mar 11 12:39:16 PDT 2014


On Tue, Mar 11, 2014 at 9:52 AM, Rodolphe Suescun <rsu.medal at dolphin.fr> wrote:
> Hi,
>
> We are currently developing an LLVM-based compilation toolchain
> for a micro-controller, but would need some advice about whether
> we should use lld as linker.
>
> So far we managed to write a basic target handler to read ELF
> files generated by llc and link them (and relocations seem to
> be applied correctly).
> But we have target-specific requirements:
> - the program will be loaded into memory as-is, there is no
>   runtime linker
> - data and code must be located in different areas of memory
>   so we should be able to specify a different base address for
>   different sections
> - parts of the code (such as interrupt vectors) must be located
>   at specific addresses
> - we will also need to be able to specify (in a map file) the
>   address of any function or static variable
>
> Is any of those requirements incompatible with lld ? And if not,
> any hints about how to implement them (or any lld documentation
> I might have missed) ?
>
> Thanks a lot in advance,
> Rod

It sounds like you need linker scripts and objcopy -O binary.

lld currently has very limited linker script support. Support for
layout using linker scripts would need to be completed. It is
currently stubbed out in DefaultLayout.h:class ScriptLayout. I've
cc'ed Shankar who knows more about how that is intended to work.

Both Shankar and I intend to implement linker scripts eventually, but
it's not a high priority for me right now.

So to answer your question. If you need a linker right now lld isn't
really going to work for you, but your use case is definitely in scope
for lld.

- Michael Spencer



More information about the llvm-dev mailing list