[llvm-dev] ORC JIT Weekly #29 -- JITLink ELF/x86-64 support improvements

Lang Hames via llvm-dev llvm-dev at lists.llvm.org
Sun Jan 24 23:29:43 PST 2021

Hi All,

I've set the ORC runtime aside for a week to try to land some improvements
to JITLink's ELF/x86-64 support before the upcoming LLVM 12 branch on
Tuesday. JITLink for ELF/x86-64 can now:

- Skip debug sections
- Handle weak and hidden symbols
- Issue out-of-bounds errors on several relocation kinds
- Support exception handling

My hope is that by the time LLVM 12 is released, JITLink ELF/x86-64 will be
able to handle most or all PIC / small-code-model code. If you want to test
this out you should now be able to run:

% llvm-jitlink <objects...>

on Linux for objects compiled with -fPIC. (Note: static initializers and
thread locals are not supported -- these will have to wait for ELF support
in the ORC runtime).

Many thanks again to Jared Wyles and Stefan Granitz for all their work on
this -- I'm very excited to see this up and running!

Looking forward: RuntimeDyld will remain the default JIT linker for LLJIT
in LLVM 12, but we may switch to JITLink by default in LLVM 13 if enough
progress is made (RuntimeDyld will remain available as an option either

Current tasks on the LLVM 13 todo list are:
- Broaden the set of supported relocations on ELF/x86-64 (supporting more
code and relocation models)
- Refactor to make the development of new ELF targets easier
- Refactor to make sharing of format agnostic code easier (e.g. relocations
specified on a per architecture basis, rather than for (arch, format)
pairs, shared format-agnostic JITLink passes)
- Add ELF initializer support by building an ELFPlatform (LinuxPlatform?
I'm not sure those two are as synonymous as Darwin/MachO) and adding ELF
support to the runtime.

I'll try to get this all in to the road map soon, but volunteers are
welcome to put their hand up any time. ;)

As always: Questions, comments and bug reports are very welcome.

-- Lang.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210125/f97ed8a1/attachment.html>

More information about the llvm-dev mailing list