Changed strdup to y_strdup (ANSI compatibility).
svn path=/trunk/yasm/; revision=53
-/* $Id: errwarn.h,v 1.5 2001/06/13 05:43:59 mu Exp $
+/* $Id: errwarn.h,v 1.6 2001/06/13 05:56:06 mu Exp $
* Error and warning reporting and related functions header file.
*
* Copyright (C) 2001 Peter Johnson
ERR_INVALID_ARG,
ERR_INVALID_EA,
ERR_INVALID_LINE,
- ERR_EXP_SYNTAX
+ ERR_EXP_SYNTAX,
+ ERR_DUPLICATE_DEF
} err_num;
void Error(err_num, char *, ...);
-/* $Id: errwarn.c,v 1.7 2001/06/13 05:53:25 peter Exp $
+/* $Id: errwarn.c,v 1.8 2001/06/13 05:56:06 mu Exp $
* Error and warning reporting and related functions.
*
* Copyright (C) 2001 Peter Johnson
"invalid argument to %s",
"invalid effective address",
"label or instruction expected at start of line",
- "expression syntax error"
+ "expression syntax error",
+ "duplicate definition of `%s'; previously defined line %d"
};
static char *warn_msgs[] = {
}
}
} else {
- dest = strdup(src);
+ dest = y_strdup(src);
if(!dest)
Fatal(FATAL_NOMEM);
}
-/* $Id: errwarn.h,v 1.5 2001/06/13 05:43:59 mu Exp $
+/* $Id: errwarn.h,v 1.6 2001/06/13 05:56:06 mu Exp $
* Error and warning reporting and related functions header file.
*
* Copyright (C) 2001 Peter Johnson
ERR_INVALID_ARG,
ERR_INVALID_EA,
ERR_INVALID_LINE,
- ERR_EXP_SYNTAX
+ ERR_EXP_SYNTAX,
+ ERR_DUPLICATE_DEF
} err_num;
void Error(err_num, char *, ...);
-/* $Id: symrec.c,v 1.2 2001/06/13 05:43:59 mu Exp $
+/* $Id: symrec.c,v 1.3 2001/06/13 05:56:06 mu Exp $
* Symbol table handling
*
* Copyright (C) 2001 Michael Urman
{
symtab *tab;
tab = symtab_get_or_new (name, type);
+ if (tab->rec.status & SYM_DECLARED)
+ Error (ERR_DUPLICATE_DEF, (char *)NULL, tab->rec.name, tab->rec.line);
tab->rec.status |= SYM_DECLARED;
return &(tab->rec);
}
-/* $Id: errwarn.c,v 1.7 2001/06/13 05:53:25 peter Exp $
+/* $Id: errwarn.c,v 1.8 2001/06/13 05:56:06 mu Exp $
* Error and warning reporting and related functions.
*
* Copyright (C) 2001 Peter Johnson
"invalid argument to %s",
"invalid effective address",
"label or instruction expected at start of line",
- "expression syntax error"
+ "expression syntax error",
+ "duplicate definition of `%s'; previously defined line %d"
};
static char *warn_msgs[] = {
}
}
} else {
- dest = strdup(src);
+ dest = y_strdup(src);
if(!dest)
Fatal(FATAL_NOMEM);
}
-/* $Id: errwarn.h,v 1.5 2001/06/13 05:43:59 mu Exp $
+/* $Id: errwarn.h,v 1.6 2001/06/13 05:56:06 mu Exp $
* Error and warning reporting and related functions header file.
*
* Copyright (C) 2001 Peter Johnson
ERR_INVALID_ARG,
ERR_INVALID_EA,
ERR_INVALID_LINE,
- ERR_EXP_SYNTAX
+ ERR_EXP_SYNTAX,
+ ERR_DUPLICATE_DEF
} err_num;
void Error(err_num, char *, ...);
-/* $Id: symrec.c,v 1.2 2001/06/13 05:43:59 mu Exp $
+/* $Id: symrec.c,v 1.3 2001/06/13 05:56:06 mu Exp $
* Symbol table handling
*
* Copyright (C) 2001 Michael Urman
{
symtab *tab;
tab = symtab_get_or_new (name, type);
+ if (tab->rec.status & SYM_DECLARED)
+ Error (ERR_DUPLICATE_DEF, (char *)NULL, tab->rec.name, tab->rec.line);
tab->rec.status |= SYM_DECLARED;
return &(tab->rec);
}