Retract the most recent changes to get Linux ELF binaries to work.
authorChris Hanson <org/chris-hanson/cph>
Fri, 6 Oct 1995 06:45:24 +0000 (06:45 +0000)
committerChris Hanson <org/chris-hanson/cph>
Fri, 6 Oct 1995 06:45:24 +0000 (06:45 +0000)
commitc76c32104a9586cbdc3d1f5f113de608f2113821
treea5170d5bdcc2e2f59666c056f4debbd232ae59b1
parent3cd057d4e40f04083d61939cb454d8b7689fa61c
Retract the most recent changes to get Linux ELF binaries to work.
These changes do not and cannot work, because signal handlers cannot
be run while the special Scheme segment registers are in use.  The
reason is that the signal handlers are registered as 32-bit offsets,
and the associated segment descriptors are not registered with those
offsets; when the signal arrives, the offset is used with whatever
segment descriptor happens to be in the CS register.  When the Scheme
segment descriptors are in place, this offset is meaningless and
causes Scheme to die immediately with a SIGSEGV.

One possible workaround for this problem would be to re-register the
signal handlers whenever the segment registers are hacked, but this is
very expensive in time, and the Scheme<->C interface is already too
slow.  The only other feasibility is to get the Linux kernel changed
so that signal handlers are invoked in a known segment without regard
to the contents of CS at the time of the signal; but although this is
a sensible idea, it's necessary to convince the kernel developer's of
it's desirability, and meanwhile the existing Linux installations will
not work.
v7/src/microcode/s/linux.h