Not emitting "blx address" on Cortex-M3
Richard Earnshaw
rearnsha@arm.com
Tue May 5 09:36:00 GMT 2009
On Mon, 2009-05-04 at 17:30 +0100, Paul Brook wrote:
> On Saturday 02 May 2009, Samuel Tardieu wrote:
> > The ARM Cortex-M3 which uses the thumb2 instruction set can use "blx
> > register" but not "blx address".
>
> Not technically true. blx address is fine, you're just guaranteed to get a
> fault afterwards.
>
> > When compiling calls to GCC helper functions (here a soft-float division
> > between doubles), this instruction is generated:
>
> > 8170: f000 e94a blx 8408 <__aeabi_ddiv>
>
> Almost certainly means you're linking against ARM libraries. Don't do that.
The linker ought to be able to detect this using the object
attributes... M-profile objects shouldn't be compatible with ARM
objects.
R.
More information about the Binutils
mailing list