In the function epilogue, where the dynamic chain (of SP's) has been torn down, GDB gets confused: it thinks it needs to run down one level of the SP chain (to get the frame ID's stack address) when it doesn't. This, in turn, leads to wrong saved registers being saved, ... In the case of single-stepping out of a signal handler and into a signal trampoline, things get especially bad as the signal-trampoline's frame doesn't actually have a valid SP chain. It leads to a bad memory access and that leads to a failed step. The CFI information, if working, would fix this.
GDB version: GNU gdb Red Hat Linux (6.1post-1.20040607.50rh) Includes CFI for PPC and the test (sigstep.exp) passes. Andrew
An advisory has been issued which should help the problem described in this bug report. This report is therefore being closed with a resolution of ERRATA. For more information on the solution and/or where to find the updated files, please follow the link below. You may reopen this bug report if the solution does not work for you. http://rhn.redhat.com/errata/RHBA-2004-561.html