public inbox for gdb-cvs@sourceware.org
help / color / mirror / Atom feed
* [binutils-gdb] sim: Suppress non-literal printf warning
@ 2022-10-11 14:19 Andrew Burgess
0 siblings, 0 replies; only message in thread
From: Andrew Burgess @ 2022-10-11 14:19 UTC (permalink / raw)
To: gdb-cvs
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=96894c19ad2b91db76b9b606d48c56ad354b4801
commit 96894c19ad2b91db76b9b606d48c56ad354b4801
Author: Tsukasa OI <research_trasio@irq.a4lg.com>
Date: Thu Oct 6 06:43:51 2022 +0000
sim: Suppress non-literal printf warning
Clang generates a warning if the format string of a printf-like function is
not a literal ("-Wformat-nonliteral"). On the default configuration, it
causes a build failure (unless "--disable-werror" is specified).
To avoid this warning, this commit now uses vsnprintf to format error
message and pass the message to sim_engine_abort function with another
printf-style formatting.
This patch is mostly authored by Andrew Burgess and slightly modified by
Tsukasa OI.
Co-authored-by: Andrew Burgess <aburgess@redhat.com>
Signed-off-by: Tsukasa OI <research_trasio@irq.a4lg.com>
Diff:
---
sim/common/hw-device.h | 6 ++----
sim/common/sim-hw.c | 24 +++++++++++++++---------
2 files changed, 17 insertions(+), 13 deletions(-)
diff --git a/sim/common/hw-device.h b/sim/common/hw-device.h
index 7a36f2f518c..451f88723de 100644
--- a/sim/common/hw-device.h
+++ b/sim/common/hw-device.h
@@ -437,10 +437,8 @@ void hw_abort
const char *fmt,
...) ATTRIBUTE_PRINTF (2, 3) ATTRIBUTE_NORETURN;
-void hw_vabort
-(struct hw *me,
- const char *fmt,
- va_list ap) ATTRIBUTE_NORETURN;
+extern void hw_vabort (struct hw *me, const char *fmt, va_list ap)
+ ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (2, 0);
void hw_halt
(struct hw *me,
diff --git a/sim/common/sim-hw.c b/sim/common/sim-hw.c
index cece5638bc9..7bfe91e4ae2 100644
--- a/sim/common/sim-hw.c
+++ b/sim/common/sim-hw.c
@@ -408,8 +408,11 @@ hw_vabort (struct hw *me,
const char *fmt,
va_list ap)
{
+ int len;
const char *name;
char *msg;
+ va_list cpy;
+
/* find an identity */
if (me != NULL && hw_path (me) != NULL && hw_path (me) [0] != '\0')
name = hw_path (me);
@@ -419,16 +422,19 @@ hw_vabort (struct hw *me,
name = hw_family (me);
else
name = "device";
- /* construct an updated format string */
- msg = alloca (strlen (name) + strlen (": ") + strlen (fmt) + 1);
- strcpy (msg, name);
- strcat (msg, ": ");
- strcat (msg, fmt);
+
+ /* Expand FMT and AP into MSG buffer. */
+ va_copy (cpy, ap);
+ len = vsnprintf (NULL, 0, fmt, cpy) + 1;
+ va_end (cpy);
+ msg = alloca (len);
+ vsnprintf (msg, len, fmt, ap);
+
/* report the problem */
- sim_engine_vabort (hw_system (me),
- STATE_HW (hw_system (me))->cpu,
- STATE_HW (hw_system (me))->cia,
- msg, ap);
+ sim_engine_abort (hw_system (me),
+ STATE_HW (hw_system (me))->cpu,
+ STATE_HW (hw_system (me))->cia,
+ "%s: %s", name, msg);
}
void
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-10-11 14:19 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-10-11 14:19 [binutils-gdb] sim: Suppress non-literal printf warning Andrew Burgess
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).