This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: [PATCH] Fix thumb calls via PLT on ARM/SymbianOS
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?
Ideally, yes, I want to do this transformation on non-SymbianOS too.
But, we don't have a clear indicator saying "yes it is save to generate
blx" yet.
--
Daniel Jacobowitz
CodeSourcery, LLC