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

Peter Smith via cfe-dev cfe-dev at lists.llvm.org
Sun Oct 30 00:33:48 PDT 2016


Thank you very much for the testing of LLD Rich.

The current status of the ARM port of LLD is that I've been working on
the obvious known missing features first, but I haven't aggressively
tested LLD on ARM against real applications to find the long tail of
bugs that will need fixing. I think we're close to that point, but not
yet.

Unimplemented features:
- Target awareness, LLD assumes ARMv7 (Cortex A and R) and makes use
of Thumb2 branch encodings and instructions, it will be possible to
link ARMv6 programs but don't try and run them on a ARMv6 machine. The
most widely known v6 platform used by developers is the original
Raspberry Pi.
- Long branch thunks, that is one of the reasons you'll see many
R_ARM_CALL instructions out of range on larger programs.
- big endian, a little more complicated than other targets due to
instructions being little endian in ARM BE8. It is true that big
endian linux systems are much rarer than little endian, but there have
been a few instances. It is more common in microcontrollers.

Known problems:
- ifunc not working
- TLS for static linking not working
- ARM (and AArch64) undefined weak reference handling

I know what the problems are and have some prototype fixes. I'll be
working to get these fixes in soon.

Peter

On 29 October 2016 at 00:22, Renato Golin via llvm-dev
<llvm-dev at lists.llvm.org> wrote:
> Well, at least it works on some programs across all arches. That was some
> great testing you've done for us. :-)
>
> Thanks!
> Renato
>
>
> On 28 Oct 2016 23:51, "Richard Pennington" <rich at pennware.com> wrote:
>>
>> On 10/28/2016 05:27 PM, Renato Golin wrote:
>>>
>>> On 28 October 2016 at 23:02, Rui Ueyama via llvm-dev
>>> <llvm-dev at lists.llvm.org> wrote:
>>>>
>>>> Awesome results!
>>>
>>> I'm surprised! LLD is barely working on ARM at the moment. :)
>>>
>> [snip]
>> My mistake. ARM worked for small programs, but lld failed for clang with a
>> bunch of these errors:
>> /home/rich/ellcc-release/bin/ld.lld: error: relocation R_ARM_CALL out of
>> range
>>
>> Sorry about the misinformation.
>>
>> -Rich
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>



More information about the cfe-dev mailing list