1 /* do not edit automatically generated by mc from M2RTS. */
2 /* M2RTS.mod Implements the run time system facilities of Modula-2.
4 Copyright (C) 2001-2021 Free Software Foundation, Inc.
5 Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>.
7 This file is part of GNU Modula-2.
9 GNU Modula-2 is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 3, or (at your option)
14 GNU Modula-2 is distributed in the hope that it will be useful, but
15 WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 General Public License for more details.
19 Under Section 7 of GPL version 3, you are granted additional
20 permissions described in the GCC Runtime Library Exception, version
21 3.1, as published by the Free Software Foundation.
23 You should have received a copy of the GNU General Public License and
24 a copy of the GCC Runtime Library Exception along with this program;
25 see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
26 <http://www.gnu.org/licenses/>. */
30 # if !defined (PROC_D)
32 typedef void (*PROC_t
) (void);
33 typedef struct { PROC_t proc
; } PROC
;
44 # include "GStorage.h"
45 #if defined(__cplusplus)
53 # include "GNumberIO.h"
57 # include "GStorage.h"
58 # include "GRTExceptions.h"
59 # include "GM2EXCEPTION.h"
60 # include "GM2Dependent.h"
62 typedef struct M2RTS_ArgCVEnvP_p M2RTS_ArgCVEnvP
;
64 typedef struct M2RTS_ProcedureList_r M2RTS_ProcedureList
;
66 typedef char *M2RTS_PtrToChar
;
68 typedef struct M2RTS__T1_r M2RTS__T1
;
70 typedef M2RTS__T1
*M2RTS_ProcedureChain
;
72 typedef void (*M2RTS_ArgCVEnvP_t
) (int, void *, void *);
73 struct M2RTS_ArgCVEnvP_p
{ M2RTS_ArgCVEnvP_t proc
; };
75 struct M2RTS_ProcedureList_r
{
76 M2RTS_ProcedureChain head
;
77 M2RTS_ProcedureChain tail
;
82 M2RTS_ProcedureChain prev
;
83 M2RTS_ProcedureChain next
;
86 static M2RTS_ProcedureList InitialProc
;
87 static M2RTS_ProcedureList TerminateProc
;
89 static unsigned int isHalting
;
90 static unsigned int CallExit
;
91 static unsigned int Initialized
;
94 ConstructModules - resolve dependencies and then call each
95 module constructor in turn.
98 extern "C" void M2RTS_ConstructModules (void * applicationmodule
, int argc
, void * argv
, void * envp
);
101 DeconstructModules - resolve dependencies and then call each
102 module constructor in turn.
105 extern "C" void M2RTS_DeconstructModules (void * applicationmodule
, int argc
, void * argv
, void * envp
);
108 RegisterModule - adds module name to the list of outstanding
109 modules which need to have their dependencies
110 explored to determine initialization order.
113 extern "C" void M2RTS_RegisterModule (void * name
, M2RTS_ArgCVEnvP init
, M2RTS_ArgCVEnvP fini
, PROC dependencies
);
116 RequestDependant - used to specify that modulename is dependant upon
117 module dependantmodule.
120 extern "C" void M2RTS_RequestDependant (void * modulename
, void * dependantmodule
);
123 InstallTerminationProcedure - installs a procedure, p, which will
124 be called when the procedure
125 ExecuteTerminationProcedures
126 is invoked. It returns TRUE if the
127 procedure is installed.
130 extern "C" unsigned int M2RTS_InstallTerminationProcedure (PROC p
);
133 ExecuteInitialProcedures - executes the initial procedures installed by
134 InstallInitialProcedure.
137 extern "C" void M2RTS_ExecuteInitialProcedures (void);
140 InstallInitialProcedure - installs a procedure to be executed just
141 before the BEGIN code section of the
145 extern "C" unsigned int M2RTS_InstallInitialProcedure (PROC p
);
148 ExecuteTerminationProcedures - calls each installed termination procedure
152 extern "C" void M2RTS_ExecuteTerminationProcedures (void);
155 Terminate - provides compatibility for pim. It calls exit with
156 the exitcode provided in a prior call to ExitOnHalt
157 (or zero if ExitOnHalt was never called). It does
158 not call ExecuteTerminationProcedures.
161 extern "C" void M2RTS_Terminate (void) __attribute__ ((noreturn
));
164 HALT - terminate the current program. The procedure
165 ExecuteTerminationProcedures
166 is called before the program is stopped. The parameter
167 exitcode is optional. If the parameter is not supplied
168 HALT will call libc 'abort', otherwise it will exit with
169 the code supplied. Supplying a parameter to HALT has the
170 same effect as calling ExitOnHalt with the same code and
171 then calling HALT with no parameter.
174 extern "C" void M2RTS_HALT (int exitcode
) __attribute__ ((noreturn
));
177 Halt - provides a more user friendly version of HALT, which takes
178 four parameters to aid debugging.
181 extern "C" void M2RTS_Halt (const char *file_
, unsigned int _file_high
, unsigned int line
, const char *function_
, unsigned int _function_high
, const char *description_
, unsigned int _description_high
) __attribute__ ((noreturn
));
184 ExitOnHalt - if HALT is executed then call exit with the exit code, e.
187 extern "C" void M2RTS_ExitOnHalt (int e
);
190 ErrorMessage - emits an error message to stderr and then calls exit (1).
193 extern "C" void M2RTS_ErrorMessage (const char *message_
, unsigned int _message_high
, const char *file_
, unsigned int _file_high
, unsigned int line
, const char *function_
, unsigned int _function_high
) __attribute__ ((noreturn
));
196 Length - returns the length of a string, a. This is called whenever
197 the user calls LENGTH and the parameter cannot be calculated
201 extern "C" unsigned int M2RTS_Length (const char *a_
, unsigned int _a_high
);
202 extern "C" void M2RTS_AssignmentException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
);
203 extern "C" void M2RTS_ReturnException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
);
204 extern "C" void M2RTS_IncException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
);
205 extern "C" void M2RTS_DecException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
);
206 extern "C" void M2RTS_InclException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
);
207 extern "C" void M2RTS_ExclException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
);
208 extern "C" void M2RTS_ShiftException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
);
209 extern "C" void M2RTS_RotateException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
);
210 extern "C" void M2RTS_StaticArraySubscriptException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
);
211 extern "C" void M2RTS_DynamicArraySubscriptException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
);
212 extern "C" void M2RTS_ForLoopBeginException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
);
213 extern "C" void M2RTS_ForLoopToException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
);
214 extern "C" void M2RTS_ForLoopEndException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
);
215 extern "C" void M2RTS_PointerNilException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
);
216 extern "C" void M2RTS_NoReturnException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
);
217 extern "C" void M2RTS_CaseException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
);
218 extern "C" void M2RTS_WholeNonPosDivException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
);
219 extern "C" void M2RTS_WholeNonPosModException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
);
220 extern "C" void M2RTS_WholeZeroDivException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
);
221 extern "C" void M2RTS_WholeZeroRemException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
);
222 extern "C" void M2RTS_WholeValueException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
);
223 extern "C" void M2RTS_RealValueException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
);
224 extern "C" void M2RTS_ParameterException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
);
225 extern "C" void M2RTS_NoException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
);
228 ExecuteReverse - execute the procedure associated with procptr
229 and then proceed to try and execute all previous
230 procedures in the chain.
233 static void ExecuteReverse (M2RTS_ProcedureChain procptr
);
236 AppendProc - append proc to the end of the procedure list
240 static unsigned int AppendProc (M2RTS_ProcedureList
*proclist
, PROC proc
);
243 ErrorString - writes a string to stderr.
246 static void ErrorString (const char *a_
, unsigned int _a_high
);
249 InitProcList - initialize the head and tail pointers to NIL.
252 static void InitProcList (M2RTS_ProcedureList
*p
);
255 Init - initialize the initial, terminate procedure lists and booleans.
258 static void Init (void);
261 CheckInitialized - checks to see if this module has been initialized
262 and if it has not it calls Init. We need this
263 approach as this module is called by module ctors
264 before we reach main.
267 static void CheckInitialized (void);
271 ExecuteReverse - execute the procedure associated with procptr
272 and then proceed to try and execute all previous
273 procedures in the chain.
276 static void ExecuteReverse (M2RTS_ProcedureChain procptr
)
278 while (procptr
!= NULL
)
280 (*procptr
->p
.proc
) (); /* Invoke the procedure. */
281 procptr
= procptr
->prev
; /* Invoke the procedure. */
287 AppendProc - append proc to the end of the procedure list
291 static unsigned int AppendProc (M2RTS_ProcedureList
*proclist
, PROC proc
)
293 M2RTS_ProcedureChain pdes
;
295 Storage_ALLOCATE ((void **) &pdes
, sizeof (M2RTS__T1
));
297 pdes
->prev
= (*proclist
).tail
;
299 if ((*proclist
).head
== NULL
)
301 (*proclist
).head
= pdes
;
303 (*proclist
).tail
= pdes
;
305 /* static analysis guarentees a RETURN statement will be used before here. */
306 __builtin_unreachable ();
311 ErrorString - writes a string to stderr.
314 static void ErrorString (const char *a_
, unsigned int _a_high
)
319 /* make a local copy of each unbounded array. */
320 memcpy (a
, a_
, _a_high
+1);
322 n
= static_cast<int> (libc_write (2, &a
, static_cast<size_t> (StrLib_StrLen ((const char *) a
, _a_high
))));
327 InitProcList - initialize the head and tail pointers to NIL.
330 static void InitProcList (M2RTS_ProcedureList
*p
)
338 Init - initialize the initial, terminate procedure lists and booleans.
341 static void Init (void)
343 InitProcList (&InitialProc
);
344 InitProcList (&TerminateProc
);
347 CallExit
= FALSE
; /* default by calling abort */
352 CheckInitialized - checks to see if this module has been initialized
353 and if it has not it calls Init. We need this
354 approach as this module is called by module ctors
355 before we reach main.
358 static void CheckInitialized (void)
369 ConstructModules - resolve dependencies and then call each
370 module constructor in turn.
373 extern "C" void M2RTS_ConstructModules (void * applicationmodule
, int argc
, void * argv
, void * envp
)
375 M2Dependent_ConstructModules (applicationmodule
, argc
, argv
, envp
);
380 DeconstructModules - resolve dependencies and then call each
381 module constructor in turn.
384 extern "C" void M2RTS_DeconstructModules (void * applicationmodule
, int argc
, void * argv
, void * envp
)
386 M2Dependent_DeconstructModules (applicationmodule
, argc
, argv
, envp
);
391 RegisterModule - adds module name to the list of outstanding
392 modules which need to have their dependencies
393 explored to determine initialization order.
396 extern "C" void M2RTS_RegisterModule (void * name
, M2RTS_ArgCVEnvP init
, M2RTS_ArgCVEnvP fini
, PROC dependencies
)
398 M2Dependent_RegisterModule (name
, (M2Dependent_ArgCVEnvP
) {(M2Dependent_ArgCVEnvP_t
) init
.proc
}, (M2Dependent_ArgCVEnvP
) {(M2Dependent_ArgCVEnvP_t
) fini
.proc
}, dependencies
);
403 RequestDependant - used to specify that modulename is dependant upon
404 module dependantmodule.
407 extern "C" void M2RTS_RequestDependant (void * modulename
, void * dependantmodule
)
409 M2Dependent_RequestDependant (modulename
, dependantmodule
);
414 InstallTerminationProcedure - installs a procedure, p, which will
415 be called when the procedure
416 ExecuteTerminationProcedures
417 is invoked. It returns TRUE if the
418 procedure is installed.
421 extern "C" unsigned int M2RTS_InstallTerminationProcedure (PROC p
)
423 return AppendProc (&TerminateProc
, p
);
424 /* static analysis guarentees a RETURN statement will be used before here. */
425 __builtin_unreachable ();
430 ExecuteInitialProcedures - executes the initial procedures installed by
431 InstallInitialProcedure.
434 extern "C" void M2RTS_ExecuteInitialProcedures (void)
436 ExecuteReverse (InitialProc
.tail
);
441 InstallInitialProcedure - installs a procedure to be executed just
442 before the BEGIN code section of the
446 extern "C" unsigned int M2RTS_InstallInitialProcedure (PROC p
)
448 return AppendProc (&InitialProc
, p
);
449 /* static analysis guarentees a RETURN statement will be used before here. */
450 __builtin_unreachable ();
455 ExecuteTerminationProcedures - calls each installed termination procedure
459 extern "C" void M2RTS_ExecuteTerminationProcedures (void)
461 ExecuteReverse (TerminateProc
.tail
);
466 Terminate - provides compatibility for pim. It calls exit with
467 the exitcode provided in a prior call to ExitOnHalt
468 (or zero if ExitOnHalt was never called). It does
469 not call ExecuteTerminationProcedures.
472 extern "C" void M2RTS_Terminate (void)
474 libc_exit (ExitValue
);
479 HALT - terminate the current program. The procedure
480 ExecuteTerminationProcedures
481 is called before the program is stopped. The parameter
482 exitcode is optional. If the parameter is not supplied
483 HALT will call libc 'abort', otherwise it will exit with
484 the code supplied. Supplying a parameter to HALT has the
485 same effect as calling ExitOnHalt with the same code and
486 then calling HALT with no parameter.
489 extern "C" void M2RTS_HALT (int exitcode
)
494 ExitValue
= exitcode
;
498 /* double HALT found */
504 M2RTS_ExecuteTerminationProcedures ();
508 libc_exit (ExitValue
);
518 Halt - provides a more user friendly version of HALT, which takes
519 four parameters to aid debugging.
522 extern "C" void M2RTS_Halt (const char *file_
, unsigned int _file_high
, unsigned int line
, const char *function_
, unsigned int _function_high
, const char *description_
, unsigned int _description_high
)
524 char file
[_file_high
+1];
525 char function
[_function_high
+1];
526 char description
[_description_high
+1];
528 /* make a local copy of each unbounded array. */
529 memcpy (file
, file_
, _file_high
+1);
530 memcpy (function
, function_
, _function_high
+1);
531 memcpy (description
, description_
, _description_high
+1);
533 M2RTS_ErrorMessage ((const char *) description
, _description_high
, (const char *) file
, _file_high
, line
, (const char *) function
, _function_high
);
535 __builtin_unreachable ();
540 ExitOnHalt - if HALT is executed then call exit with the exit code, e.
543 extern "C" void M2RTS_ExitOnHalt (int e
)
551 ErrorMessage - emits an error message to stderr and then calls exit (1).
554 extern "C" void M2RTS_ErrorMessage (const char *message_
, unsigned int _message_high
, const char *file_
, unsigned int _file_high
, unsigned int line
, const char *function_
, unsigned int _function_high
)
556 typedef struct ErrorMessage__T2_a ErrorMessage__T2
;
558 struct ErrorMessage__T2_a
{ char array
[10+1]; };
559 ErrorMessage__T2 LineNo
;
560 char message
[_message_high
+1];
561 char file
[_file_high
+1];
562 char function
[_function_high
+1];
564 /* make a local copy of each unbounded array. */
565 memcpy (message
, message_
, _message_high
+1);
566 memcpy (file
, file_
, _file_high
+1);
567 memcpy (function
, function_
, _function_high
+1);
569 ErrorString ((const char *) file
, _file_high
);
570 ErrorString ((const char *) ":", 1);
571 NumberIO_CardToStr (line
, 0, (char *) &LineNo
.array
[0], 10);
572 ErrorString ((const char *) &LineNo
.array
[0], 10);
573 ErrorString ((const char *) ":", 1);
574 if (! (StrLib_StrEqual ((const char *) function
, _function_high
, (const char *) "", 0)))
576 ErrorString ((const char *) "in ", 3);
577 ErrorString ((const char *) function
, _function_high
);
578 ErrorString ((const char *) " has caused ", 12);
580 ErrorString ((const char *) message
, _message_high
);
581 LineNo
.array
[0] = ASCII_nl
;
582 LineNo
.array
[1] = ASCII_nul
;
583 ErrorString ((const char *) &LineNo
.array
[0], 10);
589 Length - returns the length of a string, a. This is called whenever
590 the user calls LENGTH and the parameter cannot be calculated
594 extern "C" unsigned int M2RTS_Length (const char *a_
, unsigned int _a_high
)
600 /* make a local copy of each unbounded array. */
601 memcpy (a
, a_
, _a_high
+1);
605 while ((l
<= h
) && (a
[l
] != ASCII_nul
))
610 /* static analysis guarentees a RETURN statement will be used before here. */
611 __builtin_unreachable ();
614 extern "C" void M2RTS_AssignmentException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
)
617 The following are the runtime exception handler routines.
619 RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException
)), filename
, line
, column
, scope
, message
);
622 extern "C" void M2RTS_ReturnException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
)
624 RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException
)), filename
, line
, column
, scope
, message
);
627 extern "C" void M2RTS_IncException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
)
629 RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException
)), filename
, line
, column
, scope
, message
);
632 extern "C" void M2RTS_DecException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
)
634 RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException
)), filename
, line
, column
, scope
, message
);
637 extern "C" void M2RTS_InclException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
)
639 RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException
)), filename
, line
, column
, scope
, message
);
642 extern "C" void M2RTS_ExclException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
)
644 RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException
)), filename
, line
, column
, scope
, message
);
647 extern "C" void M2RTS_ShiftException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
)
649 RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException
)), filename
, line
, column
, scope
, message
);
652 extern "C" void M2RTS_RotateException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
)
654 RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException
)), filename
, line
, column
, scope
, message
);
657 extern "C" void M2RTS_StaticArraySubscriptException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
)
659 RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_indexException
)), filename
, line
, column
, scope
, message
);
662 extern "C" void M2RTS_DynamicArraySubscriptException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
)
664 RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_indexException
)), filename
, line
, column
, scope
, message
);
667 extern "C" void M2RTS_ForLoopBeginException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
)
669 RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException
)), filename
, line
, column
, scope
, message
);
672 extern "C" void M2RTS_ForLoopToException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
)
674 RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException
)), filename
, line
, column
, scope
, message
);
677 extern "C" void M2RTS_ForLoopEndException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
)
679 RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException
)), filename
, line
, column
, scope
, message
);
682 extern "C" void M2RTS_PointerNilException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
)
684 RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_invalidLocation
)), filename
, line
, column
, scope
, message
);
687 extern "C" void M2RTS_NoReturnException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
)
689 RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_functionException
)), filename
, line
, column
, scope
, message
);
692 extern "C" void M2RTS_CaseException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
)
694 RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_caseSelectException
)), filename
, line
, column
, scope
, message
);
697 extern "C" void M2RTS_WholeNonPosDivException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
)
699 RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_wholeDivException
)), filename
, line
, column
, scope
, message
);
702 extern "C" void M2RTS_WholeNonPosModException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
)
704 RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_wholeDivException
)), filename
, line
, column
, scope
, message
);
707 extern "C" void M2RTS_WholeZeroDivException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
)
709 RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_wholeDivException
)), filename
, line
, column
, scope
, message
);
712 extern "C" void M2RTS_WholeZeroRemException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
)
714 RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_wholeDivException
)), filename
, line
, column
, scope
, message
);
717 extern "C" void M2RTS_WholeValueException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
)
719 RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_wholeValueException
)), filename
, line
, column
, scope
, message
);
722 extern "C" void M2RTS_RealValueException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
)
724 RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_realValueException
)), filename
, line
, column
, scope
, message
);
727 extern "C" void M2RTS_ParameterException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
)
729 RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException
)), filename
, line
, column
, scope
, message
);
732 extern "C" void M2RTS_NoException (void * filename
, unsigned int line
, unsigned int column
, void * scope
, void * message
)
734 RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_exException
)), filename
, line
, column
, scope
, message
);
737 extern "C" void _M2_M2RTS_init (__attribute__((unused
)) int argc
,__attribute__((unused
)) char *argv
[],__attribute__((unused
)) char *envp
[])
742 extern "C" void _M2_M2RTS_finish (__attribute__((unused
)) int argc
,__attribute__((unused
)) char *argv
[],__attribute__((unused
)) char *envp
[])