From: Tom Tromey <tom@tromey.com>
To: gdb-patches@sourceware.org
Cc: Simon Marchi <simon.marchi@ericsson.com>
Subject: [FYI 1/2] Disable -Wformat-nonliteral in parts of printcmd.c
Date: Thu, 06 Sep 2018 03:39:00 -0000 [thread overview]
Message-ID: <20180906033855.13635-2-tom@tromey.com> (raw)
In-Reply-To: <20180906033855.13635-1-tom@tromey.com>
From: Simon Marchi <simon.marchi@ericsson.com>
commit 3322c5d9a1 ("Remove unneeded explicit .o targets") broke the
build with clang, because -Wformat-nonliteral was in fact needed.
This patch fixes the problem by introducing
DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL and using it in printcmd.c. This
seems preferable to reverting the patch because now the warning
suppression is more targeted.
gdb/ChangeLog
2018-09-05 Simon Marchi <simon.marchi@ericsson.com>
* printcmd.c (printf_c_string): Use
DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL.
(printf_wide_c_string, printf_pointer, ui_printf): Likewise.
include/ChangeLog
2018-09-05 Simon Marchi <simon.marchi@ericsson.com>
* diagnostics.h (DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL): New macro.
---
gdb/ChangeLog | 6 ++++++
gdb/printcmd.c | 33 +++++++++++++++++++++++++++++++++
include/ChangeLog | 4 ++++
include/diagnostics.h | 12 ++++++++++++
4 files changed, 55 insertions(+)
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 084765d29c..d8ca6d3dab 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2018-09-05 Simon Marchi <simon.marchi@ericsson.com>
+
+ * printcmd.c (printf_c_string): Use
+ DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL.
+ (printf_wide_c_string, printf_pointer, ui_printf): Likewise.
+
2018-09-05 Tom Tromey <tom@tromey.com>
* cli/cli-cmds.c (shell_escape, edit_command): Remove cast.
diff --git a/gdb/printcmd.c b/gdb/printcmd.c
index 1a3d9723d4..8c999188d7 100644
--- a/gdb/printcmd.c
+++ b/gdb/printcmd.c
@@ -2200,7 +2200,10 @@ printf_c_string (struct ui_file *stream, const char *format,
tem = value_as_address (value);
if (tem == 0)
{
+ DIAGNOSTIC_PUSH
+ DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
fprintf_filtered (stream, format, "(null)");
+ DIAGNOSTIC_POP
return;
}
@@ -2221,7 +2224,10 @@ printf_c_string (struct ui_file *stream, const char *format,
read_memory (tem, str, j);
str[j] = 0;
+ DIAGNOSTIC_PUSH
+ DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
fprintf_filtered (stream, format, (char *) str);
+ DIAGNOSTIC_POP
}
/* Subroutine of ui_printf to simplify it.
@@ -2245,7 +2251,10 @@ printf_wide_c_string (struct ui_file *stream, const char *format,
tem = value_as_address (value);
if (tem == 0)
{
+ DIAGNOSTIC_PUSH
+ DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
fprintf_filtered (stream, format, "(null)");
+ DIAGNOSTIC_POP
return;
}
@@ -2272,7 +2281,10 @@ printf_wide_c_string (struct ui_file *stream, const char *format,
&output, translit_char);
obstack_grow_str0 (&output, "");
+ DIAGNOSTIC_PUSH
+ DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
fprintf_filtered (stream, format, obstack_base (&output));
+ DIAGNOSTIC_POP
}
/* Subroutine of ui_printf to simplify it.
@@ -2400,13 +2412,19 @@ printf_pointer (struct ui_file *stream, const char *format,
*fmt_p++ = 'l';
*fmt_p++ = 'x';
*fmt_p++ = '\0';
+ DIAGNOSTIC_PUSH
+ DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
fprintf_filtered (stream, fmt, val);
+ DIAGNOSTIC_POP
}
else
{
*fmt_p++ = 's';
*fmt_p++ = '\0';
+ DIAGNOSTIC_PUSH
+ DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
fprintf_filtered (stream, fmt, "(nil)");
+ DIAGNOSTIC_POP
}
}
@@ -2507,8 +2525,11 @@ ui_printf (const char *arg, struct ui_file *stream)
&output, translit_char);
obstack_grow_str0 (&output, "");
+ DIAGNOSTIC_PUSH
+ DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
fprintf_filtered (stream, current_substring,
obstack_base (&output));
+ DIAGNOSTIC_POP
}
break;
case long_long_arg:
@@ -2516,7 +2537,10 @@ ui_printf (const char *arg, struct ui_file *stream)
{
long long val = value_as_long (val_args[i]);
+ DIAGNOSTIC_PUSH
+ DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
fprintf_filtered (stream, current_substring, val);
+ DIAGNOSTIC_POP
break;
}
#else
@@ -2526,14 +2550,20 @@ ui_printf (const char *arg, struct ui_file *stream)
{
int val = value_as_long (val_args[i]);
+ DIAGNOSTIC_PUSH
+ DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
fprintf_filtered (stream, current_substring, val);
+ DIAGNOSTIC_POP
break;
}
case long_arg:
{
long val = value_as_long (val_args[i]);
+ DIAGNOSTIC_PUSH
+ DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
fprintf_filtered (stream, current_substring, val);
+ DIAGNOSTIC_POP
break;
}
/* Handles floating-point values. */
@@ -2557,7 +2587,10 @@ ui_printf (const char *arg, struct ui_file *stream)
have modified GCC to include -Wformat-security by
default, which will warn here if there is no
argument. */
+ DIAGNOSTIC_PUSH
+ DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
fprintf_filtered (stream, current_substring, 0);
+ DIAGNOSTIC_POP
break;
default:
internal_error (__FILE__, __LINE__,
diff --git a/include/ChangeLog b/include/ChangeLog
index 63fdde6349..c23c743738 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,7 @@
+2018-09-05 Simon Marchi <simon.marchi@ericsson.com>
+
+ * diagnostics.h (DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL): New macro.
+
2018-08-31 Alan Modra <amodra@gmail.com>
* elf/ppc64.h (R_PPC64_REL16_HIGH, R_PPC64_REL16_HIGHA),
diff --git a/include/diagnostics.h b/include/diagnostics.h
index 9e9d1a832f..79e6779edf 100644
--- a/include/diagnostics.h
+++ b/include/diagnostics.h
@@ -59,6 +59,10 @@
# define DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES \
DIAGNOSTIC_IGNORE ("-Wenum-compare-switch")
# endif
+
+# define DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL \
+ DIAGNOSTIC_IGNORE ("-Wformat-nonliteral")
+
#elif defined (__GNUC__) /* GCC */
# define DIAGNOSTIC_IGNORE_UNUSED_FUNCTION \
@@ -66,6 +70,10 @@
# define DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION \
DIAGNOSTIC_IGNORE ("-Wstringop-truncation")
+
+# define DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL \
+ DIAGNOSTIC_IGNORE ("-Wformat-nonliteral")
+
#endif
#ifndef DIAGNOSTIC_IGNORE_SELF_MOVE
@@ -92,4 +100,8 @@
# define DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION
#endif
+#ifndef DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
+# define DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
+#endif
+
#endif /* DIAGNOSTICS_H */
--
2.17.1
next prev parent reply other threads:[~2018-09-06 3:39 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-06 3:39 [FYI 0/2] Fix -Wformat-nonliteral Tom Tromey
2018-09-06 3:39 ` [FYI 2/2] Make -Wformat-nonliteral work with gcc Tom Tromey
2018-09-06 3:39 ` Tom Tromey [this message]
2018-09-06 3:46 ` [FYI 1/2] Disable -Wformat-nonliteral in parts of printcmd.c Tom Tromey
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180906033855.13635-2-tom@tromey.com \
--to=tom@tromey.com \
--cc=gdb-patches@sourceware.org \
--cc=simon.marchi@ericsson.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox