> As Dave mentioned, there is a case in gcc which is currently broken when > running 2.4 kernels, because sigcontext handling was broken in 2.4 > kernels for 64-bit kernels. Carlos fixed this in 2.6.x (thanks Carlos). > > The signal trampoline layout also changed in 2.6.x kernels, breaking > backward compatibility for userspace applications that need to process > the signal context structure. This has come up not only for gcc but for > some other applications (this topic comes up from time to time on > debian-hppa). > > Currently there is code in gcc to handle 32-bit 2.4 kernels, 32-bit 2.6 > kernels and 64-bit 2.6 kernels. However, it appears that with 2.4 > kernels there are still some bugs related to either mmap, signal > handling or unaligned trap handling that causes the gcc testsuite to > hang the machine from time to time. If you run a 64-bit 2.4 kernel than > some of the gcc unwinding stuff will not work at all.
Thanks for all the help! Yeah, the sigcontext fixes wouldn't have been possible without James Bottomley's cleanups. A backport of all that code is a lengthy project, with a lot of reboot cycles. Since sigcontext is an opaque structures, and we don't have set/get/make/swap context calls we only broke those programs that parsed sigcontext by themselves. I apologize for that, but it was the only way to implement restartable system calls without a race condition (or rather 2 race conditions, we still have a race I think). c.

