111
|
1 /****************************************************************************
|
|
2 * *
|
|
3 * GNAT COMPILER COMPONENTS *
|
|
4 * *
|
|
5 * R A I S E *
|
|
6 * *
|
|
7 * C Implementation File *
|
|
8 * *
|
131
|
9 * Copyright (C) 1992-2018, Free Software Foundation, Inc. *
|
111
|
10 * *
|
|
11 * GNAT is free software; you can redistribute it and/or modify it under *
|
|
12 * terms of the GNU General Public License as published by the Free Soft- *
|
|
13 * ware Foundation; either version 3, or (at your option) any later ver- *
|
|
14 * sion. GNAT is distributed in the hope that it will be useful, but WITH- *
|
|
15 * OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY *
|
|
16 * or FITNESS FOR A PARTICULAR PURPOSE. *
|
|
17 * *
|
|
18 * As a special exception under Section 7 of GPL version 3, you are granted *
|
|
19 * additional permissions described in the GCC Runtime Library Exception, *
|
|
20 * version 3.1, as published by the Free Software Foundation. *
|
|
21 * *
|
|
22 * You should have received a copy of the GNU General Public License and *
|
|
23 * a copy of the GCC Runtime Library Exception along with this program; *
|
|
24 * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see *
|
|
25 * <http://www.gnu.org/licenses/>. *
|
|
26 * *
|
|
27 * GNAT was originally developed by the GNAT team at New York University. *
|
|
28 * Extensive contributions were provided by Ada Core Technologies Inc. *
|
|
29 * *
|
|
30 ****************************************************************************/
|
|
31
|
|
32 /* Shared routines to support exception handling. __gnat_unhandled_terminate
|
|
33 is shared between all exception handling mechanisms. */
|
|
34
|
|
35 #ifdef IN_RTS
|
|
36 #include "tconfig.h"
|
|
37 #include "tsystem.h"
|
|
38 #else
|
|
39 #include "config.h"
|
|
40 #include "system.h"
|
|
41 #endif
|
|
42
|
|
43 #include "adaint.h"
|
|
44 #include "raise.h"
|
|
45
|
|
46 #ifdef __cplusplus
|
|
47 extern "C" {
|
|
48 #endif
|
|
49
|
|
50 /* When an exception is raised for which no handler exists, the procedure
|
|
51 Ada.Exceptions.Unhandled_Exception is called, which performs the call to
|
|
52 adafinal to complete finalization, and then prints out the error messages
|
|
53 for the unhandled exception. The final step is to call this routine, which
|
|
54 performs any system dependent cleanup required. */
|
|
55
|
|
56 void
|
|
57 __gnat_unhandled_terminate (void)
|
|
58 {
|
|
59 #ifdef VMS
|
|
60 /* Special termination handling for VMS */
|
|
61 long prvhnd;
|
|
62
|
|
63 /* Remove the exception vector so it won't intercept any errors
|
|
64 in the call to exit, and go into and endless loop */
|
|
65
|
|
66 SYS$SETEXV (1, 0, 3, &prvhnd);
|
|
67 #endif
|
|
68
|
|
69 /* Default termination handling */
|
|
70 __gnat_os_exit (1);
|
|
71 }
|
|
72
|
|
73 #ifndef IN_RTS
|
|
74 int
|
|
75 __gnat_backtrace (void **array ATTRIBUTE_UNUSED,
|
|
76 int size ATTRIBUTE_UNUSED,
|
|
77 void *exclude_min ATTRIBUTE_UNUSED,
|
|
78 void *exclude_max ATTRIBUTE_UNUSED,
|
|
79 int skip_frames ATTRIBUTE_UNUSED)
|
|
80 {
|
|
81 return 0;
|
|
82 }
|
|
83
|
|
84 void
|
|
85 __gnat_eh_personality (void)
|
|
86 {
|
|
87 abort ();
|
|
88 }
|
|
89
|
|
90 void
|
|
91 __gnat_rcheck_04 (void)
|
|
92 {
|
|
93 abort ();
|
|
94 }
|
|
95
|
|
96 void
|
|
97 __gnat_rcheck_10 (void)
|
|
98 {
|
|
99 abort ();
|
|
100 }
|
|
101
|
|
102 void
|
|
103 __gnat_rcheck_19 (void)
|
|
104 {
|
|
105 abort ();
|
|
106 }
|
|
107
|
|
108 void
|
|
109 __gnat_rcheck_20 (void)
|
|
110 {
|
|
111 abort ();
|
|
112 }
|
|
113
|
|
114 void
|
|
115 __gnat_rcheck_21 (void)
|
|
116 {
|
|
117 abort ();
|
|
118 }
|
|
119
|
|
120 void
|
|
121 __gnat_rcheck_30 (void)
|
|
122 {
|
|
123 abort ();
|
|
124 }
|
|
125
|
|
126 void
|
|
127 __gnat_rcheck_31 (void)
|
|
128 {
|
|
129 abort ();
|
|
130 }
|
|
131
|
|
132 void
|
|
133 __gnat_rcheck_32 (void)
|
|
134 {
|
|
135 abort ();
|
|
136 }
|
|
137 #endif
|
|
138 #ifdef __cplusplus
|
|
139 }
|
|
140 #endif
|