New Memory Allocation functions
[fw/sdcc] / support / Util / SDCCerr.h
1 /*
2 ===============================================================================
3 SDCCERR - SDCC Standard error handler
4
5
6 ===============================================================================
7 */
8
9 #if !defined(__SDCCERR_H)
10
11 #define __SDCCERR_H
12
13 #include <stdio.h>
14 #include <stdarg.h>
15
16 /* ERROR MEssage Definition */
17
18 #define  E_DUPLICATE       0         /* Duplicate variable   */
19 #define  E_SYNTAX_ERROR    1         /* Syntax Error         */
20 #define  E_CONST_EXPECTED  2         /* constant expected    */
21 #define  E_OUT_OF_MEM      3         /* malloc failed        */
22 #define  E_FILE_OPEN_ERR   4         /* File open failed     */
23 #define  E_INVALID_OCLASS  5         /* output class invalid */
24 #define  E_CANNOT_ALLOC    6         /* cannot allocate space*/
25 #define  E_OLD_STYLE       7         /* old style C ! allowed*/
26 #define  E_STACK_OUT       8         /* v r out of stack     */
27 #define  E_INTERNAL_ERROR   9         /* unable to alloc tvar */
28 #define  E_LVALUE_REQUIRED 10        /* lvalue required      */
29 #define  E_TMPFILE_FAILED  11        /* tmpfile creation failed */
30 #define  E_FUNCTION_EXPECTED  12     /* function expected    */
31 #define  E_USING_ERROR     13        /* using in error       */
32 #define  E_SFR_INIT        14        /* init error for sbit  */
33 #define  E_INIT_IGNORED    15        /* initialiser ignored  */
34 #define  E_AUTO_ASSUMED    16        /* sclass auto assumed  */
35 #define  E_AUTO_ABSA       17        /* abs addr for auto var*/
36 #define  E_INIT_WRONG      18        /* initializer type !=  */
37 #define  E_FUNC_REDEF      19        /* func name redefined  */
38 #define  E_ID_UNDEF        20        /* identifer undefined  */
39 #define  W_STACK_OVERFLOW  21        /* stack overflow       */
40 #define  E_NEED_ARRAY_PTR  22        /* array or pointer reqd*/
41 #define  E_IDX_NOT_INT     23        /* index not an integer */
42 #define  E_ARRAY_BOUND     24        /* array limit exceeded */
43 #define  E_STRUCT_UNION    25        /* struct,union expected*/
44 #define  E_NOT_MEMBER      26        /* !struct/union member */
45 #define  E_PTR_REQD        27        /* pointer required     */
46 #define  E_UNARY_OP        28        /* unary operator bad op*/
47 #define  E_CONV_ERR        29        /* conversion error     */
48 #define  E_INT_REQD        30        /* bit field must be int*/
49 #define  E_BITFLD_SIZE     31        /* bit field size > 16  */
50 #define  E_TRUNCATION      32        /* high order trucation */
51 #define  E_CODE_WRITE      33        /* trying 2 write to code */
52 #define  E_LVALUE_CONST    34        /* lvalue is a const   */   
53 #define  E_ILLEGAL_ADDR    35        /* address of bit      */
54 #define  E_CAST_ILLEGAL    36        /* cast illegal        */
55 #define  E_MULT_INTEGRAL   37        /* mult opernd must b integral */
56 #define  E_ARG_ERROR       38        /* argument count error*/
57 #define  E_ARG_COUNT       39        /* func expecting more */
58 #define  E_FUNC_EXPECTED   40        /* func name expected  */
59 #define  E_PLUS_INVALID    41        /* plus invalid        */
60 #define  E_PTR_PLUS_PTR    42        /* pointer + pointer   */
61 #define  E_SHIFT_OP_INVALID 43       /* shft op op invalid  */
62 #define  E_COMPARE_OP      44        /* compare operand     */
63 #define  E_BITWISE_OP      45        /* bit op invalid op   */
64 #define  E_ANDOR_OP        46        /* && || op invalid    */
65 #define  E_TYPE_MISMATCH   47        /* type mismatch       */
66 #define  E_AGGR_ASSIGN     48        /* aggr assign         */
67 #define  E_ARRAY_DIRECT    49        /* array indexing in   */
68 #define  E_BIT_ARRAY       50        /* bit array not allowed  */
69 #define  E_DUPLICATE_TYPEDEF  51     /* typedef name duplicate */
70 #define  E_ARG_TYPE        52        /* arg type mismatch   */
71 #define  E_RET_VALUE       53        /* return value mismatch  */
72 #define  E_FUNC_AGGR       54        /* function returing aggr */
73 #define  E_FUNC_DEF        55        /* ANSI Style def neede   */
74 #define  E_DUPLICATE_LABEL 56        /* duplicate label name   */
75 #define  E_LABEL_UNDEF     57        /* undefined label used   */
76 #define  E_FUNC_VOID       58        /* void func ret value    */
77 #define  E_VOID_FUNC       59        /* func must return value */
78 #define  E_RETURN_MISMATCH 60        /* return value mismatch  */
79 #define  E_CASE_CONTEXT    61        /* case stmnt without switch */
80 #define  E_CASE_CONSTANT   62        /* case expression ! const*/
81 #define  E_BREAK_CONTEXT   63        /* break statement invalid*/
82 #define  E_SWITCH_AGGR     64        /* non integral for switch*/
83 #define  E_FUNC_BODY       65        /* func has body already  */
84 #define  E_UNKNOWN_SIZE    66        /* variable has unknown size */
85 #define  E_AUTO_AGGR_INIT  67        /* auto aggregates no init   */
86 #define  E_INIT_COUNT      68        /* too many initializers  */
87 #define  E_INIT_STRUCT     69        /* struct init wrong      */
88 #define  E_INIT_NON_ADDR   70        /* non address xpr for init  */
89 #define  E_INT_DEFINED     71        /* interrupt already over */
90 #define  E_INT_ARGS        72        /* interrupt rtn cannot have args  */
91 #define  E_INCLUDE_MISSING 73        /* compiler include missing        */
92 #define  E_NO_MAIN         74        /* main function undefined */
93 #define  E_EXTERN_INIT     75        /* extern variable initialised     */
94 #define  E_PRE_PROC_FAILED 76        /* preprocessor failed             */
95 #define  E_DUP_FAILED      77        /* file DUP failed             */
96 #define  E_INCOMPAT_CAST   78        /* incompatible pointer casting */
97 #define  E_LOOP_ELIMINATE  79        /* loop eliminated                       */          
98 #define  W_NO_SIDE_EFFECTS  80       /* expression has no side effects */
99 #define  E_CONST_TOO_LARGE  81       /* constant out of range             */
100 #define  W_BAD_COMPARE      82       /* bad comparison                            */
101 #define  E_TERMINATING      83       /* compiler terminating                      */
102 #define  W_LOCAL_NOINIT     84       /* local reference before assignment */
103 #define  W_NO_REFERENCE     85          /* no reference to local variable       */
104 #define  E_OP_UNKNOWN_SIZE  86          /* unknown size for operand                     */
105 #define  W_LONG_UNSUPPORTED 87          /* 'long' not supported yet                     */
106 #define  W_LITERAL_GENERIC  88          /* literal being cast to generic pointer */
107 #define  E_SFR_ADDR_RANGE   89          /* sfr address out of range                     */
108 #define  E_BITVAR_STORAGE   90          /* storage given for 'bit' variable     */
109 #define  W_EXTERN_MISMATCH  91          /* extern declaration mismatches    */
110 #define  E_NONRENT_ARGS     92          /* fptr non reentrant has args          */
111 #define  W_DOUBLE_UNSUPPORTED 93        /* 'double' not supported yet                   */
112 #define  W_IF_NEVER_TRUE    94          /* if always false                                      */
113 #define  W_FUNC_NO_RETURN   95          /* no return statement found            */
114 #define  W_PRE_PROC_WARNING 96          /* preprocessor generated warning   */
115 #define  W_STRUCT_AS_ARG    97          /* structure passed as argument         */
116 #define  E_PREV_DEF_CONFLICT 98         /* previous definition conflicts with current */
117 #define  E_CODE_NO_INIT     99          /* vars in code space must have initializer */
118 #define  E_OPS_INTEGRAL    100          /* operans must be integral for certian assignments */
119 #define  E_TOO_MANY_PARMS  101          /* too many parameters */
120 #define  E_TO_FEW_PARMS    102          /* to few parameters   */
121 #define  E_FUNC_NO_CODE    103          /* fatalError          */
122 #define  E_TYPE_MISMATCH_PARM 104       /* type mismatch for parameter */
123 #define  E_INVALID_FLOAT_CONST 105      /* invalid floating point literal string */
124 #define  E_INVALID_OP      106          /* invalid operand for some operation */
125 #define  E_SWITCH_NON_INTEGER 107       /* switch value not integer */
126 #define  E_CASE_NON_INTEGER 108         /* case value not integer */
127 #define  E_FUNC_TOO_LARGE   109         /* function too large     */
128 #define  W_CONTROL_FLOW     110         /* control flow changed due to optimization */
129 #define  W_PTR_TYPE_INVALID 111         /* invalid type specifier for pointer       */
130 #define  W_IMPLICIT_FUNC    112         /* function declared implicitly             */
131 #define  E_CONTINUE         113         /* more than one line                       */
132 #define  W_TOOMANY_SPILS    114         /* too many spils occured                   */
133 #define  W_UNKNOWN_PRAGMA   115         /* #pragma directive unsupported            */
134 #define  W_SHIFT_CHANGED    116         /* shift changed to zero                    */
135 #define  W_UNKNOWN_OPTION   117         /* don't know the option                    */
136 #define  W_UNSUPP_OPTION    118         /* processor reset has been redifned        */
137 #define  W_UNKNOWN_FEXT     119         /* unknown file extension                   */
138 #define  W_TOO_MANY_SRC     120         /* can only compile one .c file at a time   */
139 #define  I_CYCLOMATIC       121         /* information message                      */
140 #define  E_DIVIDE_BY_ZERO   122         /* / 0 */
141 #define  E_FUNC_BIT         123         /* function cannot return bit */
142 #define  E_CAST_ZERO        124         /* casting to from size zero  */
143 #define  W_CONST_RANGE      125         /* constant too large         */
144 #define  W_CODE_UNREACH     126         /* unreachable code           */
145 #define  W_NONPTR2_GENPTR   127         /* non pointer cast to generic pointer */
146 #define  W_POSSBUG          128         /* possible code generation error */
147 #define  W_PTR_ASSIGN       129         /* incampatible pointer assignment */
148 #define  W_UNKNOWN_MODEL    130         /* Unknown memory model */
149 #define  E_UNKNOWN_TARGET   131         /* target not defined   */
150 #define  W_INDIR_BANKED     132         /* Indirect call to a banked fun */
151 #define  W_UNSUPPORTED_MODEL 133        /* Unsupported model, ignored */
152 #define  W_BANKED_WITH_NONBANKED 134    /* banked and nonbanked attributes mixed */
153 #define  W_BANKED_WITH_STATIC 135       /* banked and static mixed */
154 #define  W_INT_TO_GEN_PTR_CAST 136      /* Converting integer type to generic pointer. */
155
156 /*
157 -------------------------------------------------------------------------------
158 SetErrorOut - Set the error output file
159
160 -------------------------------------------------------------------------------
161 */
162
163 FILE * SetErrorOut(FILE *NewErrorOut) ;
164
165 /*
166 -------------------------------------------------------------------------------
167 vwerror - Output a standard eror message with variable number of arguements
168
169 -------------------------------------------------------------------------------
170 */
171
172 void    vwerror (int errNum, va_list marker) ;
173
174 /*
175 -------------------------------------------------------------------------------
176 werror - Output a standard eror message with variable number of arguements
177
178 -------------------------------------------------------------------------------
179 */
180
181 void    werror (int errNum, ... ) ;
182
183 #endif