2 (c) copyright 1988 by the Vrije Universiteit, Amsterdam, The Netherlands.
3 See the copyright notice in the ACK home directory, in the file "Copyright".
7 Module: default modula-2 trap handler
8 Author: Ceriel J.H. Jacobs
19 { EARRAY
, "array bound error"},
20 { ERANGE
, "range bound error"},
21 { ESET
, "set bound error"},
22 { EIOVFL
, "integer overflow"},
23 { EFOVFL
, "real overflow"},
24 { EFUNFL
, "real underflow"},
25 { EIDIVZ
, "divide by 0"},
26 { EFDIVZ
, "divide by 0.0"},
27 { EIUND
, "undefined integer"},
28 { EFUND
, "undefined real"},
29 { ECONV
, "conversion error"},
31 { ESTACK
, "stack overflow"},
32 { EHEAP
, "heap overflow"},
33 { EILLINS
, "illegal instruction"},
34 { EODDZ
, "illegal size argument"},
35 { ECASE
, "case error"},
36 { EMEMFLT
, "addressing non existent memory"},
37 { EBADPTR
, "bad pointer used"},
38 { EBADPC
, "program counter out of range"},
39 { EBADLAE
, "bad argument of lae"},
40 { EBADMON
, "bad monitor call"},
41 { EBADLIN
, "argument if LIN too high"},
42 { EBADGTO
, "GTO descriptor error"},
44 { M2_TOOLARGE
, "stack size of process too large"},
45 { M2_TOOMANY
, "too many nested traps + handlers"},
46 { M2_NORESULT
, "no RETURN from function procedure"},
47 { M2_UOVFL
, "cardinal overflow"},
48 { M2_FORCH
, "(warning) FOR-loop control variable was changed in the body"},
49 { M2_UUVFL
, "cardinal underflow"},
50 { M2_INTERNAL
, "internal error; ask an expert for help"},
51 { M2_UNIXSIG
, "got a unix signal"},
58 register struct errm
*ep
= &errors
[0];
63 while (ep
->errno
!= trapno
&& ep
->errmes
!= 0) ep
++;
66 _Traps__Message(ep
->errmes
, 0, (int) (p
- ep
->errmes
), 1);
70 static char q
[] = "error number xxxxxxxxxxxxx";
81 while (s
> buf
) *p
++ = *--s
;
83 _Traps__Message(q
, 0, (int) (p
- q
), 1);
85 #if !defined(__em24) && !defined(__em44) && !defined(__em22)
86 if (trapno
== M2_UNIXSIG
) {
88 signal(__signo
, SIG_DFL
);
90 kill(getpid(), __signo
);
94 if (trapno
!= M2_FORCH
) {