va_start(ap, fmt);
{
- _error(VDEBUG, NULLNODE, ap);
+ _error(VDEBUG, NULLNODE, ap, 0);
}
va_end(ap);
}
va_start(ap, fmt);
{
- _error(ERROR, NULLNODE, fmt, ap);
+ _error(ERROR, NULLNODE, fmt, ap, 0);
}
va_end(ap);
}
va_start(ap, fmt);
{
- _error(ERROR, node, fmt, ap);
+ _error(ERROR, node, fmt, ap, 0);
}
va_end(ap);
}
/*VARARGS*/
-warning(char *fmt, ...)
+warning(int class, char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
{
- _error(WARNING, NULLNODE, fmt, ap);
+ _error(WARNING, NULLNODE, fmt, ap, class);
}
va_end(ap);
}
/*VARARGS*/
-node_warning(t_node *node, char *fmt, ...)
+node_warning(t_node *node, int class, char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
{
- _error(WARNING, node, fmt, ap);
+ _error(WARNING, node, fmt, ap, class);
}
va_end(ap);
}
va_start(ap, fmt);
{
- _error(LEXERROR, NULLNODE, fmt, ap);
+ _error(LEXERROR, NULLNODE, fmt, ap, 0);
}
va_end(ap);
}
/*VARARGS*/
-lexwarning(char *fmt, ...)
+lexwarning(int class, char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
{
- _error(LEXWARNING, NULLNODE, fmt, ap);
+ _error(LEXWARNING, NULLNODE, fmt, ap, class);
}
va_end(ap);
}
va_start(ap, fmt);
{
- _error(FATAL, NULLNODE, fmt, ap);
+ _error(FATAL, NULLNODE, fmt, ap, 0);
}
va_end(ap);
sys_stop(S_EXIT);
va_start(ap, fmt);
{
- _error(CRASH, NULLNODE, fmt, ap);
+ _error(CRASH, NULLNODE, fmt, ap, 0);
}
va_end(ap);
#ifdef DEBUG
va_start(ap);
{
char *fmt = va_arg(ap, char *);
- _error(VDEBUG, NULLNODE, fmt, ap);
+ _error(VDEBUG, NULLNODE, fmt, ap, 0);
}
va_end(ap);
}
va_start(ap);
{
char *fmt = va_arg(ap, char *);
- _error(ERROR, NULLNODE, fmt, ap);
+ _error(ERROR, NULLNODE, fmt, ap, 0);
}
va_end(ap);
}
{
t_node *node = va_arg(ap, t_node *);
char *fmt = va_arg(ap, char *);
- _error(ERROR, node, fmt, ap);
+ _error(ERROR, node, fmt, ap, 0);
}
va_end(ap);
}
va_start(ap);
{
+ int class = va_arg(ap, int);
char *fmt = va_arg(ap, char *);
- _error(WARNING, NULLNODE, fmt, ap);
+ _error(WARNING, NULLNODE, fmt, ap, class);
}
va_end(ap);
}
va_start(ap);
{
t_node *nd = va_arg(ap, t_node *);
+ int class = va_arg(ap, int);
char *fmt = va_arg(ap, char *);
- _error(WARNING, nd, fmt, ap);
+ _error(WARNING, nd, fmt, ap, class);
}
va_end(ap);
}
va_start(ap);
{
char *fmt = va_arg(ap, char *);
- _error(LEXERROR, NULLNODE, fmt, ap);
+ _error(LEXERROR, NULLNODE, fmt, ap, 0);
}
va_end(ap);
}
va_start(ap);
{
+ int class = va_arg(ap, int);
char *fmt = va_arg(ap, char *);
- _error(LEXWARNING, NULLNODE, fmt, ap);
+ _error(LEXWARNING, NULLNODE, fmt, ap, class);
}
va_end(ap);
}
va_start(ap);
{
char *fmt = va_arg(ap, char *);
- _error(FATAL, NULLNODE, fmt, ap);
+ _error(FATAL, NULLNODE, fmt, ap, 0);
}
va_end(ap);
sys_stop(S_EXIT);
va_start(ap);
{
char *fmt = va_arg(ap, char *);
- _error(CRASH, NULLNODE, fmt, ap);
+ _error(CRASH, NULLNODE, fmt, ap, 0);
}
va_end(ap);
#ifdef DEBUG
}
#endif
-_error(class, node, fmt, ap)
+_error(class, node, fmt, ap, warn_class)
int class;
t_node *node;
char *fmt;
register va_list ap;
+ int warn_class;
{
/* _error attempts to limit the number of error messages
for a given line to MAXERR_LINE.
*/
unsigned int ln = 0;
register char *remark = 0;
- int warn_class;
/* check visibility of message */
if (class == ERROR || class == WARNING) {
switch (class) {
case WARNING:
case LEXWARNING:
- warn_class = va_arg(ap, int);
if (! (warn_class & warning_classes)) return;
switch(warn_class) {
#ifndef STRICT_3RD_ED
#include "scope.h"
#include "main.h"
+extern int gdb_flag;
+
#define INCR_SIZE 64
extern int proclevel;
addc_db_str(':');
switch(kind) {
case D_MODULE:
- adds_db_str(sprint(buf, "M%d;", df->mod_vis->sc_count));
+ if (gdb_flag) {
+ addc_db_str('F');
+ stb_type(void_type, 0);
+ addc_db_str(';');
+ }
+ else {
+ adds_db_str(sprint(buf, "M%d;", df->mod_vis->sc_count));
+ }
C_ms_stb_pnam(db_str.base, N_FUN, proclevel, df->mod_vis->sc_scope->sc_name);
break;
case D_PROCEDURE:
- adds_db_str(sprint(buf, "Q%d;", df->prc_vis->sc_count));
+ if (gdb_flag) {
+ addc_db_str('f');
+ }
+ else adds_db_str(sprint(buf, "Q%d;", df->prc_vis->sc_count));
stb_type(tp->tp_next ? tp->tp_next : void_type, 0);
+ if (gdb_flag) {
+ t_scopelist *sc = df->prc_vis;
+ sc = enclosing(sc);
+ while (sc) {
+ t_def *d = sc->sc_scope->sc_definedby;
+
+ if (d && d->df_kind == D_PROCEDURE) {
+ adds_db_str(sprint(buf, ",%s", d->df_idf->id_text));
+ }
+ sc = enclosing(sc);
+ }
+ }
addc_db_str(';');
C_ms_stb_pnam(db_str.base, N_FUN, proclevel, df->prc_vis->sc_scope->sc_name);
{
}
break;
case D_END:
+ if (gdb_flag) break;
adds_db_str(sprint(buf, "E%d;", df->mod_vis->sc_count));
C_ms_stb_cst(db_str.base, N_SCOPE, proclevel, (arith) 0);
break;
case D_PEND:
+ if (gdb_flag) break;
adds_db_str(sprint(buf, "E%d;", df->prc_vis->sc_count));
C_ms_stb_cst(db_str.base, N_SCOPE, proclevel, (arith) 0);
break;