freebsd-ports/lang/modula-3-lib/files/extra-patch-new-sigset-ab
1999-12-23 17:31:15 +00:00

33 lines
1.1 KiB
Plaintext

--- 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;