This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

unwinding through signal frame on ARM


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]