#include "comm0.h"
#include "comm1.h"
#include "y.tab.h"
+#include <stdarg.h>
valu_t
load(ip)
if ((ip->i_type & S_TYP) == S_UND || (ip->i_type & S_COM)) {
if (pass == PASS_3) {
if (relonami != 0)
- serror("relocation error");
+ serror("relocation error (relonami=%d, type=%08x)", relonami, ip->i_type);
relonami = ip->i_valu+1;
}
return(0);
fatal("write error");
}
+void diag(const char* tail, const char* s, va_list ap)
+{
+ fflush(stdout);
+ if (modulename)
+ fprintf(stderr, "\"%s\", line %ld: ", modulename, lineno);
+ else
+ fprintf(stderr, "%s: ", progname);
+ vfprintf(stderr, s, ap);
+ fprintf(stderr, "%s", tail);
+}
+
/* VARARGS1 */
-fatal(s, a1, a2, a3, a4)
-char *s;
+void fatal(const char* s, ...)
{
+ va_list ap;
+ va_start(ap, s);
+
nerrors++;
- diag(" (fatal)\n", s, a1, a2, a3, a4);
+ diag(" (fatal)\n", s, ap);
stop();
+
+ va_end(ap);
}
#if DEBUG == 2
#if DEBUG == 1
assert1()
{
- diag(" (fatal)\n", "assertion failed");
+ fatal("assertion failed");
abort();
}
#endif
-/* VARARGS1 */
-serror(s, a1, a2, a3, a4)
-char *s;
+void serror(const char* s, ...)
{
+ va_list ap;
+ va_start(ap, s);
+
nerrors++;
- diag("\n", s, a1, a2, a3, a4);
-}
+ diag("\n", s, ap);
+ stop();
-/* VARARGS1 */
-warning(s, a1, a2, a3, a4)
-char *s;
-{
- diag(" (warning)\n", s, a1, a2, a3, a4);
+ va_end(ap);
}
/* VARARGS1 */
-diag(tail, s, a1, a2, a3, a4)
-char *tail, *s;
+void warning(const char* s, ...)
{
- fflush(stdout);
- if (modulename)
- fprintf(stderr, "\"%s\", line %ld: ", modulename, lineno);
- else
- fprintf(stderr, "%s: ", progname);
- fprintf(stderr, s, a1, a2, a3, a4);
- fprintf(stderr, tail);
+ va_list ap;
+ va_start(ap, s);
+
+ nerrors++;
+ diag(" (warning)\n", s, ap);
+ stop();
+
+ va_end(ap);
}
nofit()