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.
GNU gdb Red Hat Linux (6.1post-1.20040607.50rh)
Includes CFI for PPC and the test (sigstep.exp) passes.
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.