1 /**
2  * Compiler implementation of the
3  * $(LINK2 http://www.dlang.org, D programming language).
4  *
5  * Copyright:   Copyright (C) 1994-1998 by Symantec
6  *              Copyright (C) 2000-2020 by The D Language Foundation, All Rights Reserved
7  * Authors:     $(LINK2 http://www.digitalmars.com, Walter Bright)
8  * License:     $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
9  * Source:      https://github.com/dlang/dmd/blob/master/src/dmd/backend/_rtlsym.d
10  * Documentation: https://dlang.org/phobos/dmd_backend_rtlsym.html
11  */
12 
13 module dmd.backend.rtlsym;
14 
15 import dmd.backend.cc : Symbol;
16 
17 enum
18 {
19     RTLSYM_THROW,
20     RTLSYM_THROWC,
21     RTLSYM_THROWDWARF,
22     RTLSYM_MONITOR_HANDLER,
23     RTLSYM_MONITOR_PROLOG,
24     RTLSYM_MONITOR_EPILOG,
25     RTLSYM_DCOVER,
26     RTLSYM_DCOVER2,
27     RTLSYM_DASSERT,
28     RTLSYM_DASSERTP,
29     RTLSYM_DASSERT_MSG,
30     RTLSYM_DUNITTEST,
31     RTLSYM_DUNITTESTP,
32     RTLSYM_DUNITTEST_MSG,
33     RTLSYM_DARRAY,
34     RTLSYM_DARRAYP,
35     RTLSYM_DINVARIANT,
36     RTLSYM_MEMCPY,
37     RTLSYM_MEMSET8,
38     RTLSYM_MEMSET16,
39     RTLSYM_MEMSET32,
40     RTLSYM_MEMSET64,
41     RTLSYM_MEMSET128,
42     RTLSYM_MEMSET128ii,
43     RTLSYM_MEMSET80,
44     RTLSYM_MEMSET160,
45     RTLSYM_MEMSETFLOAT,
46     RTLSYM_MEMSETDOUBLE,
47     RTLSYM_MEMSETSIMD,
48     RTLSYM_MEMSETN,
49     RTLSYM_MODULO,
50     RTLSYM_MONITORENTER,
51     RTLSYM_MONITOREXIT,
52     RTLSYM_CRITICALENTER,
53     RTLSYM_CRITICALEXIT,
54     RTLSYM_SWITCH_STRING,       // unused
55     RTLSYM_SWITCH_USTRING,      // unused
56     RTLSYM_SWITCH_DSTRING,      // unused
57     RTLSYM_DSWITCHERR,
58     RTLSYM_DHIDDENFUNC,
59     RTLSYM_NEWCLASS,
60     RTLSYM_NEWTHROW,
61     RTLSYM_NEWARRAYT,
62     RTLSYM_NEWARRAYIT,
63     RTLSYM_NEWITEMT,
64     RTLSYM_NEWITEMIT,
65     RTLSYM_NEWARRAYMTX,
66     RTLSYM_NEWARRAYMITX,
67     RTLSYM_ARRAYLITERALTX,
68     RTLSYM_ASSOCARRAYLITERALTX,
69     RTLSYM_CALLFINALIZER,
70     RTLSYM_CALLINTERFACEFINALIZER,
71     RTLSYM_DELCLASS,
72     RTLSYM_DELINTERFACE,
73     RTLSYM_DELSTRUCT,
74     RTLSYM_ALLOCMEMORY,
75     RTLSYM_DELARRAYT,
76     RTLSYM_DELMEMORY,
77     RTLSYM_INTERFACE,
78     RTLSYM_DYNAMIC_CAST,
79     RTLSYM_INTERFACE_CAST,
80     RTLSYM_FATEXIT,
81     RTLSYM_ARRAYCATT,
82     RTLSYM_ARRAYCATNTX,
83     RTLSYM_ARRAYAPPENDT,
84     RTLSYM_ARRAYAPPENDCTX,
85     RTLSYM_ARRAYAPPENDCD,
86     RTLSYM_ARRAYAPPENDWD,
87     RTLSYM_ARRAYSETLENGTHT,
88     RTLSYM_ARRAYSETLENGTHIT,
89     RTLSYM_ARRAYCOPY,
90     RTLSYM_ARRAYASSIGN,
91     RTLSYM_ARRAYASSIGN_R,
92     RTLSYM_ARRAYASSIGN_L,
93     RTLSYM_ARRAYCTOR,
94     RTLSYM_ARRAYSETASSIGN,
95     RTLSYM_ARRAYSETCTOR,
96     RTLSYM_ARRAYCAST,           // unused
97     RTLSYM_ARRAYEQ,             // unused
98     RTLSYM_ARRAYEQ2,
99     RTLSYM_ARRAYCMP,            // unused
100     RTLSYM_ARRAYCMP2,           // unused
101     RTLSYM_ARRAYCMPCHAR,        // unused
102     RTLSYM_OBJ_EQ,              // unused
103     RTLSYM_OBJ_CMP,             // unused
104 
105     RTLSYM_EXCEPT_HANDLER2,
106     RTLSYM_EXCEPT_HANDLER3,
107     RTLSYM_CPP_HANDLER,
108     RTLSYM_D_HANDLER,
109     RTLSYM_D_LOCAL_UNWIND2,
110     RTLSYM_LOCAL_UNWIND2,
111     RTLSYM_UNWIND_RESUME,
112     RTLSYM_PERSONALITY,
113     RTLSYM_BEGIN_CATCH,
114     RTLSYM_CXA_BEGIN_CATCH,
115     RTLSYM_CXA_END_CATCH,
116 
117     RTLSYM_TLS_INDEX,
118     RTLSYM_TLS_ARRAY,
119     RTLSYM_AHSHIFT,
120 
121     RTLSYM_HDIFFN,
122     RTLSYM_HDIFFF,
123     RTLSYM_INTONLY,
124 
125     RTLSYM_EXCEPT_LIST,
126     RTLSYM_SETJMP3,
127     RTLSYM_LONGJMP,
128     RTLSYM_ALLOCA,
129     RTLSYM_CPP_LONGJMP,
130     RTLSYM_PTRCHK,
131     RTLSYM_CHKSTK,
132     RTLSYM_TRACE_PRO_N,
133     RTLSYM_TRACE_PRO_F,
134     RTLSYM_TRACE_EPI_N,
135     RTLSYM_TRACE_EPI_F,
136     RTLSYM_TRACE_CPRO,
137     RTLSYM_TRACE_CEPI,
138 
139     RTLSYM_TRACENEWCLASS,
140     RTLSYM_TRACENEWARRAYT,
141     RTLSYM_TRACENEWARRAYIT,
142     RTLSYM_TRACENEWARRAYMTX,
143     RTLSYM_TRACENEWARRAYMITX,
144     RTLSYM_TRACENEWITEMT,
145     RTLSYM_TRACENEWITEMIT,
146     RTLSYM_TRACECALLFINALIZER,
147     RTLSYM_TRACECALLINTERFACEFINALIZER,
148     RTLSYM_TRACEDELCLASS,
149     RTLSYM_TRACEDELINTERFACE,
150     RTLSYM_TRACEDELSTRUCT,
151     RTLSYM_TRACEDELARRAYT,
152     RTLSYM_TRACEDELMEMORY,
153     RTLSYM_TRACEARRAYLITERALTX,
154     RTLSYM_TRACEASSOCARRAYLITERALTX,
155     RTLSYM_TRACEARRAYCATT,
156     RTLSYM_TRACEARRAYCATNTX,
157     RTLSYM_TRACEARRAYAPPENDT,
158     RTLSYM_TRACEARRAYAPPENDCTX,
159     RTLSYM_TRACEARRAYAPPENDCD,
160     RTLSYM_TRACEARRAYAPPENDWD,
161     RTLSYM_TRACEARRAYSETLENGTHT,
162     RTLSYM_TRACEARRAYSETLENGTHIT,
163     RTLSYM_TRACEALLOCMEMORY,
164 
165     RTLSYM_C_ASSERT,
166     RTLSYM_C__ASSERT,
167     RTLSYM_C__ASSERT_FAIL,
168     RTLSYM_C__ASSERT_RTN,
169 
170     RTLSYM_MAX
171 }
172 
173 extern (C++):
174 
175 nothrow:
176 
177 Symbol *getRtlsym(int i);
178 Symbol *getRtlsymPersonality();