unwinding through signal frame on ARM
Peng Yuan
yingbo.com@gmail.com
Wed Mar 12 15:33:00 GMT 2014
Hi,
I'm using backtrace() to obtain call context by sending signals. But
program segfaults if the first instruction of a function receives
signal for backtrace.
ARM unwinding in libgcc uses "return_address -= 2" to get the caller
address. It is OK for normal function call with "bl xxx". But it
cannot handle signal frame case because "return_address -= 2" may go
to the preceding function.
See get_eit_entry() in libgcc/unwind-arm-common.inc.
Both GDB and libunwind take signal frame as a special case on ARM
unwinding. Does libgcc also need to fix the case?
--
Regards,
Peng
More information about the Gcc
mailing list