diff options
author | Simon Marchi <simon.marchi@ericsson.com> | 2018-09-05 21:21:51 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2018-09-05 21:47:33 -0600 |
commit | af39b1c216ffb11e6ca8e8607b00749e0fc1ab41 (patch) | |
tree | 2c1e035ca006f6e98e6b9d844f3139ad386b9d21 /gdb/printcmd.c | |
parent | 4f075c06a3adbccdc2712c3e24afc7d4814149c7 (diff) | |
download | gdb-af39b1c216ffb11e6ca8e8607b00749e0fc1ab41.zip gdb-af39b1c216ffb11e6ca8e8607b00749e0fc1ab41.tar.gz gdb-af39b1c216ffb11e6ca8e8607b00749e0fc1ab41.tar.bz2 |
Disable -Wformat-nonliteral in parts of printcmd.c
commit 3322c5d9a1 ("Remove unneeded explicit .o targets") broke the
build with clang, because -Wno-format-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.
Diffstat (limited to 'gdb/printcmd.c')
-rw-r--r-- | gdb/printcmd.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/gdb/printcmd.c b/gdb/printcmd.c index 1a3d972..8c99918 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__, |