ARM long branch stubs: PLT32 and JUMP24 relocations (PR9743)

Christophe LYON christophe.lyon@st.com
Fri Mar 6 15:55:00 GMT 2009


Hi all,

The attached patch should enable closing PR9743.
This issue has to do with the previously lacking support for long branch 
stubs towards PLT entries, which has been partially addressed by my 
previous patch (http://sourceware.org/ml/binutils/2009-02/msg00359.html).

Then, we still lacked support for PLT32 and JUMP24 relocations, which I 
have added here. I did not change R_ARM_PC24 handling because during my 
tests I had no occurrence of it and I didn't want to break something 
without proper testing. I can give a look at it later it needed.

Roughly speaking, the fix consists in moving the handling of these 
relocations to a common place with the *CALL* ones already handled by 
the long branch support code.

There is one special case: as these relocs don't apply to 'bl' 
instructions, we can't convert these branches into branch + mode switch, 
so this case has to be taken into account when selecting the appropriate 
stub.

Regarding the testsuite, I had to update:
* arm-call.d: a new padding word is inserted before the stubs, so 
several addresses had to be updated.
* arm-pic-veneer.d: the stub code is now common with several other 
cases, so I chose to update this one rather than several others (add 
ip,ip,pc vs add ip,pc,ip)
* thumb2-b-interwork.d: the stub is no longer in a separate section, and 
no longer has a xxx_change_to_arm symbol.


Christophe.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: pr9743.changelog
URL: <https://sourceware.org/pipermail/binutils/attachments/20090306/db2e49de/attachment.ksh>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: pr9743.patch
URL: <https://sourceware.org/pipermail/binutils/attachments/20090306/db2e49de/attachment-0001.ksh>


More information about the Binutils mailing list