diff --git a/include/asm/main.h b/include/asm/main.h index 8ea718a4..7fa446bb 100644 --- a/include/asm/main.h +++ b/include/asm/main.h @@ -26,8 +26,25 @@ extern void opt_Push(void); extern void opt_Pop(void); extern void opt_Parse(char *s); +/* + * Used for errors that compromise the whole assembly process by affecting the + * folliwing code, potencially making the assembler generate errors caused by + * the first one and unrelated to the code that the assembler complains about. + * It is also used when the assembler goes into an invalid state (for example, + * when it fails to allocate memory). + */ noreturn void fatalerror(const char *fmt, ...); +/* + * Used for errors that make it impossible to assemble correctly, but don't + * affect the following code. The code will fail to assemble but the user will + * get a list of all errors at the end, making it easier to fix all of them at + * once. + */ void yyerror(const char *fmt, ...); +/* + * Used to warn the user about problems that don't prevent the generation of + * valid code. + */ void warning(const char *fmt, ...); #define YY_FATAL_ERROR fatalerror diff --git a/src/asm/lexer.c b/src/asm/lexer.c index f456636e..a650273e 100644 --- a/src/asm/lexer.c +++ b/src/asm/lexer.c @@ -535,7 +535,7 @@ yylex_ReadBracketedSymbol(char *dest, size_t index) if (*pLexBuffer == '}') pLexBuffer++; else - yyerror("Missing }"); + fatalerror("Missing }"); return length; } @@ -601,7 +601,7 @@ yylex_ReadQuotedString() if (*pLexBuffer == '"') pLexBuffer++; else - yyerror("Unterminated string"); + fatalerror("Unterminated string"); } ULONG diff --git a/src/asm/output.c b/src/asm/output.c index 4bc1ae9e..35961dc8 100644 --- a/src/asm/output.c +++ b/src/asm/output.c @@ -480,7 +480,8 @@ checksectionoverflow(ULONG delta_size) /* * This check is here to trap broken code that generates * sections that are too big and to prevent the assembler from - * generating huge object files. + * generating huge object files or trying to allocate too much + * memory. * The real check must be done at the linking stage. */ fatalerror("Section '%s' is too big (max size = 0x%X bytes).",