From: Mike Frysinger Date: Mon, 28 Jun 2021 03:21:26 +0000 (-0400) Subject: sim: callback: add printf attributes X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a1d9117f94cd835b266c6ec17b4cdcf4ce31b9ee;p=binutils-gdb.git 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 --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 + + * sim/callback.h (struct host_callback_struct): Add ATTRIBUTE_PRINTF + to printf functions. + 2021-06-24 Mike Frysinger * 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 + + * sim-io.c (sim_io_error): Change "" to " ". + 2021-06-29 Mike Frysinger * 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), " "); } }