On 06 Oct 2022 14:39, Tsukasa OI via Gdb-patches wrote: > On 2022/10/05 20:45, Andrew Burgess wrote: > > Tsukasa OI writes: > >> Clang generates a warning if the format parameter of a printf-like function > >> is not a literal. However, on hw_vabort, it's unavoidable to use non- > >> literal as a format string (unless we make huge redesign). > >> > >> We have "include/diagnostics.h" to suppress certain warnings only when > >> necessary. Because DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL can suppress > >> warnings when the format parameter of a printf-like function is not a > >> literal, this commit adds this (only where necessary) to suppress this > >> error with "-Werror", the default configuration. > >> > >> sim/ChangeLog: > >> > >> * common/sim-hw.c (hw_vabort): Suppress non-literal printf warning > >> by using DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL. > >> --- > >> sim/common/sim-hw.c | 3 +++ > >> 1 file changed, 3 insertions(+) > >> > >> diff --git a/sim/common/sim-hw.c b/sim/common/sim-hw.c > >> index cece5638bc9..36f355d2262 100644 > >> --- a/sim/common/sim-hw.c > >> +++ b/sim/common/sim-hw.c > >> @@ -425,10 +425,13 @@ hw_vabort (struct hw *me, > >> strcat (msg, ": "); > >> strcat (msg, fmt); > >> /* report the problem */ > >> + DIAGNOSTIC_PUSH > >> + DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL > >> sim_engine_vabort (hw_system (me), > >> STATE_HW (hw_system (me))->cpu, > >> STATE_HW (hw_system (me))->cia, > >> msg, ap); > >> + DIAGNOSTIC_POP > > > > Rather than disabling diagnostics, I'd like to propose the patch below > > which expands FMT and AP within sim-hw.c, then passes the expanded > > string through to sim_engine_abort. What do you think of this? > > Ah, It took a while to understand but makes sense to me. > > I just needed to add ATTRIBUTE_PRINTF (2, 0) to suppress "-Werror > -Wformat-nonliteral" but I prefer to use your patch instead. adding ATTRIBUTE_PRINTF doesn't suppress warnings, it fixes them -mike