Comment 0 for bug 488354

Revision history for this message
Dave Martin (dave-martin-arm) wrote : NS_InvokeByIndex in xptcinvoke_arm.cpp is not Thumb-2 safe

Binary package hint: xulrunner-1.9.1

Either this file should be built individually as ARM code using -marm, or the code needs to be reviewed and modified to be Thumb-2 safe.

Specifically, calling a function using:
  mov lr, pc
  mov pc, ip

...will not interwork properly between ARM and Thumb state, depending on the function called.

Instead, something like the following is needed:
#ifdef __thumb__
  adr lr, 0f + 1 /* store return address in lr, setting the Thumb bit [0] */
  bx ip
0:
#else
  mov lr, pc
  mov pc, ip
#endif

I'll try and propose a suitable patch.

I'm currently scanning to see whether there is other problematic code in this package.