[PATCH] sim: add ATTRIBUTE_PRINTF / ATTRIBUTE_NULL_PRINTF where necessary
Simon Marchi
simon.marchi@polymtl.ca
Sun May 2 15:24:54 GMT 2021
I finally got the all-targets sim building with Clang, these are all the
instances where an ATTRIBUTE_PRINTF or ATTRIBUTE_NULL_PRINTF attribute
needed to be added to avoid errors like:
/home/simark/src/binutils-gdb/sim/aarch64/../common/sim-profile.c:464:19: error: format string is not a string literal [-Werror,-Wformat-nonliteral]
vfprintf (fp, fmt, ap);
^~~
There are more fixes needed to get everything building, but adding these
attributes is trivial enough, so I send them all in a single patch.
sim/arm/ChangeLog:
* armdefs.h (ARMul_ConsolePrint): Use format attribute.
* wrapper.c (op_printf): Likewise.
sim/common/ChangeLog:
* hw-events.h (hw_event_queue_schedule_tracef): Use format attribute.
(hw_event_queue_schedule_vtracef): Likewise.
* hw-tree.h (hw_tree_vparse): Likewise.
* sim-profile.c (profile_vprintf): Likewise.
* sim-trace.c (dis_printf): Likewise.
* sim-trace.h (trace_printf): Likewise.
(trace_vprintf): Likewise.
* sim-utils.h (sim_do_commandf): Likewise.
sim/rx/ChangeLog:
* trace.c (op_printf): Likewise.
Change-Id: I1445115ce57db15bb8e35dca93014555e7555794
---
sim/arm/armdefs.h | 4 +++-
sim/arm/wrapper.c | 4 ++--
sim/common/hw-events.h | 4 ++--
sim/common/hw-tree.h | 2 +-
sim/common/sim-profile.c | 2 +-
sim/common/sim-trace.c | 2 +-
sim/common/sim-trace.h | 5 +++--
sim/common/sim-utils.h | 3 ++-
sim/rx/trace.c | 2 +-
9 files changed, 16 insertions(+), 12 deletions(-)
diff --git a/sim/arm/armdefs.h b/sim/arm/armdefs.h
index 2b5ff9b2dfa8..68cf199db6b3 100644
--- a/sim/arm/armdefs.h
+++ b/sim/arm/armdefs.h
@@ -18,6 +18,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
+#include <ansidecl.h>
#define FALSE 0
#define TRUE 1
@@ -415,5 +416,6 @@ extern unsigned ARMul_OSHandleSWI (ARMul_State * state, ARMword number);
extern void ARMul_UndefInstr (ARMul_State *, ARMword);
extern void ARMul_FixCPSR (ARMul_State *, ARMword, ARMword);
extern void ARMul_FixSPSR (ARMul_State *, ARMword, ARMword);
-extern void ARMul_ConsolePrint (ARMul_State *, const char *, ...);
+extern void ARMul_ConsolePrint (ARMul_State *, const char *, ...)
+ ATTRIBUTE_PRINTF (2, 3);
extern void ARMul_SelectProcessor (ARMul_State *, unsigned);
diff --git a/sim/arm/wrapper.c b/sim/arm/wrapper.c
index c89efe4ee971..54a04f424284 100644
--- a/sim/arm/wrapper.c
+++ b/sim/arm/wrapper.c
@@ -62,8 +62,8 @@ int trace_funcs = 0;
static struct disassemble_info info;
static char opbuf[1000];
-static int
-op_printf (char *buf, char *fmt, ...)
+static int ATTRIBUTE_PRINTF (2, 3)
+op_printf (char *buf, const char *fmt, ...)
{
int ret;
va_list ap;
diff --git a/sim/common/hw-events.h b/sim/common/hw-events.h
index 901063b73da2..51ca5bdb2f04 100644
--- a/sim/common/hw-events.h
+++ b/sim/common/hw-events.h
@@ -39,7 +39,7 @@ struct hw_event *hw_event_queue_schedule_tracef
hw_event_callback *handler,
void *data,
const char *fmt,
- ...) ATTRIBUTE_PRINTF (5, 6);
+ ...) ATTRIBUTE_NULL_PRINTF (5, 6);
struct hw_event *hw_event_queue_schedule_vtracef
(struct hw *me,
@@ -47,7 +47,7 @@ struct hw_event *hw_event_queue_schedule_vtracef
hw_event_callback *handler,
void *data,
const char *fmt,
- va_list ap);
+ va_list ap) ATTRIBUTE_NULL_PRINTF (5, 0);
void hw_event_queue_deschedule
diff --git a/sim/common/hw-tree.h b/sim/common/hw-tree.h
index 86ebf1709cad..85c91ad96521 100644
--- a/sim/common/hw-tree.h
+++ b/sim/common/hw-tree.h
@@ -39,7 +39,7 @@ struct hw *hw_tree_parse
struct hw *hw_tree_vparse
(struct hw *root,
const char *fmt,
- va_list ap);
+ va_list ap) ATTRIBUTE_PRINTF (2, 0);
void hw_tree_finish
diff --git a/sim/common/sim-profile.c b/sim/common/sim-profile.c
index 75bdc70298cc..455e1a246d93 100644
--- a/sim/common/sim-profile.c
+++ b/sim/common/sim-profile.c
@@ -454,7 +454,7 @@ profile_option_handler (SIM_DESC sd,
/* Profiling output hooks. */
-static void
+static void ATTRIBUTE_PRINTF (3, 0)
profile_vprintf (SIM_DESC sd, sim_cpu *cpu, const char *fmt, va_list ap)
{
FILE *fp = PROFILE_FILE (CPU_PROFILE_DATA (cpu));
diff --git a/sim/common/sim-trace.c b/sim/common/sim-trace.c
index 5f161da630bb..26d9556322cf 100644
--- a/sim/common/sim-trace.c
+++ b/sim/common/sim-trace.c
@@ -889,7 +889,7 @@ dis_read (bfd_vma memaddr, bfd_byte *myaddr, unsigned int length,
return 0;
}
-static int
+static int ATTRIBUTE_PRINTF (2, 3)
dis_printf (SIM_CPU *cpu, const char *fmt, ...)
{
SIM_DESC sd = CPU_STATE (cpu);
diff --git a/sim/common/sim-trace.h b/sim/common/sim-trace.h
index 7ff7b021b337..c89084e94401 100644
--- a/sim/common/sim-trace.h
+++ b/sim/common/sim-trace.h
@@ -653,9 +653,10 @@ do { \
extern void trace_printf (SIM_DESC, sim_cpu *, const char *, ...)
- ATTRIBUTE_PRINTF (3, 4);
+ ATTRIBUTE_PRINTF (3, 4);
-extern void trace_vprintf (SIM_DESC, sim_cpu *, const char *, va_list);
+extern void trace_vprintf (SIM_DESC, sim_cpu *, const char *, va_list)
+ ATTRIBUTE_PRINTF (3, 0);
/* Debug support.
This is included here because there isn't enough of it to justify
diff --git a/sim/common/sim-utils.h b/sim/common/sim-utils.h
index f089245f25e4..9cc19f5567bc 100644
--- a/sim/common/sim-utils.h
+++ b/sim/common/sim-utils.h
@@ -68,7 +68,8 @@ struct bfd *sim_load_file (SIM_DESC sd, const char *myname,
int lma_p, sim_write_fn do_load);
/* Internal version of sim_do_command, include formatting */
-void sim_do_commandf (SIM_DESC sd, const char *fmt, ...);
+void sim_do_commandf (SIM_DESC sd, const char *fmt, ...)
+ ATTRIBUTE_PRINTF (2, 3);
/* These are defined in callback.c as cover functions to the vprintf
diff --git a/sim/rx/trace.c b/sim/rx/trace.c
index caa51b794dfc..a005797b4ecb 100644
--- a/sim/rx/trace.c
+++ b/sim/rx/trace.c
@@ -96,7 +96,7 @@ compare_symbols (const PTR ap, const PTR bp)
static char opbuf[1000];
-static int
+static int ATTRIBUTE_PRINTF (2, 3)
op_printf (char *buf, char *fmt, ...)
{
int ret;
--
2.30.1
More information about the Gdb-patches
mailing list