1 /**
2  * Compiler runtime function symbols
3  *
4  * Compiler implementation of the
5  * $(LINK2 https://www.dlang.org, D programming language).
6  *
7  * Copyright:   Copyright (C) 1994-1998 by Symantec
8  *              Copyright (C) 2000-2023 by The D Language Foundation, All Rights Reserved
9  * Authors:     $(LINK2 https://www.digitalmars.com, Walter Bright)
10  * License:     $(LINK2 https://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
11  * Source:      https://github.com/dlang/dmd/blob/master/src/dmd/backend/_rtlsym.d
12  * Documentation: https://dlang.org/phobos/dmd_backend_rtlsym.html
13  */
14 
15 module dmd.backend.rtlsym;
16 
17 import dmd.backend.cc : Symbol;
18 
19 enum RTLSYM
20 {
21     THROWC,
22     THROWDWARF,
23     MONITOR_HANDLER,
24     MONITOR_PROLOG,
25     MONITOR_EPILOG,
26     DCOVER2,
27     DASSERT,
28     DASSERTP,
29     DASSERT_MSG,
30     DUNITTEST,
31     DUNITTESTP,
32     DUNITTEST_MSG,
33     DARRAYP,
34     DARRAY_SLICEP,
35     DARRAY_INDEXP,
36     DINVARIANT,
37     MEMCPY,
38     MEMSET8,
39     MEMSET16,
40     MEMSET32,
41     MEMSET64,
42     MEMSET128,
43     MEMSET128ii,
44     MEMSET80,
45     MEMSET160,
46     MEMSETFLOAT,
47     MEMSETDOUBLE,
48     MEMSETSIMD,
49     MEMSETN,
50     NEWCLASS,
51     NEWTHROW,
52     NEWARRAYT,
53     NEWARRAYIT,
54     NEWITEMT,
55     NEWITEMIT,
56     NEWARRAYMTX,
57     NEWARRAYMITX,
58     ARRAYLITERALTX,
59     ASSOCARRAYLITERALTX,
60     CALLFINALIZER,
61     CALLINTERFACEFINALIZER,
62     ALLOCMEMORY,
63     DYNAMIC_CAST,
64     INTERFACE_CAST,
65     ARRAYCATT,
66     ARRAYCATNTX,
67     ARRAYAPPENDT,
68     ARRAYAPPENDCTX,
69     ARRAYAPPENDCD,
70     ARRAYAPPENDWD,
71     ARRAYSETLENGTHT,
72     ARRAYSETLENGTHIT,
73     ARRAYCOPY,
74     ARRAYASSIGN,
75     ARRAYASSIGN_R,
76     ARRAYASSIGN_L,
77     ARRAYSETASSIGN,
78     ARRAYEQ2,
79 
80     EXCEPT_HANDLER3,
81     CPP_HANDLER,
82     D_HANDLER,
83     D_LOCAL_UNWIND2,
84     LOCAL_UNWIND2,
85     UNWIND_RESUME,
86     PERSONALITY,
87     BEGIN_CATCH,
88     CXA_BEGIN_CATCH,
89     CXA_END_CATCH,
90 
91     TLS_INDEX,
92     TLS_ARRAY,
93     AHSHIFT,
94 
95     HDIFFN,
96     HDIFFF,
97     INTONLY,
98 
99     EXCEPT_LIST,
100     SETJMP3,
101     LONGJMP,
102     ALLOCA,
103     CPP_LONGJMP,
104     PTRCHK,
105     CHKSTK,
106     TRACE_PRO_N,
107     TRACE_PRO_F,
108     TRACE_EPI_N,
109     TRACE_EPI_F,
110 
111     TRACENEWCLASS,
112     TRACENEWARRAYT,
113     TRACENEWARRAYIT,
114     TRACENEWARRAYMTX,
115     TRACENEWARRAYMITX,
116     TRACENEWITEMT,
117     TRACENEWITEMIT,
118     TRACECALLFINALIZER,
119     TRACECALLINTERFACEFINALIZER,
120     TRACEARRAYLITERALTX,
121     TRACEASSOCARRAYLITERALTX,
122     TRACEARRAYCATT,
123     TRACEARRAYCATNTX,
124     TRACEARRAYAPPENDT,
125     TRACEARRAYAPPENDCTX,
126     TRACEARRAYAPPENDCD,
127     TRACEARRAYAPPENDWD,
128     TRACEARRAYSETLENGTHT,
129     TRACEARRAYSETLENGTHIT,
130     TRACEALLOCMEMORY,
131 
132     C_ASSERT,
133     C__ASSERT,
134     C__ASSERT_FAIL,
135     C__ASSERT_RTN,
136 
137     CXA_ATEXIT
138 }
139 
140 extern (C++):
141 
142 nothrow:
143 @safe:
144 
145 Symbol *getRtlsym(RTLSYM i);
146 Symbol *getRtlsymPersonality();