[PATCH] aarch64: Fix PLT fixups when BTI is used [PR32572]

Richard Earnshaw (lists) Richard.Earnshaw@arm.com
Fri Jan 24 15:00:18 GMT 2025


On 24/01/2025 08:31, Aurelien Jarno wrote:
> Hi,
> 
> On 2025-01-23 13:07, Richard Earnshaw wrote:
>> PR ld/32572
>>
>> There are two problems addressed in this PR.  Firstly, the choice of
>> whether or not a PLT stub needs a BTI on entry was too strict,
>> resulting in non-pie executables not having a BTI on their stub.  But
>> secondly, the logic to handle each stub types did not agree across the
>> various places where this information is used.
>>
>> The first issue is fixed by using bfd_link_executable rather than
>> bfd_link_pde.  The second is addressed by recording a delta for PLT
>> stub alongside the stub itself.  This is then used without needing
>> additional logic later on since it has been pre-calculated.
>>
>> A more comprehensive fix would involve creating a data structure to
>> describe each fixup, including a call-back function to apply any
>> relocations.  But that's a fairly large change and not appropriate for
>> backporting.
>> ---
>>
>> Yury has run this patch through the GLIBC testsuite and confirmed that
>> it fixes all the failures there.
>>
>> I'll wait 24hrs before applying, though in case anybody else has some
>> comments.
>>
>> R.
>>
>>  bfd/elfnn-aarch64.c | 21 ++++++++++++++-------
>>  1 file changed, 14 insertions(+), 7 deletions(-)
> 
> Thanks a lot for this patch. I have tested it, I have found no
> regression on the binutils testsuite, and I confirm it fixes the two
> glibc tests when it is built with -mbranch-protection=standard.
> 
> Regards,
> Aurelien
> 

Thanks for checking.  I've now pushed this to master and the binutils-2.44 branch.

R.


More information about the Binutils mailing list