On Wed, Mar 16, 2005 at 02:23:12PM +0000, Richard Earnshaw wrote:
On Wed, 2005-03-16 at 14:17, Julian Brown wrote:
Hi,
This patch fixes calls made from thumb mode via the PLT on SymbianOS.
PLT entries are written in ARM mode, but previously they were being
called in thumb mode, with their address incorrectly offset by -4
(PLT_THUMB_STUB_SIZE).
Now, the target address has been corrected and the thumb BL instruction
is rewritten as BLX to perform the mode switch before attempting to
execute the PLT entry. (BLX is an armv5t instruction, but as SymbianOS
is only targeted at armv5t+, this should always be OK.)
The hardwired "4" for the thumb stub size on non-SymbianOS targets has
also been rewritten as PLT_THUMB_STUB_SIZE.
OK to apply?
This sounds like a hack. I'd much rather a generic solution were found
(and which permitted the blx optimization if available).
The SymbianOS bits sound generally right to me. The fact that the -4
bias is currently included is just a bug; that's from the code to
generate a Thumb header on PLT entries, which is already disabled
for SymbianOS.
OTOH, it may be missing some error checks - what if it's _not_ a BL?
Could we reach here?