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