aboutsummaryrefslogtreecommitdiffstats
path: root/asm
diff options
context:
space:
mode:
Diffstat (limited to 'asm')
-rw-r--r--asm/error.c56
-rw-r--r--asm/nasm.c9
2 files changed, 34 insertions, 31 deletions
diff --git a/asm/error.c b/asm/error.c
index e5e0a1cc..8e5ec7f3 100644
--- a/asm/error.c
+++ b/asm/error.c
@@ -46,34 +46,38 @@
* Description of the suppressible warnings for the command line and
* the [warning] directive.
*/
+#define on (WARN_ST_ENABLED)
+#define off 0
+#define err (WARN_ST_ENABLED|WARN_ST_ERROR)
+
const struct warning warnings[WARN_ALL+1] = {
- {NULL, NULL, true}, /* must be true - used for unconditional enable */
- {"macro-params", "macro calls with wrong parameter count", true},
- {"macro-selfref", "cyclic macro references", false},
- {"macro-defaults", "macros with more default than optional parameters", true},
- {"orphan-labels", "labels alone on lines without trailing `:'", true},
- {"number-overflow", "numeric constant does not fit", true},
- {"gnu-elf-extensions", "using 8- or 16-bit relocation in ELF32, a GNU extension", false},
- {"float-overflow", "floating point overflow", true},
- {"float-denorm", "floating point denormal", false},
- {"float-underflow", "floating point underflow", false},
- {"float-toolong", "too many digits in floating-point number", true},
- {"user", "%warning directives", true},
- {"lock", "lock prefix on unlockable instructions", true},
- {"hle", "invalid hle prefixes", true},
- {"bnd", "invalid bnd prefixes", true},
- {"zext-reloc", "relocation zero-extended to match output format", true},
- {"ptr", "non-NASM keyword used in other assemblers", true},
- {"bad-pragma", "empty or malformed %pragma", false},
- {"unknown-pragma", "unknown %pragma facility or directive", false},
- {"not-my-pragma", "%pragma not applicable to this compilation", false},
- {"unknown-warning", "unknown warning in -W/-w or warning directive", false},
- {"negative-rep", "regative %rep count", true},
- {"phase", "phase error during stabilization", false},
+ {NULL, NULL, on}, /* must be on - used for unconditional enable */
+ {"macro-params", "macro calls with wrong parameter count", on},
+ {"macro-selfref", "cyclic macro references", off},
+ {"macro-defaults", "macros with more default than optional parameters", on},
+ {"orphan-labels", "labels alone on lines without trailing `:'", on},
+ {"number-overflow", "numeric constant does not fit", on},
+ {"gnu-elf-extensions", "using 8- or 16-bit relocation in ELF32, a GNU extension", off},
+ {"float-overflow", "floating point overflow", on},
+ {"float-denorm", "floating point denormal", off},
+ {"float-underflow", "floating point underflow", off},
+ {"float-toolong", "too many digits in floating-point number", on},
+ {"user", "%warning directives", on},
+ {"lock", "lock prefix on unlockable instructions", on},
+ {"hle", "invalid hle prefixes", on},
+ {"bnd", "invalid bnd prefixes", on},
+ {"zext-reloc", "relocation zero-extended to match output format", on},
+ {"ptr", "non-NASM keyword used in other assemblers", on},
+ {"bad-pragma", "empty or malformed %pragma", off},
+ {"unknown-pragma", "unknown %pragma facility or directive", off},
+ {"not-my-pragma", "%pragma not applicable to this compilation", off},
+ {"unknown-warning", "unknown warning in -W/-w or warning directive", off},
+ {"negative-rep", "regative %rep count", on},
+ {"phase", "phase error during stabilization", off},
/* THESE ENTRIES SHOULD COME LAST */
- {"other", "any warning not specifially mentioned below", true},
- {"all", "all possible warnings", false}
+ {"other", "any warning not specifially mentioned below", on},
+ {"all", "all possible warnings", off}
};
uint8_t warning_state[WARN_ALL];/* Current state */
@@ -120,7 +124,7 @@ fatal_func nasm_assert_failed(const char *file, int line, const char *msg)
/*
* This is called when processing a -w or -W option, or a warning directive.
- * Returns true if if the action was successful.
+ * Returns on if if the action was successful.
*/
bool set_warning_status(const char *value)
{
diff --git a/asm/nasm.c b/asm/nasm.c
index bf76fb97..ac3cd1c2 100644
--- a/asm/nasm.c
+++ b/asm/nasm.c
@@ -1346,10 +1346,8 @@ static void parse_cmdline(int argc, char **argv, int pass)
* Initialize all the warnings to their default state, including
* warning index 0 used for "always on".
*/
- for (i = 0; i < WARN_ALL; i++) {
- warning_state_init[i] = warning_state[i] =
- warnings[i].enabled ? WARN_ST_ENABLED : 0;
- }
+ for (i = 0; i < WARN_ALL; i++)
+ warning_state_init[i] = warning_state[i] = warnings[i].state;
/*
* First, process the NASMENV environment variable.
@@ -2059,7 +2057,8 @@ static void help(const char xopt)
printf(" %-23s %s%s\n",
warnings[i].name, warnings[i].help,
i == WARN_ALL ? "\n" :
- warnings[i].enabled ? " [on]" : " [off]");
+ (warnings[i].state & WARN_ST_ERROR) ? " [error]" :
+ (warnings[i].state & WARN_ST_ENABLED) ? " [on]" : " [off]");
if (xopt == 'f') {
printf("valid output formats for -f are"