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