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_NEWARRAYMT,
66     RTLSYM_NEWARRAYMIT,
67     RTLSYM_NEWARRAYMTX,
68     RTLSYM_NEWARRAYMITX,
69     RTLSYM_ARRAYLITERALT,
70     RTLSYM_ARRAYLITERALTX,
71     RTLSYM_ASSOCARRAYLITERALT,
72     RTLSYM_ASSOCARRAYLITERALTX,
73     RTLSYM_CALLFINALIZER,
74     RTLSYM_CALLINTERFACEFINALIZER,
75     RTLSYM_DELCLASS,
76     RTLSYM_DELINTERFACE,
77     RTLSYM_DELSTRUCT,
78     RTLSYM_ALLOCMEMORY,
79     RTLSYM_DELARRAY,
80     RTLSYM_DELARRAYT,
81     RTLSYM_DELMEMORY,
82     RTLSYM_INTERFACE,
83     RTLSYM_DYNAMIC_CAST,
84     RTLSYM_INTERFACE_CAST,
85     RTLSYM_FATEXIT,
86     RTLSYM_ARRAYCATT,
87     RTLSYM_ARRAYCATNT,
88     RTLSYM_ARRAYCATNTX,
89     RTLSYM_ARRAYAPPENDT,
90     RTLSYM_ARRAYAPPENDCT,
91     RTLSYM_ARRAYAPPENDCTX,
92     RTLSYM_ARRAYAPPENDCD,
93     RTLSYM_ARRAYAPPENDWD,
94     RTLSYM_ARRAYSETLENGTHT,
95     RTLSYM_ARRAYSETLENGTHIT,
96     RTLSYM_ARRAYCOPY,
97     RTLSYM_ARRAYASSIGN,
98     RTLSYM_ARRAYASSIGN_R,
99     RTLSYM_ARRAYASSIGN_L,
100     RTLSYM_ARRAYCTOR,
101     RTLSYM_ARRAYSETASSIGN,
102     RTLSYM_ARRAYSETCTOR,
103     RTLSYM_ARRAYCAST,           // unused
104     RTLSYM_ARRAYEQ,             // unused
105     RTLSYM_ARRAYEQ2,
106     RTLSYM_ARRAYCMP,            // unused
107     RTLSYM_ARRAYCMP2,           // unused
108     RTLSYM_ARRAYCMPCHAR,        // unused
109     RTLSYM_OBJ_EQ,              // unused
110     RTLSYM_OBJ_CMP,             // unused
111 
112     RTLSYM_EXCEPT_HANDLER2,
113     RTLSYM_EXCEPT_HANDLER3,
114     RTLSYM_CPP_HANDLER,
115     RTLSYM_D_HANDLER,
116     RTLSYM_D_LOCAL_UNWIND2,
117     RTLSYM_LOCAL_UNWIND2,
118     RTLSYM_UNWIND_RESUME,
119     RTLSYM_PERSONALITY,
120     RTLSYM_BEGIN_CATCH,
121     RTLSYM_CXA_BEGIN_CATCH,
122     RTLSYM_CXA_END_CATCH,
123 
124     RTLSYM_TLS_INDEX,
125     RTLSYM_TLS_ARRAY,
126     RTLSYM_AHSHIFT,
127 
128     RTLSYM_HDIFFN,
129     RTLSYM_HDIFFF,
130     RTLSYM_INTONLY,
131 
132     RTLSYM_EXCEPT_LIST,
133     RTLSYM_SETJMP3,
134     RTLSYM_LONGJMP,
135     RTLSYM_ALLOCA,
136     RTLSYM_CPP_LONGJMP,
137     RTLSYM_PTRCHK,
138     RTLSYM_CHKSTK,
139     RTLSYM_TRACE_PRO_N,
140     RTLSYM_TRACE_PRO_F,
141     RTLSYM_TRACE_EPI_N,
142     RTLSYM_TRACE_EPI_F,
143     RTLSYM_TRACE_CPRO,
144     RTLSYM_TRACE_CEPI,
145 
146     RTLSYM_TRACENEWCLASS,
147     RTLSYM_TRACENEWARRAYT,
148     RTLSYM_TRACENEWARRAYIT,
149     RTLSYM_TRACENEWARRAYMTX,
150     RTLSYM_TRACENEWARRAYMITX,
151     RTLSYM_TRACENEWITEMT,
152     RTLSYM_TRACENEWITEMIT,
153     RTLSYM_TRACECALLFINALIZER,
154     RTLSYM_TRACECALLINTERFACEFINALIZER,
155     RTLSYM_TRACEDELCLASS,
156     RTLSYM_TRACEDELINTERFACE,
157     RTLSYM_TRACEDELSTRUCT,
158     RTLSYM_TRACEDELARRAYT,
159     RTLSYM_TRACEDELMEMORY,
160     RTLSYM_TRACEARRAYLITERALTX,
161     RTLSYM_TRACEASSOCARRAYLITERALTX,
162     RTLSYM_TRACEARRAYCATT,
163     RTLSYM_TRACEARRAYCATNTX,
164     RTLSYM_TRACEARRAYAPPENDT,
165     RTLSYM_TRACEARRAYAPPENDCTX,
166     RTLSYM_TRACEARRAYAPPENDCD,
167     RTLSYM_TRACEARRAYAPPENDWD,
168     RTLSYM_TRACEARRAYSETLENGTHT,
169     RTLSYM_TRACEARRAYSETLENGTHIT,
170     RTLSYM_TRACEALLOCMEMORY,
171 
172     RTLSYM_C_ASSERT,
173     RTLSYM_C__ASSERT,
174     RTLSYM_C__ASSERT_FAIL,
175     RTLSYM_C__ASSERT_RTN,
176 
177     RTLSYM_MAX
178 }
179 
180 extern (C++):
181 
182 nothrow:
183 
184 Symbol *getRtlsym(int i);
185 Symbol *getRtlsymPersonality();