diff options
Diffstat (limited to 'lang/modula-3-lib/files/extra-patch-new-sigset-ab')
-rw-r--r-- | lang/modula-3-lib/files/extra-patch-new-sigset-ab | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/lang/modula-3-lib/files/extra-patch-new-sigset-ab b/lang/modula-3-lib/files/extra-patch-new-sigset-ab new file mode 100644 index 000000000000..0df8efb0987e --- /dev/null +++ b/lang/modula-3-lib/files/extra-patch-new-sigset-ab @@ -0,0 +1,32 @@ +--- m3/m3core/src/runtime/FreeBSD2/RTHeapDep.m3.orig Fri Jan 20 09:41:09 1995 ++++ m3/m3core/src/runtime/FreeBSD2/RTHeapDep.m3 Wed Oct 6 15:22:49 1999 +@@ -101,25 +101,11 @@ + PROCEDURE Fault (sig : Ctypes.int; + code: Ctypes.int; + scp : UNTRACED REF Usignal.struct_sigcontext) = +- VAR sf_addr_addr: UNTRACED REF ARRAY[0..1] OF ADDRESS; +- sf_addr : ADDRESS; +- (* +- * Signal frame of FreeBSD 1.1.5 +- * +- * struct sigframe { +- * int sf_signum; +- * int sf_code; +- * struct sigcontext *sf_scp; +- * char *sf_addr; <-- this is the faulting address +- * sig_t sf_handler; +- * struct sigcontext sf_sc; <-- this address is passed in scp +- * }; +- *) +- ++ VAR ++ sf_addr := LOOPHOLE(scp.sc_err, ADDRESS); ++ + BEGIN +- sf_addr_addr := scp - ( 2 * BYTESIZE(ADDRESS)); +- sf_addr := sf_addr_addr[0]; +- IF scp # NIL AND RTHeapRep.Fault(sf_addr) THEN ++ IF RTHeapRep.Fault(sf_addr) THEN + RETURN; + END; + IF defaultSIGSEGV = Usignal.SIG_IGN THEN RETURN; END; |