David Daney writes: > With the current kernel (2.6.23.1) in my R5000 based O2 it seems > impossible for GCC's exception unwinding machinery to unwind through > signal frames. The cause of the problems is the > ICACHE_REFILLS_WORKAROUND_WAR which puts the sigcontext at an almost > impossible to determine offset from the signal return trampoline. The > unwinder depends on being able to find the sigcontext given a known > location of the trampoline. > > It seems there are a couple of possible solutions: > > 1) The comments in war.h indicate the problem only exists in R7000 > and E9000 processors. We could turn off the workaround if the > kernel is configured for R5000. That would help me, but not those > with the effected systems. > > 2) In the non-workaround case, the siginfo immediately follows the > trampoline and the first member is the signal number. For the > workaround case the first word following the trampoline is zero. > We could replace this with the offset to the sigcontext which is > always a small negative value. The unwinder could then distinguish > the two cases (signal numbers are positive and the offset > negative). If we did this, the change would have to be coordinated > with GCC's unwinder (in libgcc_s.so.1). > > Thoughts? The best solution is to put the unwinder info in the kernel. Does MIPS use a vDSO ? Andrew.