diff options
Diffstat (limited to 'lang/modula-3-lib/files/extra-patch-old-sigset-aa')
-rw-r--r-- | lang/modula-3-lib/files/extra-patch-old-sigset-aa | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/lang/modula-3-lib/files/extra-patch-old-sigset-aa b/lang/modula-3-lib/files/extra-patch-old-sigset-aa new file mode 100644 index 000000000000..46fe6faf6181 --- /dev/null +++ b/lang/modula-3-lib/files/extra-patch-old-sigset-aa @@ -0,0 +1,109 @@ +This patch corrects some errors in the Usignal interface for FreeBSD. + +Index: m3/m3core/src/unix/freebsd-2/Usignal.i3 +--- Usignal.i3.orig Mon Aug 12 15:47:48 1996 ++++ Usignal.i3 Thu Jul 10 18:38:06 1997 +@@ -12,8 +12,6 @@ + + (*** <signal.h> ***) + +- (* I don't know about all the indented values below from the +- Linux implementation *) + CONST + SIGHUP = 1; (* hangup *) + SIGINT = 2; (* interrupt *) +@@ -23,27 +21,19 @@ + SIGIOT = 6; (* IOT instruction *) + SIGEMT = 7; (* EMT instruction *) + SIGFPE = 8; (* floating point exception *) +- FPE_INTDIV_TRAP = 20; (* integer divide by zero *) +- FPE_INTOVF_TRAP = 21; (* integer overflow *) +- FPE_FLTOPERR_TRAP = 1; (* [floating operand error] *) +- FPE_FLTDEN_TRAP = 2; (* [floating denormalized operand] *) +- FPE_FLTDIV_TRAP = 3; (* [floating divide by zero] *) +- FPE_FLTOVF_TRAP = 4; (* [floating overflow] *) +- FPE_FLTUND_TRAP = 5; (* [floating underflow] *) +- FPE_FLTINEX_TRAP = 6; (* [floating inexact result] *) +- FPE_UUOP_TRAP = 7; (* [floating undefined opcode] *) +- FPE_DATACH_TRAP = 8; (* [floating data chain exception] *) +- FPE_FLTSTK_TRAP = 16; (* [floating stack fault] *) +- FPE_FPA_ENABLE = 17; (* [FPA not enabled] *) +- FPE_FPA_ERROR = 18; (* [FPA arithmetic exception] *) ++ FPE_INTOVF_TRAP = 1; (* integer overflow *) ++ FPE_INTDIV_TRAP = 2; (* integer divide by zero *) ++ FPE_FLTDIV_TRAP = 3; (* floating/decimal divide by zero *) ++ FPE_FLTOVF_TRAP = 4; (* floating overflow *) ++ FPE_FLTUND_TRAP = 5; (* floating underflow *) ++ FPE_FPU_NP_TRAP = 6; (* floating point unit not present *) ++ FPE_SUBRNG_TRAP = 7; (* subrange out of bounds *) + SIGKILL = 9; (* kill (cannot be caught or ignored) *) + SIGBUS = 10; (* bus error *) +- BUS_HWERR = 1; (* misc hardware error (e.g. timeout) *) +- BUS_ALIGN = 2; (* hardware alignment error *) ++ BUS_PAGE_FAULT = 12; (* page fault protection base *) ++ BUS_SEGNP_FAULT = 26; (* segment not present *) ++ BUS_STK_FAULT = 27; (* stack fault *) + SIGSEGV = 11; (* segmentation violation *) +- SEGV_NOMAP = 3; (* no mapping at the fault address *) +- SEGV_PROT = 4; (* access exceeded protections *) +- SEGV_OBJERR = 5; (* object returned errno value *) + SIGSYS = 12; (* bad argument to system call *) + SIGPIPE = 13; (* write on a pipe with no one to read it *) + SIGALRM = 14; (* alarm clock *) +@@ -61,9 +51,9 @@ + SIGVTALRM = 26; (* virtual time alarm *) + SIGPROF = 27; (* profiling time alarm *) + SIGWINCH = 28; (* window size changes *) +- SIGLOST = 29; (* Sys-V rec lock: notify user upon server crash *) +- SIGUSR1 = 30; (* User signal 1 (from SysV) *) +- SIGUSR2 = 31; (* User signal 2 (from SysV) *) ++ SIGINFO = 29; (* information request *) ++ SIGUSR1 = 30; (* user defined signal 1 *) ++ SIGUSR2 = 31; (* user defined signal 2 *) + + (* System V definitions *) + SIGCLD = SIGCHLD; +@@ -80,7 +70,8 @@ + struct_sigvec = RECORD + sv_handler: SignalHandler; (* signal handler *) + sv_mask: sigset_t; (* signal mask to apply *) +- sv_flags: int; (* see signal options below *) END; ++ sv_flags: int; (* see signal options below *) ++ END; + + + CONST +@@ -101,16 +92,10 @@ + SIG_SETMASK = 3; (* Set block mask to this mask *) + + TYPE +- SignalActionHandler = PROCEDURE (sig: int); +- SignalRestoreHandler = PROCEDURE (); +- + struct_sigaction = RECORD +- sa_handler : SignalActionHandler; (* signal handler *) ++ sa_handler : SignalHandler; (* signal handler *) + sa_mask : sigset_t; (* signals to block while in handler *) + sa_flags : int; (* signal action flags *) +- (* ow +- sa_restorer : SignalRestoreHandler; (* restores interrupted state *) +- *) + END; + + struct_sigaction_star = UNTRACED REF struct_sigaction; +@@ -206,9 +191,15 @@ + + <*EXTERNAL*> PROCEDURE sigstack (VAR ss, oss: struct_sigstack): int; + ++(*** sigsuspend(2) - release blocked signals and wait for interrupt ***) ++ ++<*EXTERNAL*> ++PROCEDURE sigsuspend (VAR sigmask: sigset_t): int; + + (*** sigaction(2) - software signal facilities ***) + ++(* FIXME - This should probably use the VAR construct like the other ++ platforms use. *) + <*EXTERNAL*> + PROCEDURE sigaction (sig: int; act, oact: struct_sigaction_star): int; + |