From 5a24fdd547f4c02fe46c37b84a020febfa41bfd2 Mon Sep 17 00:00:00 2001 From: "H. Peter Anvin" Date: Sat, 25 Feb 2012 15:10:04 -0800 Subject: [PATCH] Make the LOCK and HLE warnings suppressable. Signed-off-by: H. Peter Anvin --- assemble.c | 6 +++--- doc/nasmdoc.src | 7 +++++++ nasm.c | 4 +++- nasmlib.h | 4 +++- 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/assemble.c b/assemble.c index eba1b32d..bf5c103f 100644 --- a/assemble.c +++ b/assemble.c @@ -818,14 +818,14 @@ static void bad_hle_warn(const insn * ins, uint8_t hleok) case w_lock: if (ins->prefixes[PPS_LOCK] != P_LOCK) { - errfunc(ERR_WARNING | ERR_PASS2, + errfunc(ERR_WARNING | ERR_WARN_HLE | ERR_PASS2, "%s with this instruction requires lock", prefix_name(rep_pfx)); } break; case w_inval: - errfunc(ERR_WARNING | ERR_PASS2, + errfunc(ERR_WARNING | ERR_WARN_HLE | ERR_PASS2, "%s invalid with this instruction", prefix_name(rep_pfx)); break; @@ -1254,7 +1254,7 @@ static int64_t calcsize(int32_t segment, int64_t offset, int bits, if (has_prefix(ins, PPS_LOCK, P_LOCK) && lockcheck && (!(temp->flags & IF_LOCK) || !is_class(MEMORY, ins->oprs[0].type))) { - errfunc(ERR_WARNING | ERR_PASS2, + errfunc(ERR_WARNING | ERR_WARN_LOCK | ERR_PASS2 , "instruction is not lockable"); } diff --git a/doc/nasmdoc.src b/doc/nasmdoc.src index 583ad523..217c12a8 100644 --- a/doc/nasmdoc.src +++ b/doc/nasmdoc.src @@ -948,6 +948,13 @@ Enabled by default. \b \i\c{user} controls \c{%warning} directives (see \k{pperror}). Enabled by default. +\b \i\c{lock} warns about \c{LOCK} prefixes on unlockable instructions. +Enabled by default. + +\b \i\c{hle} warns about invalid use of the HLE \c{XACQUIRE} or \c{XRELEASE} +prefixes. +Enabled by default. + \b \i\c{error} causes warnings to be treated as errors. Disabled by default. diff --git a/nasm.c b/nasm.c index cca6650f..5103fea5 100644 --- a/nasm.c +++ b/nasm.c @@ -1,6 +1,6 @@ /* ----------------------------------------------------------------------- * * - * Copyright 1996-2011 The NASM Authors - All Rights Reserved + * Copyright 1996-2012 The NASM Authors - All Rights Reserved * See the file AUTHORS included with the NASM distribution for * the specific copyright holders. * @@ -161,6 +161,8 @@ static const struct warning { {"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}, }; /* diff --git a/nasmlib.h b/nasmlib.h index 1aeaf0a0..2210748b 100644 --- a/nasmlib.h +++ b/nasmlib.h @@ -132,7 +132,9 @@ void nasm_set_verror(vefunc); #define ERR_WARN_FL_UNDERFLOW WARN( 9) /* FP underflow */ #define ERR_WARN_FL_TOOLONG WARN(10) /* FP too many digits */ #define ERR_WARN_USER WARN(11) /* %warning directives */ -#define ERR_WARN_MAX 11 /* the highest numbered one */ +#define ERR_WARN_LOCK WARN(12) /* bad LOCK prefixes */ +#define ERR_WARN_HLE WARN(13) /* bad HLE prefixes */ +#define ERR_WARN_MAX 13 /* the highest numbered one */ /* * Wrappers around malloc, realloc and free. nasm_malloc will -- 2.11.4.GIT