summaryrefslogtreecommitdiff
path: root/asm/error.c
diff options
context:
space:
mode:
authorH. Peter Anvin (Intel) <hpa@zytor.com>2018-12-12 18:05:52 -0800
committerH. Peter Anvin (Intel) <hpa@zytor.com>2018-12-12 18:05:52 -0800
commit8e08fb6da7bf1ac50b7c960c5b13c3bed7535b3d (patch)
tree57586939b851810ce229f936a7b64f43f6bdb155 /asm/error.c
parentdf4d3425993f80f0e56922368c845a40587a7dc0 (diff)
parent51222ab69e7ac1854587321442638620aa4829ba (diff)
downloadnasm-8e08fb6da7bf1ac50b7c960c5b13c3bed7535b3d.tar.gz
Merge remote-tracking branch 'origin/nasm-2.14.xx'
Resolved Conflicts: asm/assemble.c asm/directiv.c asm/error.c asm/float.c asm/labels.c asm/listing.c asm/nasm.c asm/parser.c asm/preproc.c asm/stdscan.c include/error.h output/outelf.c version Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
Diffstat (limited to 'asm/error.c')
-rw-r--r--asm/error.c66
1 files changed, 36 insertions, 30 deletions
diff --git a/asm/error.c b/asm/error.c
index 969bb28f..fa8d2d62 100644
--- a/asm/error.c
+++ b/asm/error.c
@@ -46,38 +46,44 @@
* 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] = {
- { "other", "any warning not specifially mentioned below", true },
- { "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 },
-
- /* THIS ENTRY MUST COME LAST */
- { "all", "all possible warnings", 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},
+ {"label-redef", "label redefined to an identical value", off},
+ {"label-redef-late", "label (re)defined during code generation", err},
+
+ /* THESE ENTRIES SHOULD COME LAST */
+ {"other", "any warning not specifially mentioned above", on},
+ {"all", "all possible warnings", off}
};
-/* Current state and command-line state, for reset */
-uint8_t warning_state[WARN_ALL];
-uint8_t warning_state_init[WARN_ALL];
+uint8_t warning_state[WARN_ALL];/* Current state */
+uint8_t warning_state_init[WARN_ALL]; /* Command-line state, for reset */
/* Global error handling function */
vefunc nasm_verror;
@@ -127,7 +133,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)
{