https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113803
--- Comment #6 from Florian Weimer <fw at gcc dot gnu.org> --- I we knew that the last successfully executed instruction was an indirect call or branch (assumed to be tail call), we could use the return address at the top of the stack, for architectures where call instructions push the return address onto the stack. This is probably what GDB is doing. The issue is of course that if the fault was caused by something else, we should instead the program counter in the signal frame to continue unwinding. Maybe we could special-case this for PC == 0, which is obviously invalid.