1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License, Version 1.0 only
6  * (the "License").  You may not use this file except in compliance
7  * with the License.
8  *
9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10  * or http://www.opensolaris.org/os/licensing.
11  * See the License for the specific language governing permissions
12  * and limitations under the License.
13  *
14  * When distributing Covered Code, include this CDDL HEADER in each
15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16  * If applicable, add the following below this CDDL HEADER, with the
17  * fields enclosed by brackets "[]" replaced with your own identifying
18  * information: Portions Copyright [yyyy] [name of copyright owner]
19  *
20  * CDDL HEADER END
21  */
22 /*
23  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
24  * Use is subject to license terms.
25  */
26 
27  /*
28   * Copyright (c) 2011, Joyent, Inc. All rights reserved.
29   * Copyright (c) 2012 by Delphix. All rights reserved.
30   */
31 
32 #ifndef   _DT_ERRTAGS_H
33 #define   _DT_ERRTAGS_H
34 
35 #ifdef    __cplusplus
36 extern "C" {
37 #endif
38 
39 /*
40  * This enum definition is used to define a set of error tags associated with
41  * the D compiler's various error conditions.  The shell script mkerrtags.sh is
42  * used to parse this file and create a corresponding dt_errtags.c source file.
43  * If you do something other than add a new error tag here, you may need to
44  * update the mkerrtags shell script as it is based upon simple regexps.
45  */
46 typedef enum {
47           D_UNKNOWN,                              /* unknown D compiler error */
48           D_SYNTAX,                     /* syntax error in input stream */
49           D_EMPTY,                      /* empty translation unit */
50           D_TYPE_ERR,                             /* type definition missing */
51           D_TYPE_MEMBER,                          /* type member not found */
52           D_ASRELO,                     /* relocation remains against symbol */
53           D_CG_EXPR,                              /* tracing function called from expr */
54           D_CG_DYN,                     /* expression returns dynamic result */
55           D_ATTR_MIN,                             /* attributes less than amin setting */
56           D_ID_OFLOW,                             /* identifier space overflow */
57           D_PDESC_ZERO,                           /* probedesc matches zero probes */
58           D_PDESC_INVAL,                          /* probedesc is not valid */
59           D_PRED_SCALAR,                          /* predicate must be of scalar type */
60           D_FUNC_IDENT,                           /* function designator is not ident */
61           D_FUNC_UNDEF,                           /* function ident is not defined */
62           D_FUNC_IDKIND,                          /* function ident is of wrong idkind */
63           D_OFFSETOF_TYPE,              /* offsetof arg is not sou type */
64           D_OFFSETOF_BITFIELD,                    /* offsetof applied to field member */
65           D_SIZEOF_TYPE,                          /* invalid sizeof type */
66           D_SIZEOF_BITFIELD,            /* sizeof applied to field member */
67           D_STRINGOF_TYPE,              /* invalid stringof type */
68           D_OP_IDENT,                             /* operand must be an identifier */
69           D_OP_INT,                     /* operand must be integral type */
70           D_OP_SCALAR,                            /* operand must be scalar type */
71           D_OP_ARITH,                             /* operand must be arithmetic type */
72           D_OP_WRITE,                             /* operand must be writable variable */
73           D_OP_LVAL,                              /* operand must be lvalue */
74           D_OP_INCOMPAT,                          /* operand types are not compatible */
75           D_OP_VFPTR,                             /* operand cannot be void or func ptr */
76           D_OP_ARRFUN,                            /* operand cannot be array or func */
77           D_OP_PTR,                     /* operand must be a pointer */
78           D_OP_SOU,                     /* operand must be struct or union */
79           D_OP_INCOMPLETE,              /* operand is an incomplete type */
80           D_OP_DYN,                     /* operand cannot be of dynamic type */
81           D_OP_ACT,                     /* operand cannot be action */
82           D_AGG_REDEF,                            /* aggregation cannot be redefined */
83           D_AGG_FUNC,                             /* aggregating function required */
84           D_AGG_MDIM,                             /* aggregation used as multi-dim arr */
85           D_ARR_BADREF,                           /* access non-array using tuple */
86           D_ARR_LOCAL,                            /* cannot define local assc array */
87           D_DIV_ZERO,                             /* division by zero detected */
88           D_DEREF_NONPTR,                         /* dereference non-pointer type */
89           D_DEREF_VOID,                           /* dereference void pointer */
90           D_DEREF_FUNC,                           /* dereference function pointer */
91           D_ADDROF_LVAL,                          /* unary & applied to non-lvalue */
92           D_ADDROF_VAR,                           /* unary & applied to variable */
93           D_ADDROF_BITFIELD,            /* unary & applied to field member */
94           D_XLATE_REDECL,                         /* translator redeclared */
95           D_XLATE_NOCONV,                         /* no conversion for member defined */
96           D_XLATE_NONE,                           /* no translator for type combo */
97           D_XLATE_SOU,                            /* dst must be struct or union type */
98           D_XLATE_INCOMPAT,             /* translator member type incompat */
99           D_XLATE_MEMB,                           /* translator member is not valid */
100           D_CAST_INVAL,                           /* invalid cast expression */
101           D_PRAGERR,                              /* #pragma error message */
102           D_PRAGCTL_INVAL,              /* invalid control directive */
103           D_PRAGMA_INVAL,                         /* invalid compiler pragma */
104           D_PRAGMA_UNUSED,              /* unused compiler pragma */
105           D_PRAGMA_MALFORM,             /* malformed #pragma argument list */
106           D_PRAGMA_OPTSET,              /* failed to set #pragma option */
107           D_PRAGMA_SCOPE,                         /* #pragma identifier scope error */
108           D_PRAGMA_DEPEND,              /* #pragma dependency not satisfied */
109           D_MACRO_UNDEF,                          /* macro parameter is not defined */
110           D_MACRO_OFLOW,                          /* macro parameter integer overflow */
111           D_MACRO_UNUSED,                         /* macro parameter is never used */
112           D_INT_OFLOW,                            /* integer constant overflow */
113           D_INT_DIGIT,                            /* integer digit is not valid */
114           D_STR_NL,                     /* newline in string literal */
115           D_CHR_NL,                     /* newline in character constant */
116           D_CHR_NULL,                             /* empty character constant */
117           D_CHR_OFLOW,                            /* character constant is too long */
118           D_IDENT_BADREF,                         /* identifier expected type mismatch */
119           D_IDENT_UNDEF,                          /* identifier is not known/defined */
120           D_IDENT_AMBIG,                          /* identifier is ambiguous (var/enum) */
121           D_SYM_BADREF,                           /* kernel/user symbol ref mismatch */
122           D_SYM_NOTYPES,                          /* no CTF data available for sym ref */
123           D_SYM_MODEL,                            /* module/program data model mismatch */
124           D_VAR_UNDEF,                            /* reference to undefined variable */
125           D_VAR_UNSUP,                            /* unsupported variable specification */
126           D_PROTO_LEN,                            /* prototype length mismatch */
127           D_PROTO_ARG,                            /* prototype argument mismatch */
128           D_ARGS_MULTI,                           /* description matches unstable set */
129           D_ARGS_XLATOR,                          /* no args[] translator defined */
130           D_ARGS_NONE,                            /* no args[] available */
131           D_ARGS_TYPE,                            /* invalid args[] type */
132           D_ARGS_IDX,                             /* invalid args[] index */
133           D_REGS_IDX,                             /* invalid regs[] index */
134           D_KEY_TYPE,                             /* invalid agg or array key type */
135           D_PRINTF_DYN_PROTO,           /* dynamic size argument missing */
136           D_PRINTF_DYN_TYPE,            /* dynamic size type mismatch */
137           D_PRINTF_AGG_CONV,            /* improper use of %@ conversion */
138           D_PRINTF_ARG_PROTO,           /* conversion missing value argument */
139           D_PRINTF_ARG_TYPE,            /* conversion arg has wrong type */
140           D_PRINTF_ARG_EXTRA,           /* extra arguments specified */
141           D_PRINTF_ARG_FMT,             /* format string is not a constant */
142           D_PRINTF_FMT_EMPTY,           /* format string is empty */
143           D_DECL_CHARATTR,              /* bad attributes for char decl */
144           D_DECL_VOIDATTR,              /* bad attributes for void decl */
145           D_DECL_SIGNINT,                         /* sign/unsign with non-integer decl */
146           D_DECL_LONGINT,                         /* long with non-arithmetic decl */
147           D_DECL_IDENT,                           /* old-style declaration or bad type */
148           D_DECL_CLASS,                           /* more than one storage class given */
149           D_DECL_BADCLASS,              /* decl class not supported in D */
150           D_DECL_PARMCLASS,             /* invalid class for parameter type */
151           D_DECL_COMBO,                           /* bad decl specifier combination */
152           D_DECL_ARRSUB,                          /* const int required for array size */
153           D_DECL_ARRNULL,                         /* array decl requires dim or tuple */
154           D_DECL_ARRBIG,                          /* array size too big */
155           D_DECL_IDRED,                           /* decl identifier redeclared */
156           D_DECL_TYPERED,                         /* decl type redeclared */
157           D_DECL_MNAME,                           /* member name missing */
158           D_DECL_SCOPE,                           /* scoping operator used in decl */
159           D_DECL_BFCONST,                         /* bit-field requires const size expr */
160           D_DECL_BFSIZE,                          /* bit-field size too big for type */
161           D_DECL_BFTYPE,                          /* bit-field type is not valid */
162           D_DECL_ENCONST,                         /* enum tag requires const size expr */
163           D_DECL_ENOFLOW,                         /* enumerator value overflows INT_MAX */
164           D_DECL_USELESS,                         /* useless external declaration */
165           D_DECL_LOCASSC,                         /* attempt to decl local assc array */
166           D_DECL_VOIDOBJ,                         /* attempt to decl void object */
167           D_DECL_DYNOBJ,                          /* attempt to decl dynamic object */
168           D_DECL_INCOMPLETE,            /* declaration uses incomplete type */
169           D_DECL_PROTO_VARARGS,                   /* varargs not allowed in prototype */
170           D_DECL_PROTO_TYPE,            /* type not allowed in prototype */
171           D_DECL_PROTO_VOID,            /* void must be sole parameter */
172           D_DECL_PROTO_NAME,            /* void parameter may not have a name */
173           D_DECL_PROTO_FORM,            /* parameter name has no formal */
174           D_COMM_COMM,                            /* commit() after commit() */
175           D_COMM_DREC,                            /* commit() after data action */
176           D_SPEC_SPEC,                            /* speculate() after speculate() */
177           D_SPEC_COMM,                            /* speculate() after commit() */
178           D_SPEC_DREC,                            /* speculate() after data action */
179           D_AGG_COMM,                             /* aggregating act after commit() */
180           D_AGG_SPEC,                             /* aggregating act after speculate() */
181           D_AGG_NULL,                             /* aggregation stmt has null effect */
182           D_AGG_SCALAR,                           /* aggregating function needs scalar */
183           D_ACT_SPEC,                             /* destructive action after speculate */
184           D_EXIT_SPEC,                            /* exit() action after speculate */
185           D_DREC_COMM,                            /* data action after commit() */
186           D_PRINTA_PROTO,                         /* printa() prototype mismatch */
187           D_PRINTA_AGGARG,              /* aggregation arg type mismatch */
188           D_PRINTA_AGGBAD,              /* printa() aggregation not defined */
189           D_PRINTA_AGGKEY,              /* printa() aggregation key mismatch */
190           D_PRINTA_AGGPROTO,            /* printa() aggregation mismatch */
191           D_TRACE_VOID,                           /* trace() argument has void type */
192           D_TRACE_DYN,                            /* trace() argument has dynamic type */
193           D_TRACE_AGG,                            /* trace() argument is an aggregation */
194           D_PRINT_VOID,                           /* print() argument has void type */
195           D_PRINT_DYN,                            /* print() argument has dynamic type */
196           D_PRINT_AGG,                            /* print() argument is an aggregation */
197           D_TRACEMEM_ADDR,              /* tracemem() address bad type */
198           D_TRACEMEM_SIZE,              /* tracemem() size bad type */
199           D_TRACEMEM_ARGS,              /* tracemem() illegal number of args */
200           D_TRACEMEM_DYNSIZE,           /* tracemem() dynamic size bad type */
201           D_STACK_PROTO,                          /* stack() prototype mismatch */
202           D_STACK_SIZE,                           /* stack() size argument bad type */
203           D_USTACK_FRAMES,              /* ustack() frames arg bad type */
204           D_USTACK_STRSIZE,             /* ustack() strsize arg bad type */
205           D_USTACK_PROTO,                         /* ustack() prototype mismatch */
206           D_LQUANT_BASETYPE,            /* lquantize() bad base type */
207           D_LQUANT_BASEVAL,             /* lquantize() bad base value */
208           D_LQUANT_LIMTYPE,             /* lquantize() bad limit type */
209           D_LQUANT_LIMVAL,              /* lquantize() bad limit value */
210           D_LQUANT_MISMATCH,            /* lquantize() limit < base */
211           D_LQUANT_STEPTYPE,            /* lquantize() bad step type */
212           D_LQUANT_STEPVAL,             /* lquantize() bad step value */
213           D_LQUANT_STEPLARGE,           /* lquantize() step too large */
214           D_LQUANT_STEPSMALL,           /* lquantize() step too small */
215           D_QUANT_PROTO,                          /* quantize() prototype mismatch */
216           D_PROC_OFF,                             /* byte offset exceeds function size */
217           D_PROC_ALIGN,                           /* byte offset has invalid alignment */
218           D_PROC_NAME,                            /* invalid process probe name */
219           D_PROC_GRAB,                            /* failed to grab process */
220           D_PROC_DYN,                             /* process is not dynamically linked */
221           D_PROC_LIB,                             /* invalid process library name */
222           D_PROC_FUNC,                            /* no such function in process */
223           D_PROC_CREATEFAIL,            /* pid probe creation failed */
224           D_PROC_NODEV,                           /* fasttrap device is not installed */
225           D_PROC_BADPID,                          /* user probe pid invalid */
226           D_PROC_BADPROV,                         /* user probe provider invalid */
227           D_PROC_USDT,                            /* problem initializing usdt */
228           D_CLEAR_PROTO,                          /* clear() prototype mismatch */
229           D_CLEAR_AGGARG,                         /* aggregation arg type mismatch */
230           D_CLEAR_AGGBAD,                         /* clear() aggregation not defined */
231           D_NORMALIZE_PROTO,            /* normalize() prototype mismatch */
232           D_NORMALIZE_SCALAR,           /* normalize() value must be scalar */
233           D_NORMALIZE_AGGARG,           /* aggregation arg type mismatch */
234           D_NORMALIZE_AGGBAD,           /* normalize() aggregation not def. */
235           D_TRUNC_PROTO,                          /* trunc() prototype mismatch */
236           D_TRUNC_SCALAR,                         /* trunc() value must be scalar */
237           D_TRUNC_AGGARG,                         /* aggregation arg type mismatch */
238           D_TRUNC_AGGBAD,                         /* trunc() aggregation not def. */
239           D_PROV_BADNAME,                         /* invalid provider name */
240           D_PROV_INCOMPAT,              /* provider/probe interface mismatch */
241           D_PROV_PRDUP,                           /* duplicate probe declaration */
242           D_PROV_PRARGLEN,              /* probe argument list too long */
243           D_PROV_PRXLATOR,              /* probe argument translator missing */
244           D_FREOPEN_INVALID,            /* frename() filename is invalid */
245           D_LQUANT_MATCHBASE,           /* lquantize() mismatch on base */
246           D_LQUANT_MATCHLIM,            /* lquantize() mismatch on limit */
247           D_LQUANT_MATCHSTEP,           /* lquantize() mismatch on step */
248           D_LLQUANT_FACTORTYPE,                   /* llquantize() bad magnitude type */
249           D_LLQUANT_FACTORVAL,                    /* llquantize() bad magnitude value */
250           D_LLQUANT_FACTORMATCH,                  /* llquantize() mismatch on magnitude */
251           D_LLQUANT_LOWTYPE,            /* llquantize() bad low mag type */
252           D_LLQUANT_LOWVAL,             /* llquantize() bad low mag value */
253           D_LLQUANT_LOWMATCH,           /* llquantize() mismatch on low mag */
254           D_LLQUANT_HIGHTYPE,           /* llquantize() bad high mag type */
255           D_LLQUANT_HIGHVAL,            /* llquantize() bad high mag value */
256           D_LLQUANT_HIGHMATCH,                    /* llquantize() mismatch on high mag */
257           D_LLQUANT_NSTEPTYPE,                    /* llquantize() bad # steps type */
258           D_LLQUANT_NSTEPVAL,           /* llquantize() bad # steps value */
259           D_LLQUANT_NSTEPMATCH,                   /* llquantize() mismatch on # steps */
260           D_LLQUANT_MAGRANGE,           /* llquantize() bad magnitude range */
261           D_LLQUANT_FACTORNSTEPS,                 /* llquantize() # steps < factor */
262           D_LLQUANT_FACTOREVEN,                   /* llquantize() bad # steps/factor */
263           D_LLQUANT_FACTORSMALL,                  /* llquantize() magnitude too small */
264           D_LLQUANT_MAGTOOBIG,                    /* llquantize() high mag too large */
265           D_NOREG,                      /* no available internal registers */
266           D_PRINTM_ADDR,                          /* printm() memref bad type */
267           D_PRINTM_SIZE,                          /* printm() size bad type */
268 } dt_errtag_t;
269 
270 extern const char *dt_errtag(dt_errtag_t);
271 
272 #ifdef    __cplusplus
273 }
274 #endif
275 
276 #endif    /* _DT_ERRTAGS_H */
277