From Kaveh R. Ghazi <ghazi@caip.rutgers.edu>:
authorDaniel Jacobowitz <drow@false.org>
Sun, 31 Jul 2005 20:56:26 +0000 (20:56 +0000)
committerDaniel Jacobowitz <drow@false.org>
Sun, 31 Jul 2005 20:56:26 +0000 (20:56 +0000)
gdb/
* cli-out.c (cli_field_fmt, cli_message, out_field_fmt): Add
ATTR_FORMAT or ATTRIBUTE_FPTR_PRINTF.
* complaints.c (vcomplaint): Likewise.
* defs.h (xvasprintf, xstrvprintf, verror, vfatal)
(internal_verror, internal_vwarning, vwarning)
(deprecated_query_hook, deprecated_warning_hook)
(deprecated_readline_begin_hook): Likewise.
* disasm.c (fprintf_disasm): Likewise.
* exceptions.c (throw_it): Likewise.
* exceptions.h (throw_verror, throw_vfatal): Likewise.
* mi/mi-interp.c (mi_interp_query_hook): Likewise.
* mi/mi-out.c (mi_field_fmt, mi_message): Likewise.
* tui/tui-hooks.c (tui_query_hook): Likewise.
* tui/tui-out.c (tui_field_fmt, tui_message, out_field_fmt):
Likewise.
* ui-out.c (default_field_fmt, default_message, uo_field_fmt)
(uo_message): Likewise.
* ui-out.h (ui_out_field_fmt, ui_out_message, field_fmt_ftype)
(message_ftype): Likewise.
* utils.c (vfprintf_maybe_filtered, internal_vproblem)
(defaulted_query, printchar): Likewise.
gdb/gdbserver/
* server.h (error, fatal, warning): Add ATTR_FORMAT.

16 files changed:
gdb/ChangeLog
gdb/cli-out.c
gdb/complaints.c
gdb/defs.h
gdb/disasm.c
gdb/exceptions.c
gdb/exceptions.h
gdb/gdbserver/ChangeLog
gdb/gdbserver/server.h
gdb/mi/mi-interp.c
gdb/mi/mi-out.c
gdb/tui/tui-hooks.c
gdb/tui/tui-out.c
gdb/ui-out.c
gdb/ui-out.h
gdb/utils.c

index 0ce42aec807b552e811f742c54007692b106f4aa..4a38761c5d2e9721a0f4934a8827e6c19f57db64 100644 (file)
@@ -1,3 +1,27 @@
+2005-07-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * cli-out.c (cli_field_fmt, cli_message, out_field_fmt): Add
+       ATTR_FORMAT or ATTRIBUTE_FPTR_PRINTF.
+       * complaints.c (vcomplaint): Likewise.
+       * defs.h (xvasprintf, xstrvprintf, verror, vfatal)
+       (internal_verror, internal_vwarning, vwarning)
+       (deprecated_query_hook, deprecated_warning_hook)
+       (deprecated_readline_begin_hook): Likewise.
+       * disasm.c (fprintf_disasm): Likewise.
+       * exceptions.c (throw_it): Likewise.
+       * exceptions.h (throw_verror, throw_vfatal): Likewise.
+       * mi/mi-interp.c (mi_interp_query_hook): Likewise.
+       * mi/mi-out.c (mi_field_fmt, mi_message): Likewise.
+       * tui/tui-hooks.c (tui_query_hook): Likewise.
+       * tui/tui-out.c (tui_field_fmt, tui_message, out_field_fmt):
+       Likewise.
+       * ui-out.c (default_field_fmt, default_message, uo_field_fmt)
+       (uo_message): Likewise.
+       * ui-out.h (ui_out_field_fmt, ui_out_message, field_fmt_ftype)
+       (message_ftype): Likewise.
+       * utils.c (vfprintf_maybe_filtered, internal_vproblem)
+       (defaulted_query, printchar): Likewise.
+       
 2005-07-26  Mark Kettenis  <kettenis@gnu.org>
 
        * i386obsd-tdep.c (i386obsd_sigreturn_offset): New variable.
index 5e6fc4e98f567f8cdfb72e12ea9296a07bb8dfae..a6849181eaf9210b2981cd80945b9a905a164681 100644 (file)
@@ -1,6 +1,7 @@
 /* Output generating routines for GDB CLI.
 
-   Copyright 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+   Copyright 1999, 2000, 2002, 2003, 2005
+   Free Software Foundation, Inc.
 
    Contributed by Cygnus Solutions.
    Written by Fernando Nasser for Cygnus.
@@ -58,11 +59,12 @@ static void cli_field_string (struct ui_out *uiout, int fldno, int width,
 static void cli_field_fmt (struct ui_out *uiout, int fldno,
                           int width, enum ui_align align,
                           const char *fldname, const char *format,
-                          va_list args);
+                          va_list args) ATTR_FORMAT (printf, 6, 0);
 static void cli_spaces (struct ui_out *uiout, int numspaces);
 static void cli_text (struct ui_out *uiout, const char *string);
 static void cli_message (struct ui_out *uiout, int verbosity,
-                        const char *format, va_list args);
+                        const char *format, va_list args)
+     ATTR_FORMAT (printf, 3, 0);
 static void cli_wrap_hint (struct ui_out *uiout, char *identstring);
 static void cli_flush (struct ui_out *uiout);
 static int cli_redirect (struct ui_out *uiout, struct ui_file *outstream);
@@ -101,7 +103,7 @@ static void field_separator (void);
 
 static void out_field_fmt (struct ui_out *uiout, int fldno,
                           const char *fldname,
-                          const char *format,...);
+                          const char *format,...) ATTR_FORMAT (printf, 4, 5);
 
 /* local variables */
 
index af4be5153e99aa8bdaf3f367c523b674dc53bae1..9e44ad32cb9573472ead01e397c5c8f66000fea8 100644 (file)
@@ -1,7 +1,7 @@
 /* Support for complaint handling during symbol reading in GDB.
 
    Copyright 1990, 1991, 1992, 1993, 1995, 1998, 1999, 2000, 2002,
-   2004 Free Software Foundation, Inc.
+   2004, 2005 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -166,7 +166,7 @@ static unsigned int stop_whining = 0;
 /* Print a complaint, and link the complaint block into a chain for
    later handling.  */
 
-static void
+static void ATTR_FORMAT (printf, 4, 0)
 vcomplaint (struct complaints **c, const char *file, int line, const char *fmt,
            va_list args)
 {
index ac6e0ead5974aaf72c18df2aad8b8b15e3f6166f..7548455664f7746a63efd4f2780e0287dba32388 100644 (file)
@@ -872,12 +872,14 @@ extern void *xzalloc (size_t);
 /* Like asprintf/vasprintf but get an internal_error if the call
    fails. */
 extern void xasprintf (char **ret, const char *format, ...) ATTR_FORMAT (printf, 2, 3);
-extern void xvasprintf (char **ret, const char *format, va_list ap);
+extern void xvasprintf (char **ret, const char *format, va_list ap)
+     ATTR_FORMAT (printf, 2, 0);
 
 /* Like asprintf and vasprintf, but return the string, throw an error
    if no memory.  */
 extern char *xstrprintf (const char *format, ...) ATTR_FORMAT (printf, 1, 2);
-extern char *xstrvprintf (const char *format, va_list ap);
+extern char *xstrvprintf (const char *format, va_list ap)
+     ATTR_FORMAT (printf, 1, 0);
 
 /* Like snprintf, but throw an error if the output buffer is too small.  */
 extern int xsnprintf (char *str, size_t size, const char *format, ...)
@@ -897,24 +899,28 @@ extern char *quit_pre_print;
 
 extern char *warning_pre_print;
 
-extern NORETURN void verror (const char *fmt, va_list ap) ATTR_NORETURN;
+extern NORETURN void verror (const char *fmt, va_list ap)
+     ATTR_NORETURN ATTR_FORMAT (printf, 1, 0);
 
 extern NORETURN void error (const char *fmt, ...) ATTR_NORETURN ATTR_FORMAT (printf, 1, 2);
 
 extern NORETURN void error_stream (struct ui_file *) ATTR_NORETURN;
 
-extern NORETURN void vfatal (const char *fmt, va_list ap) ATTR_NORETURN;
+extern NORETURN void vfatal (const char *fmt, va_list ap)
+     ATTR_NORETURN ATTR_FORMAT (printf, 1, 0);
 
 extern NORETURN void fatal (const char *fmt, ...) ATTR_NORETURN ATTR_FORMAT (printf, 1, 2);
 
 extern NORETURN void internal_verror (const char *file, int line,
-                                     const char *, va_list ap) ATTR_NORETURN;
+                                     const char *, va_list ap)
+     ATTR_NORETURN ATTR_FORMAT (printf, 3, 0);
 
 extern NORETURN void internal_error (const char *file, int line,
                                     const char *, ...) ATTR_NORETURN ATTR_FORMAT (printf, 3, 4);
 
 extern void internal_vwarning (const char *file, int line,
-                              const char *, va_list ap);
+                              const char *, va_list ap)
+     ATTR_FORMAT (printf, 3, 0);
 
 extern void internal_warning (const char *file, int line,
                              const char *, ...) ATTR_FORMAT (printf, 3, 4);
@@ -923,7 +929,7 @@ extern NORETURN void nomem (long) ATTR_NORETURN;
 
 extern void warning (const char *, ...) ATTR_FORMAT (printf, 1, 2);
 
-extern void vwarning (const char *, va_list args);
+extern void vwarning (const char *, va_list args) ATTR_FORMAT (printf, 1, 0);
 
 /* List of known OS ABIs.  If you change this, make sure to update the
    table in osabi.c.  */
@@ -1092,15 +1098,18 @@ extern void (*deprecated_print_frame_info_listing_hook) (struct symtab * s,
                                                         int line, int stopline,
                                                         int noerror);
 extern struct frame_info *parse_frame_specification (char *frame_exp);
-extern int (*deprecated_query_hook) (const char *, va_list);
-extern void (*deprecated_warning_hook) (const char *, va_list);
+extern int (*deprecated_query_hook) (const char *, va_list)
+     ATTRIBUTE_FPTR_PRINTF(1,0);
+extern void (*deprecated_warning_hook) (const char *, va_list)
+     ATTRIBUTE_FPTR_PRINTF(1,0);
 extern void (*deprecated_flush_hook) (struct ui_file * stream);
 extern void (*deprecated_create_breakpoint_hook) (struct breakpoint * b);
 extern void (*deprecated_delete_breakpoint_hook) (struct breakpoint * bpt);
 extern void (*deprecated_modify_breakpoint_hook) (struct breakpoint * bpt);
 extern void (*deprecated_interactive_hook) (void);
 extern void (*deprecated_registers_changed_hook) (void);
-extern void (*deprecated_readline_begin_hook) (char *,...);
+extern void (*deprecated_readline_begin_hook) (char *, ...)
+     ATTRIBUTE_FPTR_PRINTF_1;
 extern char *(*deprecated_readline_hook) (char *);
 extern void (*deprecated_readline_end_hook) (void);
 extern void (*deprecated_register_changed_hook) (int regno);
index 4126f7262212c5c6e6e57f4dcfc8893453a76741..0a7c96c40d96a2f01d688dae79f3c4d924223048 100644 (file)
@@ -1,6 +1,7 @@
 /* Disassemble support for GDB.
 
-   Copyright 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+   Copyright 2000, 2001, 2002, 2003, 2004, 2005
+   Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -313,7 +314,7 @@ do_assembly_only (struct ui_out *uiout, struct disassemble_info * di,
 /* Initialize the disassemble info struct ready for the specified
    stream.  */
 
-static int
+static int ATTR_FORMAT (printf, 2, 3)
 fprintf_disasm (void *stream, const char *format, ...)
 {
   va_list args;
index de01266d89175f4d47dbd8a7cdf0f202359883c1..014524f88c891c3e7fd6d8fb5b8d67ddca457d71 100644 (file)
@@ -373,10 +373,7 @@ print_any_exception (struct ui_file *file, const char *prefix,
     }
 }
 
-NORETURN static void
-throw_it (enum return_reason reason, enum errors error, const char *fmt,
-         va_list ap) ATTR_NORETURN;
-NORETURN static void
+NORETURN static void ATTR_NORETURN ATTR_FORMAT (printf, 3, 0)
 throw_it (enum return_reason reason, enum errors error, const char *fmt,
          va_list ap)
 {
index c722503f837cf0e4cc4cfefd5543556241823f3a..81c03132829050df38b0c6ba438fb30238d11608 100644 (file)
@@ -160,9 +160,10 @@ extern void exception_fprintf (struct ui_file *file, struct gdb_exception e,
    Wombat.  */
 
 extern NORETURN void throw_exception (struct gdb_exception exception) ATTR_NORETURN;
-extern NORETURN void throw_verror (enum errors, const char *fmt,
-                                  va_list ap) ATTR_NORETURN;
-extern NORETURN void throw_vfatal (const char *fmt, va_list ap) ATTR_NORETURN;
+extern NORETURN void throw_verror (enum errors, const char *fmt, va_list ap)
+     ATTR_NORETURN ATTR_FORMAT (printf, 2, 0);
+extern NORETURN void throw_vfatal (const char *fmt, va_list ap)
+     ATTR_NORETURN ATTR_FORMAT (printf, 1, 0);
 extern NORETURN void throw_error (enum errors error, const char *fmt,
                                  ...) ATTR_NORETURN ATTR_FORMAT (printf, 2, 3);
 
index be0023ebab39269785c0c0cbed58e0834a435717..b19a328706c70a60b57c6151703222f406d341b8 100644 (file)
@@ -1,3 +1,7 @@
+2005-07-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * server.h (error, fatal, warning): Add ATTR_FORMAT.
+
 2005-07-13  Daniel Jacobowitz  <dan@codesourcery.com>
 
        * configure.ac: Define HAVE_LINUX_REGSETS even if PTRACE_GETREGS
index 0840de184bd81bd58deb9fa9173ee8774176467d..ebd0fea04b2a815be00b6f206125c1bcb119149a 100644 (file)
@@ -163,9 +163,9 @@ int target_signal_to_host (enum target_signal oursig);
 /* Functions from utils.c */
 
 void perror_with_name (char *string);
-void error (const char *string,...) ATTR_NORETURN;
-void fatal (const char *string,...) ATTR_NORETURN;
-void warning (const char *string,...);
+void error (const char *string,...) ATTR_NORETURN ATTR_FORMAT (printf, 1, 2);
+void fatal (const char *string,...) ATTR_NORETURN ATTR_FORMAT (printf, 1, 2);
+void warning (const char *string,...) ATTR_FORMAT (printf, 1, 2);
 
 /* Functions from the register cache definition.  */
 
index c46640db6e138769894a936853af41bf8babfe8a..cb4c49e56645ded3efd6a47bd23391160c4f274d 100644 (file)
@@ -1,6 +1,6 @@
 /* MI Interpreter Definitions and Commands for GDB, the GNU debugger.
 
-   Copyright 2002, 2003, 2003 Free Software Foundation, Inc.
+   Copyright 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -55,7 +55,8 @@ static void mi_command_loop (int mi_version);
 /* These are hooks that we put in place while doing interpreter_exec
    so we can report interesting things that happened "behind the mi's
    back" in this command */
-static int mi_interp_query_hook (const char *ctlstr, va_list ap);
+static int mi_interp_query_hook (const char *ctlstr, va_list ap)
+     ATTR_FORMAT (printf, 1, 0);
 
 static void mi3_command_loop (void);
 static void mi2_command_loop (void);
index 361cf69c6b581092a4a503830e0f142dc3a84125..98c2f1dcd29eaa4e3eb2896446df205115ef0c10 100644 (file)
@@ -1,6 +1,6 @@
 /* MI Command Set - output generating routines.
 
-   Copyright 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
+   Copyright 2000, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
 
    Contributed by Cygnus Solutions (a Red Hat company).
 
@@ -56,11 +56,12 @@ static void mi_field_string (struct ui_out *uiout, int fldno, int width,
 static void mi_field_fmt (struct ui_out *uiout, int fldno,
                          int width, enum ui_align align,
                          const char *fldname, const char *format,
-                         va_list args);
+                         va_list args) ATTR_FORMAT (printf, 6, 0);
 static void mi_spaces (struct ui_out *uiout, int numspaces);
 static void mi_text (struct ui_out *uiout, const char *string);
 static void mi_message (struct ui_out *uiout, int verbosity,
-                       const char *format, va_list args);
+                       const char *format, va_list args)
+     ATTR_FORMAT (printf, 3, 0);
 static void mi_wrap_hint (struct ui_out *uiout, char *identstring);
 static void mi_flush (struct ui_out *uiout);
 
index 91129bedcce53a6cb845ac7c5069b9fd358a046f..8c906c5ed9efc6973a26176d33b87e0cef233d8b 100644 (file)
@@ -1,6 +1,6 @@
 /* GDB hooks for TUI.
 
-   Copyright 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+   Copyright 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -70,7 +70,7 @@ tui_new_objfile_hook (struct objfile* objfile)
     tui_target_new_objfile_chain (objfile);
 }
 
-static int
+static int ATTR_FORMAT (printf, 1, 0)
 tui_query_hook (const char * msg, va_list argp)
 {
   int retval;
index 1c2af6890445383055bc770beee8c5a4db3ea0e7..546599b781c0af69b928a80da6f2b00e59000778 100644 (file)
@@ -1,7 +1,7 @@
 /* Output generating routines for GDB CLI.
 
-   Copyright 1999, 2000, 2001, 2002, 2003 Free Software Foundation,
-   Inc.
+   Copyright 1999, 2000, 2001, 2002, 2003, 2005
+   Free Software Foundation, Inc.
 
    Contributed by Cygnus Solutions.
    Written by Fernando Nasser for Cygnus.
@@ -60,11 +60,12 @@ static void tui_field_string (struct ui_out *uiout, int fldno, int width,
 static void tui_field_fmt (struct ui_out *uiout, int fldno,
                           int width, enum ui_align align,
                           const char *fldname, const char *format,
-                          va_list args);
+                          va_list args) ATTR_FORMAT (printf, 6, 0);
 static void tui_spaces (struct ui_out *uiout, int numspaces);
 static void tui_text (struct ui_out *uiout, const char *string);
 static void tui_message (struct ui_out *uiout, int verbosity,
-                        const char *format, va_list args);
+                        const char *format, va_list args)
+     ATTR_FORMAT (printf, 3, 0);
 static void tui_wrap_hint (struct ui_out *uiout, char *identstring);
 static void tui_flush (struct ui_out *uiout);
 
@@ -102,7 +103,7 @@ static void field_separator (void);
 
 static void out_field_fmt (struct ui_out *uiout, int fldno,
                           const char *fldname,
-                          const char *format,...);
+                          const char *format,...) ATTR_FORMAT (printf, 4, 5);
 
 /* local variables */
 
index f59eecc5edb17d0f080574e9e30fab7a5b7912ff..6e14d09921817ad4bd5a72aa69f30a297f4e5404 100644 (file)
@@ -1,6 +1,7 @@
 /* Output generating routines for GDB.
 
-   Copyright 1999, 2000, 2001, 2002, 2004 Free Software Foundation, Inc.
+   Copyright 1999, 2000, 2001, 2002, 2004, 2005
+   Free Software Foundation, Inc.
 
    Contributed by Cygnus Solutions.
    Written by Fernando Nasser for Cygnus.
@@ -178,12 +179,12 @@ static void default_field_fmt (struct ui_out *uiout, int fldno,
                               int width, enum ui_align align,
                               const char *fldname,
                               const char *format,
-                              va_list args);
+                              va_list args) ATTR_FORMAT (printf, 6, 0);
 static void default_spaces (struct ui_out *uiout, int numspaces);
 static void default_text (struct ui_out *uiout, const char *string);
 static void default_message (struct ui_out *uiout, int verbosity,
                             const char *format,
-                            va_list args);
+                            va_list args) ATTR_FORMAT (printf, 3, 0);
 static void default_wrap_hint (struct ui_out *uiout, char *identstring);
 static void default_flush (struct ui_out *uiout);
 
@@ -248,11 +249,13 @@ static void uo_field_string (struct ui_out *uiout, int fldno, int width,
                             const char *string);
 static void uo_field_fmt (struct ui_out *uiout, int fldno, int width,
                          enum ui_align align, const char *fldname,
-                         const char *format, va_list args);
+                         const char *format, va_list args)
+     ATTR_FORMAT (printf, 6, 0);
 static void uo_spaces (struct ui_out *uiout, int numspaces);
 static void uo_text (struct ui_out *uiout, const char *string);
 static void uo_message (struct ui_out *uiout, int verbosity,
-                       const char *format, va_list args);
+                       const char *format, va_list args)
+     ATTR_FORMAT (printf, 3, 0);
 static void uo_wrap_hint (struct ui_out *uiout, char *identstring);
 static void uo_flush (struct ui_out *uiout);
 static int uo_redirect (struct ui_out *uiout, struct ui_file *outstream);
index 5e19aff9a89bc32aa689425d7674dd4523b14889..06e56af72e4cc3bd766694daf9d90884c75698b8 100644 (file)
@@ -1,5 +1,8 @@
 /* Output generating routines for GDB.
-   Copyright 1999, 2000, 2001 Free Software Foundation, Inc.
+
+   Copyright 1999, 2000, 2001, 2002, 2003, 2005
+   Free Software Foundation, Inc.
+
    Contributed by Cygnus Solutions.
    Written by Fernando Nasser for Cygnus.
 
@@ -123,7 +126,8 @@ extern void ui_out_field_stream (struct ui_out *uiout, const char *fldname,
                                 struct ui_stream *buf);
 
 extern void ui_out_field_fmt (struct ui_out *uiout, const char *fldname,
-                             const char *format, ...);
+                             const char *format, ...)
+     ATTR_FORMAT (printf, 3, 4);
 
 extern void ui_out_field_skip (struct ui_out *uiout, const char *fldname);
 
@@ -132,7 +136,8 @@ extern void ui_out_spaces (struct ui_out *uiout, int numspaces);
 extern void ui_out_text (struct ui_out *uiout, const char *string);
 
 extern void ui_out_message (struct ui_out *uiout, int verbosity,
-                           const char *format, ...);
+                           const char *format, ...)
+     ATTR_FORMAT (printf, 3, 4);
 
 extern struct ui_stream *ui_out_stream_new (struct ui_out *uiout);
 
@@ -223,12 +228,13 @@ typedef void (field_fmt_ftype) (struct ui_out * uiout, int fldno, int width,
                                enum ui_align align,
                                const char *fldname,
                                const char *format,
-                               va_list args);
+                               va_list args) ATTRIBUTE_FPTR_PRINTF(6,0);
 typedef void (spaces_ftype) (struct ui_out * uiout, int numspaces);
 typedef void (text_ftype) (struct ui_out * uiout,
                           const char *string);
 typedef void (message_ftype) (struct ui_out * uiout, int verbosity,
-                             const char *format, va_list args);
+                             const char *format, va_list args)
+     ATTRIBUTE_FPTR_PRINTF(3,0);
 typedef void (wrap_hint_ftype) (struct ui_out * uiout, char *identstring);
 typedef void (flush_ftype) (struct ui_out * uiout);
 typedef int (redirect_ftype) (struct ui_out * uiout,
index 690f87ce931cb101bb14770b5230461093235f35..bca32a978e25187ea12c128a09e2e4e26af1fbca 100644 (file)
@@ -80,7 +80,7 @@ void (*deprecated_error_begin_hook) (void);
 /* Prototypes for local functions */
 
 static void vfprintf_maybe_filtered (struct ui_file *, const char *,
-                                    va_list, int);
+                                    va_list, int) ATTR_FORMAT (printf, 2, 0);
 
 static void fputs_maybe_filtered (const char *, struct ui_file *, int);
 
@@ -693,7 +693,7 @@ struct internal_problem
    has been reported, and assuming GDB didn't quit, the caller can
    either allow execution to resume or throw an error.  */
 
-static void
+static void ATTR_FORMAT (printf, 4, 0)
 internal_vproblem (struct internal_problem *problem,
                   const char *file, int line, const char *fmt, va_list ap)
 {
@@ -1236,7 +1236,7 @@ query (const char *ctlstr, ...)
    ARGS are the arguments passed along with the CTLSTR argument to
    printf.  */
 
-static int
+static int ATTR_FORMAT (printf, 1, 0)
 defaulted_query (const char *ctlstr, const char defchar, va_list args)
 {
   int answer;
@@ -1495,8 +1495,8 @@ parse_escape (char **string_ptr)
 
 static void
 printchar (int c, void (*do_fputs) (const char *, struct ui_file *),
-          void (*do_fprintf) (struct ui_file *, const char *, ...),
-          struct ui_file *stream, int quoter)
+          void (*do_fprintf) (struct ui_file *, const char *, ...)
+          ATTRIBUTE_FPTR_PRINTF_2, struct ui_file *stream, int quoter)
 {
 
   c &= 0xFF;                   /* Avoid sign bit follies */