[binutils-gdb] sim: callback: add printf attributes
Michael Frysinger
vapier@sourceware.org
Tue Jun 29 06:19:55 GMT 2021
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=a1d9117f94cd835b266c6ec17b4cdcf4ce31b9ee
commit a1d9117f94cd835b266c6ec17b4cdcf4ce31b9ee
Author: Mike Frysinger <vapier@gentoo.org>
Date: Sun Jun 27 23:21:26 2021 -0400
sim: callback: add printf attributes
This helps these funcs get printf format checking coverage.
The sim-io.c hack as a result is a bit unfortunate, but the compiler
throws warnings when printing with empty strings. In this one case,
we actually want that due to the side-effect of the callback halting
execution for us.
Diff:
---
include/sim/ChangeLog | 5 +++++
include/sim/callback.h | 12 ++++++++----
sim/common/ChangeLog | 4 ++++
sim/common/sim-io.c | 4 +++-
4 files changed, 20 insertions(+), 5 deletions(-)
diff --git a/include/sim/ChangeLog b/include/sim/ChangeLog
index 0897a52082a..21a97784ab7 100644
--- a/include/sim/ChangeLog
+++ b/include/sim/ChangeLog
@@ -1,3 +1,8 @@
+2021-06-29 Mike Frysinger <vapier@gentoo.org>
+
+ * sim/callback.h (struct host_callback_struct): Add ATTRIBUTE_PRINTF
+ to printf functions.
+
2021-06-24 Mike Frysinger <vapier@gentoo.org>
* sim/callback.h (struct host_callback_struct): Add arg5, arg6, and
diff --git a/include/sim/callback.h b/include/sim/callback.h
index be72f4503e1..06aa2d4be79 100644
--- a/include/sim/callback.h
+++ b/include/sim/callback.h
@@ -113,18 +113,22 @@ struct host_callback_struct
int (*init) (host_callback *);
/* depreciated, use vprintf_filtered - Talk to the user on a console. */
- void (*printf_filtered) (host_callback *, const char *, ...);
+ void (*printf_filtered) (host_callback *, const char *, ...)
+ ATTRIBUTE_PRINTF_2;
/* Talk to the user on a console. */
- void (*vprintf_filtered) (host_callback *, const char *, va_list);
+ void (*vprintf_filtered) (host_callback *, const char *, va_list)
+ ATTRIBUTE_PRINTF (2, 0);
/* Same as vprintf_filtered but to stderr. */
- void (*evprintf_filtered) (host_callback *, const char *, va_list);
+ void (*evprintf_filtered) (host_callback *, const char *, va_list)
+ ATTRIBUTE_PRINTF (2, 0);
/* Print an error message and "exit".
In the case of gdb "exiting" means doing a longjmp back to the main
command loop. */
- void (*error) (host_callback *, const char *, ...) ATTRIBUTE_NORETURN;
+ void (*error) (host_callback *, const char *, ...)
+ ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF_2;
int last_errno; /* host format */
diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog
index 594994ab271..291d093b225 100644
--- a/sim/common/ChangeLog
+++ b/sim/common/ChangeLog
@@ -1,3 +1,7 @@
+2021-06-29 Mike Frysinger <vapier@gentoo.org>
+
+ * sim-io.c (sim_io_error): Change "" to " ".
+
2021-06-29 Mike Frysinger <vapier@gentoo.org>
* callback.c (sim_cb_printf, sim_cb_eprintf): Delete.
diff --git a/sim/common/sim-io.c b/sim/common/sim-io.c
index e09a4af7ba2..d1c2be6bfe3 100644
--- a/sim/common/sim-io.c
+++ b/sim/common/sim-io.c
@@ -309,7 +309,9 @@ sim_io_error (SIM_DESC sd,
va_start (ap, fmt);
STATE_CALLBACK (sd)->evprintf_filtered (STATE_CALLBACK (sd), fmt, ap);
va_end (ap);
- STATE_CALLBACK (sd)->error (STATE_CALLBACK (sd), "");
+ /* Printing a space here avoids empty printf compiler warnings. Not ideal,
+ but we want error's side-effect where it halts processing. */
+ STATE_CALLBACK (sd)->error (STATE_CALLBACK (sd), " ");
}
}
More information about the Binutils-cvs
mailing list