Allow %warning output to be suppressed

Allow the user to suppress user-specified warnings.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
This commit is contained in:
H. Peter Anvin 2008-09-30 16:39:17 -07:00
parent 2d5baaa69a
commit 2f16043879
5 changed files with 15 additions and 5 deletions

View file

@ -13,6 +13,9 @@ since 2007.
\b Make the behaviour of \c{-O0} match NASM 0.98 legacy behavior.
See \k{opt-O}.
\b \c{-w-user} can be used to suppress the output of \c{%warning} directives.
See \k{opt-w}.
\S{cl-2.04} Version 2.04

View file

@ -889,6 +889,9 @@ Disabled by default.
\b \i\c{float-toolong} warns about too many digits in floating-point numbers.
Enabled by default.
\b \i\c{user} controls \c{%warning} directives (see \k{pperror}).
Enabled by default.
In addition, you can set warning classes across sections.
Warning classes may be enabled with \i\c{[warning +warning-name]},
disabled with \i\c{[warning -warning-name]} or reset to their

9
nasm.c
View file

@ -107,7 +107,8 @@ static const char *depend_file = NULL;
static bool suppressed[ERR_WARN_MAX+1];
static bool suppressed_global[ERR_WARN_MAX+1] = {
true, false, true, false, false, false, true, false, true, true, false
true, false, true, false, false, false, true, false, true, true, false,
true
};
/*
* The option names for the suppressible warnings. As before, entry
@ -116,7 +117,8 @@ static bool suppressed_global[ERR_WARN_MAX+1] = {
static const char *suppressed_names[ERR_WARN_MAX+1] = {
"error", "macro-params", "macro-selfref", "macro-defaults",
"orphan-labels", "number-overflow", "gnu-elf-extensions",
"float-overflow", "float-denorm", "float-underflow", "float-toolong"
"float-overflow", "float-denorm", "float-underflow", "float-toolong",
"user"
};
/*
@ -134,7 +136,8 @@ static const char *suppressed_what[ERR_WARN_MAX+1] = {
"floating point overflow",
"floating point denormal",
"floating point underflow",
"too many digits in floating-point number"
"too many digits in floating-point number",
"%warning directives"
};
/*

View file

@ -93,7 +93,8 @@ extern efunc nasm_malloc_error;
#define ERR_WARN_FL_DENORM WARN( 8) /* FP denormal */
#define ERR_WARN_FL_UNDERFLOW WARN( 9) /* FP underflow */
#define ERR_WARN_FL_TOOLONG WARN(10) /* FP too many digits */
#define ERR_WARN_MAX 10 /* the highest numbered one */
#define ERR_WARN_USER WARN(11) /* %warning directives */
#define ERR_WARN_MAX 11 /* the highest numbered one */
/*
* Wrappers around malloc, realloc and free. nasm_malloc will

View file

@ -2377,7 +2377,7 @@ static int do_directive(Token * tline)
severity = ERR_NONFATAL|ERR_NO_SEVERITY;
goto issue_error;
case PP_WARNING:
severity = ERR_WARNING|ERR_NO_SEVERITY;
severity = ERR_WARNING|ERR_NO_SEVERITY|ERR_WARN_USER;
goto issue_error;
issue_error: