diff options
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/printcmd.c | 33 | ||||
-rw-r--r-- | include/ChangeLog | 4 | ||||
-rw-r--r-- | include/diagnostics.h | 12 |
4 files changed, 55 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 084765d..d8ca6d3 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 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__, diff --git a/include/ChangeLog b/include/ChangeLog index 63fdde6..c23c743 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 9e9d1a8..79e6779 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 */ |