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.
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.