[Nasm-commits] [nasm:note] preproc: add new %note directive
nasm-bot for H. Peter Anvin (Intel)
hpa at zytor.com
Thu Jun 4 19:56:49 PDT 2020
Commit-ID: 42b9579f90d26d2123036cbab9ca8c20226423d3
Gitweb: http://repo.or.cz/w/nasm.git?a=commitdiff;h=42b9579f90d26d2123036cbab9ca8c20226423d3
Author: H. Peter Anvin (Intel) <hpa at zytor.com>
AuthorDate: Wed, 27 Jun 2018 22:03:01 -0700
Committer: H. Peter Anvin (Intel) <hpa at zytor.com>
CommitDate: Wed, 27 Jun 2018 22:03:01 -0700
preproc: add new %note directive
Add a new %note directive to issue a note into the list file without
printing a message. The difference between %note and a comment is that
a %note will be issued with single-line macros expanded, and will be
issued even if it occurs inside a .nolist macro.
Signed-off-by: H. Peter Anvin (Intel) <hpa at zytor.com>
---
asm/nasm.c | 18 ++++++++++++++----
asm/pptok.dat | 3 ++-
asm/preproc.c | 7 +++++++
include/error.h | 7 ++++---
test/note.asm | 23 +++++++++++++++++++++++
5 files changed, 50 insertions(+), 8 deletions(-)
diff --git a/asm/nasm.c b/asm/nasm.c
index 55e4a8cf..e1e3eff0 100644
--- a/asm/nasm.c
+++ b/asm/nasm.c
@@ -1801,6 +1801,12 @@ static bool skip_this_pass(int severity)
if ((severity & ERR_MASK) > ERR_NONFATAL)
return false;
+ /*
+ * We *never* print a message for ERR_NOTE.
+ */
+ if ((severity & ERR_MASK) == ERR_NOTE)
+ return true;
+
/*
* passn is 1 on the very first pass only.
* pass0 is 2 on the code-generation (final) pass only.
@@ -1826,6 +1832,12 @@ static void nasm_verror_common(int severity, const char *fmt, va_list args)
const char *pfx;
switch (severity & (ERR_MASK|ERR_NO_SEVERITY)) {
+ case ERR_NOTE:
+ pfx = "note: ";
+ break;
+ case ERR_DEBUG:
+ pfx = "debug: ";
+ break;
case ERR_WARNING:
pfx = "warning: ";
break;
@@ -1838,9 +1850,6 @@ static void nasm_verror_common(int severity, const char *fmt, va_list args)
case ERR_PANIC:
pfx = "panic: ";
break;
- case ERR_DEBUG:
- pfx = "debug: ";
- break;
default:
pfx = "";
break;
@@ -1861,7 +1870,7 @@ static void nasm_verror_common(int severity, const char *fmt, va_list args)
/*
* Don't suppress this with skip_this_pass(), or we don't get
- * pass1 or preprocessor warnings in the list file
+ * pass1 or preprocessor warnings or notes in the list file
*/
lfmt->error(severity, pfx, msg);
@@ -1874,6 +1883,7 @@ static void nasm_verror_common(int severity, const char *fmt, va_list args)
preproc->error_list_macros(severity);
switch (severity & ERR_MASK) {
+ case ERR_NOTE:
case ERR_DEBUG:
/* no further action, by definition */
break;
diff --git a/asm/pptok.dat b/asm/pptok.dat
index a2c64d0a..7bb85280 100644
--- a/asm/pptok.dat
+++ b/asm/pptok.dat
@@ -1,6 +1,6 @@
## --------------------------------------------------------------------------
##
-## Copyright 1996-2016 The NASM Authors - All Rights Reserved
+## Copyright 1996-2018 The NASM Authors - All Rights Reserved
## See the file AUTHORS included with the NASM distribution for
## the specific copyright holders.
##
@@ -76,6 +76,7 @@
%line
%local
%macro
+%note
%pathsearch
%pop
%pragma
diff --git a/asm/preproc.c b/asm/preproc.c
index 8e1e6369..0a6e0fa6 100644
--- a/asm/preproc.c
+++ b/asm/preproc.c
@@ -2735,6 +2735,9 @@ static int do_directive(Token *tline, char **output)
case PP_WARNING:
severity = ERR_WARNING|ERR_WARN_USER;
goto issue_error;
+ case PP_NOTE:
+ severity = ERR_NOTE;
+ goto issue_error;
issue_error:
{
@@ -2759,6 +2762,10 @@ issue_error:
nasm_free(p);
}
free_tlist(origline);
+
+ if (severity == ERR_NOTE)
+ lfmt->drop(); /* Suppress printing the actual %note */
+
return DIRECTIVE_FOUND;
}
diff --git a/include/error.h b/include/error.h
index 139400db..2f21b102 100644
--- a/include/error.h
+++ b/include/error.h
@@ -63,9 +63,10 @@ static inline vefunc nasm_set_verror(vefunc ve)
* argument to an efunc.
*/
-#define ERR_DEBUG 0x00000000 /* put out debugging message */
-#define ERR_WARNING 0x00000001 /* warn only: no further action */
-#define ERR_NONFATAL 0x00000002 /* terminate assembly after phase */
+#define ERR_NOTE 0x00000000 /* note in the list file only */
+#define ERR_DEBUG 0x00000001 /* put out debugging message */
+#define ERR_WARNING 0x00000002 /* warn only: no further action */
+#define ERR_NONFATAL 0x00000003 /* terminate assembly after phase */
#define ERR_FATAL 0x00000006 /* instantly fatal: exit with error */
#define ERR_PANIC 0x00000007 /* internal error: panic instantly
* and dump core for reference */
diff --git a/test/note.asm b/test/note.asm
new file mode 100644
index 00000000..c1ba2bb6
--- /dev/null
+++ b/test/note.asm
@@ -0,0 +1,23 @@
+ bits 32
+%define bluttan 66h
+foo:
+ db bluttan
+%warning "bluttan" = bluttan
+ db 67h
+ db 60000,60000
+%note "bluttan" = bluttan
+ nop
+
+%macro warnalot 0.nolist
+ db 60000,60000
+ db 60000,60000
+%endmacro
+
+ warnalot
+
+%macro warnalotl 0
+ db 60000,60000
+ db 60000,60000
+%endmacro
+
+ warnalotl
More information about the Nasm-commits
mailing list