[llvm-dev] BLX relocation regression on Thumb2 bot

Tim Northover via llvm-dev llvm-dev at lists.llvm.org
Wed May 18 09:32:04 PDT 2016


On 18 May 2016 at 07:33, Renato Golin <renato.golin at linaro.org> wrote:
>> I think we only produce R_ARM_THM_JUMP24 for tail calls. The veneer is
>> then needed if a mode change is required because there's no "bx (imm)"
>> instruction.
>
> I'm curious as to what changed the behaviour, and from what? bx reg?
> or non-tail call?

That's the thing: this shouldn't have changed at all recently. We emit
"b.w dest" with an R_ARM_THM_JUMP24 reloc. The linker then needs a
veneer if dest is out of range or an ARM function.

We shouldn't even be *able* to botch that particular relocation:
anything we put in there should be fixable by the linker (assuming
sizeof(text section) < 16MB so that there's room for a veneer, which
is almost certain especially as we're using -ffunction-sections). The
linker error is more of an assertion, really.

Tim.


More information about the llvm-dev mailing list