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

Reply via email to