make integer -> generic pointer casts default to XDATA and throw a awrning
[fw/sdcc] / src / SDCCerr.c
index 9bd37c6b2895d5e9796fd52bfcb5c98f81836494..cdffcddb27ac68424c7e93bf9fb88c2f024d27f7 100644 (file)
@@ -2,6 +2,14 @@
 
 #include "common.h"
 
+#define USE_STDOUT_FOR_ERRORS          0
+
+#if USE_STDOUT_FOR_ERRORS
+#define ERRSINK                stdout
+#else
+#define ERRSINK                stderr
+#endif
+
 #define ERROR          0
 #define WARNING                1
 extern FILE *lstFile;
@@ -146,24 +154,31 @@ struct  {
 { WARNING,"warning *** unknown memory model at %s : %d\n" },
 { ERROR  ,"error   *** cannot generate code for target '%s'\n"},
 { WARNING,"warning *** Indirect call to a banked function not implemented.\n"},
+{ WARNING,"warning *** Model '%s' not supported for %s, ignored.\n"},
+{ WARNING,"warning *** Both banked and nonbanked attributes used.  nonbanked wins.\n"},
+{ WARNING,"warning *** Both banked and static used.  static wins.\n"},
+{ WARNING,"warning *** converting integer type to generic pointer: assuming XDATA\n"}
 };
 
+void   vwerror (int errNum, va_list marker)
+{
+    if ( ErrTab[errNum].errType== ERROR )
+       fatalError++ ;
+    
+    if ( filename && lineno ) {
+       fprintf(ERRSINK, "%s(%d):",filename,lineno);
+    }
+    vfprintf(ERRSINK, ErrTab[errNum].errText,marker);
+}
+
 /****************************************************************************/
 /* werror - writes an error to the listing file & to standarderr           */
 /****************************************************************************/
 void   werror (int errNum, ... )
 {
-       va_list marker;
-
-       
-       if ( ErrTab[errNum].errType== ERROR )
-               fatalError++ ;
-       
-       if ( filename && lineno ) {
-               fprintf(stderr,"%s(%d):",filename,lineno);
-       }
-       va_start(marker,errNum);
-       vfprintf(stderr,ErrTab[errNum].errText,marker);
-       va_end( marker );
+    va_list    marker;
+    va_start(marker,errNum);
+    vwerror(errNum, marker);
+    va_end( marker );
 }