diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index 7409496ce7..0696edb740 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -13374,7 +13374,7 @@ ada_exceptions_list (const char *regexp)
 /* Implement the "info exceptions" command.  */
 
 static void
-info_exceptions_command (char *regexp, int from_tty)
+info_exceptions_command (const char *regexp, int from_tty)
 {
   struct gdbarch *gdbarch = get_current_arch ();
 
diff --git a/gdb/ada-tasks.c b/gdb/ada-tasks.c
index e0070d5b9a..1d5542d5d6 100644
--- a/gdb/ada-tasks.c
+++ b/gdb/ada-tasks.c
@@ -1147,7 +1147,7 @@ print_ada_task_info (struct ui_out *uiout,
    for the given inferior (INF).  */
 
 static void
-info_task (struct ui_out *uiout, char *taskno_str, struct inferior *inf)
+info_task (struct ui_out *uiout, const char *taskno_str, struct inferior *inf)
 {
   const int taskno = value_as_long (parse_and_eval (taskno_str));
   struct ada_task_info *task_info;
@@ -1237,7 +1237,7 @@ info_task (struct ui_out *uiout, char *taskno_str, struct inferior *inf)
    Does nothing if the program doesn't use Ada tasking.  */
 
 static void
-info_tasks_command (char *arg, int from_tty)
+info_tasks_command (const char *arg, int from_tty)
 {
   struct ui_out *uiout = current_uiout;
 
diff --git a/gdb/auto-load.c b/gdb/auto-load.c
index 9b1111d066..a058c82585 100644
--- a/gdb/auto-load.c
+++ b/gdb/auto-load.c
@@ -1298,7 +1298,7 @@ print_scripts (VEC (loaded_script_ptr) *scripts)
    PATTERN.  FROM_TTY is the usual GDB boolean for user interactivity.  */
 
 void
-auto_load_info_scripts (char *pattern, int from_tty,
+auto_load_info_scripts (const char *pattern, int from_tty,
 			const struct extension_language_defn *language)
 {
   struct ui_out *uiout = current_uiout;
@@ -1384,7 +1384,7 @@ auto_load_info_scripts (char *pattern, int from_tty,
 /* Wrapper for "info auto-load gdb-scripts".  */
 
 static void
-info_auto_load_gdb_scripts (char *pattern, int from_tty)
+info_auto_load_gdb_scripts (const char *pattern, int from_tty)
 {
   auto_load_info_scripts (pattern, from_tty, &extension_language_gdb);
 }
diff --git a/gdb/auto-load.h b/gdb/auto-load.h
index f8b5b0d7a7..f02a9043b1 100644
--- a/gdb/auto-load.h
+++ b/gdb/auto-load.h
@@ -37,7 +37,7 @@ extern void auto_load_objfile_script (struct objfile *objfile,
 				      const struct extension_language_defn *);
 extern void load_auto_scripts_for_objfile (struct objfile *objfile);
 extern char auto_load_info_scripts_pattern_nl[];
-extern void auto_load_info_scripts (char *pattern, int from_tty,
+extern void auto_load_info_scripts (const char *pattern, int from_tty,
 				    const struct extension_language_defn *);
 
 extern struct cmd_list_element **auto_load_set_cmdlist_get (void);
diff --git a/gdb/auxv.c b/gdb/auxv.c
index 95cbeecd79..dfba94b4e1 100644
--- a/gdb/auxv.c
+++ b/gdb/auxv.c
@@ -552,7 +552,7 @@ fprint_target_auxv (struct ui_file *file, struct target_ops *ops)
 }
 
 static void
-info_auxv_command (char *cmd, int from_tty)
+info_auxv_command (const char *cmd, int from_tty)
 {
   if (! target_has_stack)
     error (_("The program has no auxiliary information now."));
diff --git a/gdb/avr-tdep.c b/gdb/avr-tdep.c
index 9aca8c32e5..f4ce2706d4 100644
--- a/gdb/avr-tdep.c
+++ b/gdb/avr-tdep.c
@@ -1546,7 +1546,7 @@ avr_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
    All io registers are 8-bit.  */
 
 static void
-avr_io_reg_read_command (char *args, int from_tty)
+avr_io_reg_read_command (const char *args, int from_tty)
 {
   LONGEST bufsiz = 0;
   gdb_byte *buf;
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index c05a2960ac..e0a510e61d 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -161,8 +161,6 @@ static int breakpoint_location_address_range_overlap (struct bp_location *,
 						      struct address_space *,
 						      CORE_ADDR, int);
 
-static void info_watchpoints_command (char *, int);
-
 static int remove_breakpoint (struct bp_location *);
 static int remove_breakpoint_1 (struct bp_location *, enum remove_bp_reason);
 
@@ -228,8 +226,6 @@ static int is_hardware_watchpoint (const struct breakpoint *bpt);
 
 static void insert_breakpoint_locations (void);
 
-static void info_tracepoints_command (char *, int);
-
 static void enable_trace_command (char *, int);
 
 static void disable_trace_command (char *, int);
@@ -6723,16 +6719,8 @@ info_breakpoints_command (const char *args, int from_tty)
   default_collect_info ();
 }
 
-/* Temporary non-const overload.  */
-
-static void
-info_breakpoints_command (char *args, int from_tty)
-{
-  info_breakpoints_command ((const char *) args, from_tty);
-}
-
 static void
-info_watchpoints_command (char *args, int from_tty)
+info_watchpoints_command (const char *args, int from_tty)
 {
   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
   struct ui_out *uiout = current_uiout;
@@ -14809,7 +14797,7 @@ create_tracepoint_from_upload (struct uploaded_tp *utp)
    omitted.  */
 
 static void
-info_tracepoints_command (char *args, int from_tty)
+info_tracepoints_command (const char *args, int from_tty)
 {
   struct ui_out *uiout = current_uiout;
   int num_printed;
diff --git a/gdb/cli/cli-cmds.c b/gdb/cli/cli-cmds.c
index be022d3215..ccfedb2a5f 100644
--- a/gdb/cli/cli-cmds.c
+++ b/gdb/cli/cli-cmds.c
@@ -207,14 +207,6 @@ show_command (const char *arg, int from_tty)
   cmd_show_list (showlist, from_tty, "");
 }
 
-/* A temporary non-const overload of show_command.  */
-
-static void
-show_command (char *arg, int from_tty)
-{
-  cmd_show_list (showlist, from_tty, "");
-}
-
 
 /* Provide documentation on command or list given by COMMAND.  FROM_TTY
    is ignored.  */
diff --git a/gdb/cli/cli-decode.c b/gdb/cli/cli-decode.c
index e9baf38d13..0c555268b3 100644
--- a/gdb/cli/cli-decode.c
+++ b/gdb/cli/cli-decode.c
@@ -915,7 +915,7 @@ delete_cmd (const char *name, struct cmd_list_element **list,
 /* Add an element to the list of info subcommands.  */
 
 struct cmd_list_element *
-add_info (const char *name, cmd_cfunc_ftype *fun, const char *doc)
+add_info (const char *name, cmd_const_cfunc_ftype *fun, const char *doc)
 {
   return add_cmd (name, class_info, fun, doc, &infolist);
 }
diff --git a/gdb/command.h b/gdb/command.h
index c3348bcede..258f7f7de2 100644
--- a/gdb/command.h
+++ b/gdb/command.h
@@ -268,7 +268,7 @@ extern struct cmd_list_element *add_com_suppress_notification
 			int *supress_notification);
 
 extern struct cmd_list_element *add_info (const char *,
-					  cmd_cfunc_ftype *fun,
+					  cmd_const_cfunc_ftype *fun,
 					  const char *);
 
 extern struct cmd_list_element *add_info_alias (const char *, const char *,
diff --git a/gdb/copying.awk b/gdb/copying.awk
index 2a71939a6f..1cd596a564 100644
--- a/gdb/copying.awk
+++ b/gdb/copying.awk
@@ -10,12 +10,12 @@ BEGIN	{
 	  print "#include \"command.h\""
 	  print "#include \"gdbcmd.h\""
 	  print ""
-	  print "static void show_copying_command (char *, int);"
+	  print "static void show_copying_command (const char *, int);"
 	  print ""
-	  print "static void show_warranty_command (char *, int);"
+	  print "static void show_warranty_command (const char *, int);"
 	  print ""
 	  print "static void";
-	  print "show_copying_command (char *ignore, int from_tty)";
+	  print "show_copying_command (const char *ignore, int from_tty)";
 	  print "{";
 	}
 NR == 1,/^[ 	]*15\. Disclaimer of Warranty\.[ 	]*$/	{
@@ -35,7 +35,7 @@ NR == 1,/^[ 	]*15\. Disclaimer of Warranty\.[ 	]*$/	{
 	  print "}";
 	  print "";
 	  print "static void";
-	  print "show_warranty_command (char *ignore, int from_tty)";
+	  print "show_warranty_command (const char *ignore, int from_tty)";
 	  print "{";
 	}
 /^[ 	]*15\. Disclaimer of Warranty\.[ 	]*$/, /^[ 	]*END OF TERMS AND CONDITIONS[ 	]*$/{  
diff --git a/gdb/copying.c b/gdb/copying.c
index db024627cd..8e4077ccb9 100644
--- a/gdb/copying.c
+++ b/gdb/copying.c
@@ -6,12 +6,12 @@
 #include "command.h"
 #include "gdbcmd.h"
 
-static void show_copying_command (char *, int);
+static void show_copying_command (const char *, int);
 
-static void show_warranty_command (char *, int);
+static void show_warranty_command (const char *, int);
 
 static void
-show_copying_command (char *ignore, int from_tty)
+show_copying_command (const char *ignore, int from_tty)
 {
   printf_filtered ("                    GNU GENERAL PUBLIC LICENSE\n");
   printf_filtered ("                       Version 3, 29 June 2007\n");
@@ -604,7 +604,7 @@ show_copying_command (char *ignore, int from_tty)
 }
 
 static void
-show_warranty_command (char *ignore, int from_tty)
+show_warranty_command (const char *ignore, int from_tty)
 {
   printf_filtered ("  15. Disclaimer of Warranty.\n");
   printf_filtered ("\n");
diff --git a/gdb/cp-support.c b/gdb/cp-support.c
index 37b2b4af97..2a6d42af6d 100644
--- a/gdb/cp-support.c
+++ b/gdb/cp-support.c
@@ -1616,7 +1616,7 @@ first_component_command (const char *arg, int from_tty)
 /* Implement "info vtbl".  */
 
 static void
-info_vtbl_command (char *arg, int from_tty)
+info_vtbl_command (const char *arg, int from_tty)
 {
   struct value *value;
 
diff --git a/gdb/darwin-nat-info.c b/gdb/darwin-nat-info.c
index fc9aeaaad7..44782bfa78 100644
--- a/gdb/darwin-nat-info.c
+++ b/gdb/darwin-nat-info.c
@@ -66,7 +66,7 @@
 #define port_type_array_t mach_port_array_t
 
 static void
-info_mach_tasks_command (char *args, int from_tty)
+info_mach_tasks_command (const char *args, int from_tty)
 {
   int sysControl[4];
   int count, index;
@@ -109,7 +109,7 @@ info_mach_tasks_command (char *args, int from_tty)
 }
 
 static task_t
-get_task_from_args (char *args)
+get_task_from_args (const char *args)
 {
   task_t task;
   char *eptr;
@@ -132,7 +132,7 @@ get_task_from_args (char *args)
 }
 
 static void
-info_mach_task_command (char *args, int from_tty)
+info_mach_task_command (const char *args, int from_tty)
 {
   union
   {
@@ -189,7 +189,7 @@ info_mach_task_command (char *args, int from_tty)
 }
 
 static void
-info_mach_ports_command (char *args, int from_tty)
+info_mach_ports_command (const char *args, int from_tty)
 {
   port_name_array_t names;
   port_type_array_t types;
@@ -326,7 +326,7 @@ darwin_debug_port_info (task_t task, mach_port_t port)
 }
 
 static void
-info_mach_port_command (char *args, int from_tty)
+info_mach_port_command (const char *args, int from_tty)
 {
   task_t task;
   mach_port_t port;
@@ -338,7 +338,7 @@ info_mach_port_command (char *args, int from_tty)
 }
 
 static void
-info_mach_threads_command (char *args, int from_tty)
+info_mach_threads_command (const char *args, int from_tty)
 {
   thread_array_t threads;
   unsigned int thread_count;
@@ -365,7 +365,7 @@ info_mach_threads_command (char *args, int from_tty)
 }
 
 static void
-info_mach_thread_command (char *args, int from_tty)
+info_mach_thread_command (const char *args, int from_tty)
 {
   union
   {
@@ -696,7 +696,7 @@ darwin_debug_region (task_t task, mach_vm_address_t address)
 }
 
 static void
-info_mach_regions_command (char *args, int from_tty)
+info_mach_regions_command (const char *args, int from_tty)
 {
   task_t task;
 
@@ -708,7 +708,7 @@ info_mach_regions_command (char *args, int from_tty)
 }
 
 static void
-info_mach_regions_recurse_command (char *args, int from_tty)
+info_mach_regions_recurse_command (const char *args, int from_tty)
 {
   task_t task;
 
@@ -720,7 +720,7 @@ info_mach_regions_recurse_command (char *args, int from_tty)
 }
 
 static void
-info_mach_region_command (char *exp, int from_tty)
+info_mach_region_command (const char *exp, int from_tty)
 {
   struct value *val;
   mach_vm_address_t address;
@@ -792,7 +792,7 @@ disp_exception (const darwin_exception_info *info)
 }
 
 static void
-info_mach_exceptions_command (char *args, int from_tty)
+info_mach_exceptions_command (const char *args, int from_tty)
 {
   int i;
   task_t task;
diff --git a/gdb/dcache.c b/gdb/dcache.c
index c8832fd36b..e7b1e1440e 100644
--- a/gdb/dcache.c
+++ b/gdb/dcache.c
@@ -125,8 +125,6 @@ static int dcache_read_line (DCACHE *dcache, struct dcache_block *db);
 
 static struct dcache_block *dcache_alloc (DCACHE *dcache, CORE_ADDR addr);
 
-static void info_dcache_command (char *exp, int tty);
-
 static int dcache_enabled_p = 0; /* OBSOLETE */
 
 static void
@@ -585,7 +583,7 @@ dcache_print_line (DCACHE *dcache, int index)
 /* Parse EXP and show the info about DCACHE.  */
 
 static void
-dcache_info_1 (DCACHE *dcache, char *exp)
+dcache_info_1 (DCACHE *dcache, const char *exp)
 {
   splay_tree_node n;
   int i, refcount;
@@ -640,7 +638,7 @@ dcache_info_1 (DCACHE *dcache, char *exp)
 }
 
 static void
-info_dcache_command (char *exp, int tty)
+info_dcache_command (const char *exp, int tty)
 {
   dcache_info_1 (target_dcache_get (), exp);
 }
diff --git a/gdb/f-valprint.c b/gdb/f-valprint.c
index 5bcab9d525..c9ece0d5c0 100644
--- a/gdb/f-valprint.c
+++ b/gdb/f-valprint.c
@@ -34,7 +34,6 @@
 #include "block.h"
 #include "dictionary.h"
 
-static void info_common_command (char *, int);
 static void f77_get_dynamic_length_of_aggregate (struct type *);
 
 int f77_array_offset_tbl[MAX_FORTRAN_DIMS + 1][2];
@@ -433,7 +432,7 @@ info_common_command_for_block (const struct block *block, const char *comname,
    given name.  */
 
 static void
-info_common_command (char *comname, int from_tty)
+info_common_command (const char *comname, int from_tty)
 {
   struct frame_info *fi;
   const struct block *block;
diff --git a/gdb/frame.h b/gdb/frame.h
index ce9d0bbefe..b56a164a85 100644
--- a/gdb/frame.h
+++ b/gdb/frame.h
@@ -784,9 +784,9 @@ extern void read_frame_arg (struct symbol *sym, struct frame_info *frame,
 extern void read_frame_local (struct symbol *sym, struct frame_info *frame,
 			      struct frame_arg *argp);
 
-extern void info_args_command (char *, int);
+extern void info_args_command (const char *, int);
 
-extern void info_locals_command (char *, int);
+extern void info_locals_command (const char *, int);
 
 extern void return_command (const char *, int);
 
diff --git a/gdb/gnu-nat.c b/gdb/gnu-nat.c
index 7cb6e4a0dd..0095d729f9 100644
--- a/gdb/gnu-nat.c
+++ b/gdb/gnu-nat.c
@@ -3152,31 +3152,31 @@ info_port_rights (const char *args, mach_port_type_t only)
 }
 
 static void
-info_send_rights_cmd (char *args, int from_tty)
+info_send_rights_cmd (const char *args, int from_tty)
 {
   info_port_rights (args, MACH_PORT_TYPE_SEND);
 }
 
 static void
-info_recv_rights_cmd (char *args, int from_tty)
+info_recv_rights_cmd (const char *args, int from_tty)
 {
   info_port_rights (args, MACH_PORT_TYPE_RECEIVE);
 }
 
 static void
-info_port_sets_cmd (char *args, int from_tty)
+info_port_sets_cmd (const char *args, int from_tty)
 {
   info_port_rights (args, MACH_PORT_TYPE_PORT_SET);
 }
 
 static void
-info_dead_names_cmd (char *args, int from_tty)
+info_dead_names_cmd (const char *args, int from_tty)
 {
   info_port_rights (args, MACH_PORT_TYPE_DEAD_NAME);
 }
 
 static void
-info_port_rights_cmd (char *args, int from_tty)
+info_port_rights_cmd (const char *args, int from_tty)
 {
   info_port_rights (args, ~0);
 }
diff --git a/gdb/infcmd.c b/gdb/infcmd.c
index f042ec2b8b..7b6ac9e84e 100644
--- a/gdb/infcmd.c
+++ b/gdb/infcmd.c
@@ -62,14 +62,8 @@
 
 /* Local functions: */
 
-static void info_registers_command (char *, int);
-
 static void until_next_command (int);
 
-static void info_float_command (char *, int);
-
-static void info_program_command (char *, int);
-
 static void step_1 (int, int, const char *);
 
 #define ERROR_NO_INFERIOR \
@@ -2083,7 +2077,7 @@ finish_command (const char *arg, int from_tty)
 
 
 static void
-info_program_command (char *args, int from_tty)
+info_program_command (const char *args, int from_tty)
 {
   bpstat bs;
   int num, stat;
@@ -2416,7 +2410,7 @@ default_print_registers_info (struct gdbarch *gdbarch,
 }
 
 void
-registers_info (char *addr_exp, int fpregs)
+registers_info (const char *addr_exp, int fpregs)
 {
   struct frame_info *frame;
   struct gdbarch *gdbarch;
@@ -2435,7 +2429,7 @@ registers_info (char *addr_exp, int fpregs)
 
   while (*addr_exp != '\0')
     {
-      char *start;
+      const char *start;
       const char *end;
 
       /* Skip leading white space.  */
@@ -2524,13 +2518,13 @@ registers_info (char *addr_exp, int fpregs)
 }
 
 static void
-info_all_registers_command (char *addr_exp, int from_tty)
+info_all_registers_command (const char *addr_exp, int from_tty)
 {
   registers_info (addr_exp, 1);
 }
 
 static void
-info_registers_command (char *addr_exp, int from_tty)
+info_registers_command (const char *addr_exp, int from_tty)
 {
   registers_info (addr_exp, 0);
 }
@@ -2565,7 +2559,7 @@ print_vector_info (struct ui_file *file,
 }
 
 static void
-info_vector_command (char *args, int from_tty)
+info_vector_command (const char *args, int from_tty)
 {
   if (!target_has_registers)
     error (_("The program has no registers now."));
@@ -3106,7 +3100,7 @@ default_print_float_info (struct gdbarch *gdbarch, struct ui_file *file,
 }
 
 static void
-info_float_command (char *args, int from_tty)
+info_float_command (const char *args, int from_tty)
 {
   struct frame_info *frame;
 
diff --git a/gdb/inferior.c b/gdb/inferior.c
index 0c60d30fa2..bcac98180a 100644
--- a/gdb/inferior.c
+++ b/gdb/inferior.c
@@ -529,7 +529,7 @@ print_selected_inferior (struct ui_out *uiout)
    printed.  */
 
 static void
-print_inferior (struct ui_out *uiout, char *requested_inferiors)
+print_inferior (struct ui_out *uiout, const char *requested_inferiors)
 {
   struct inferior *inf;
   int inf_count = 0;
@@ -718,7 +718,7 @@ inferior_command (const char *args, int from_tty)
 /* Print information about currently known inferiors.  */
 
 static void
-info_inferiors_command (char *args, int from_tty)
+info_inferiors_command (const char *args, int from_tty)
 {
   print_inferior (current_uiout, args);
 }
diff --git a/gdb/inferior.h b/gdb/inferior.h
index f70c0accc5..37252a695c 100644
--- a/gdb/inferior.h
+++ b/gdb/inferior.h
@@ -160,7 +160,7 @@ extern void set_inferior_args (const char *);
 
 extern void set_inferior_args_vector (int, char **);
 
-extern void registers_info (char *, int);
+extern void registers_info (const char *, int);
 
 extern void continue_1 (int all_threads);
 
diff --git a/gdb/inflow.c b/gdb/inflow.c
index d54b8f8345..8fd12a032a 100644
--- a/gdb/inflow.c
+++ b/gdb/inflow.c
@@ -534,7 +534,7 @@ copy_terminal_info (struct inferior *to, struct inferior *from)
 }
 
 void
-info_terminal_command (char *arg, int from_tty)
+info_terminal_command (const char *arg, int from_tty)
 {
   target_terminal::info (arg, from_tty);
 }
diff --git a/gdb/infrun.c b/gdb/infrun.c
index 98a11a3957..e5e938d19d 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -70,8 +70,6 @@
 
 /* Prototypes for local functions */
 
-static void info_signals_command (char *, int);
-
 static void sig_print_info (enum gdb_signal);
 
 static void sig_print_header (void);
@@ -8678,7 +8676,7 @@ Use \"info signals\" for a list of symbolic signals."));
    targets, all signals should be in the signal tables).  */
 
 static void
-info_signals_command (char *signum_exp, int from_tty)
+info_signals_command (const char *signum_exp, int from_tty)
 {
   enum gdb_signal oursig;
 
diff --git a/gdb/linux-fork.c b/gdb/linux-fork.c
index c60d90c3e5..f55f743ed1 100644
--- a/gdb/linux-fork.c
+++ b/gdb/linux-fork.c
@@ -571,7 +571,7 @@ Please switch to another checkpoint before detaching the current one"));
 /* Print information about currently known checkpoints.  */
 
 static void
-info_checkpoints_command (char *arg, int from_tty)
+info_checkpoints_command (const char *arg, int from_tty)
 {
   struct gdbarch *gdbarch = get_current_arch ();
   struct symtab_and_line sal;
diff --git a/gdb/macrocmd.c b/gdb/macrocmd.c
index 2bb8705fd6..0ec8f82287 100644
--- a/gdb/macrocmd.c
+++ b/gdb/macrocmd.c
@@ -188,19 +188,19 @@ print_macro_definition (const char *name,
 
 /* The implementation of the `info macro' command.  */
 static void
-info_macro_command (char *args, int from_tty)
+info_macro_command (const char *args, int from_tty)
 {
   struct macro_scope *ms = NULL;
   struct cleanup *cleanup_chain;
-  char *name;
+  const char *name;
   int show_all_macros_named = 0;
-  char *arg_start = args;
+  const char *arg_start = args;
   int processing_args = 1;
 
   while (processing_args
 	 && arg_start && *arg_start == '-' && *arg_start != '\0')
     {
-      char *p = skip_to_space (arg_start);
+      const char *p = skip_to_space (arg_start);
 
       if (strncmp (arg_start, "-a", p - arg_start) == 0
 	  || strncmp (arg_start, "-all", p - arg_start) == 0)
@@ -212,10 +212,9 @@ info_macro_command (char *args, int from_tty)
 	processing_args = 0;
       else
 	{
-	  /* Relies on modified 'args' not making it in to history */
-	  *p = '\0';
-	  error (_("Unrecognized option '%s' to info macro command.  "
-		   "Try \"help info macro\"."), arg_start);
+	  error (_("Unrecognized option '%.*s' to info macro command.  "
+		   "Try \"help info macro\"."),
+		 int (p - arg_start), arg_start);
 	}
 
         arg_start = skip_spaces (p);
@@ -270,7 +269,7 @@ info_macro_command (char *args, int from_tty)
 
 /* Implementation of the "info macros" command. */
 static void
-info_macros_command (char *args, int from_tty)
+info_macros_command (const char *args, int from_tty)
 {
   struct macro_scope *ms = NULL;
   struct cleanup *cleanup_chain = make_cleanup (free_current_contents, &ms);
diff --git a/gdb/memattr.c b/gdb/memattr.c
index 89adce85f4..cd323e9732 100644
--- a/gdb/memattr.c
+++ b/gdb/memattr.c
@@ -408,7 +408,7 @@ mem_command (const char *args, int from_tty)
 
 
 static void
-info_mem_command (char *args, int from_tty)
+info_mem_command (const char *args, int from_tty)
 {
   struct mem_region *m;
   struct mem_attrib *attrib;
diff --git a/gdb/nto-procfs.c b/gdb/nto-procfs.c
index cabec0fa70..9fd54159b6 100644
--- a/gdb/nto-procfs.c
+++ b/gdb/nto-procfs.c
@@ -359,7 +359,7 @@ do_closedir_cleanup (void *dir)
 }
 
 static void
-procfs_pidlist (char *args, int from_tty)
+procfs_pidlist (const char *args, int from_tty)
 {
   DIR *dp = NULL;
   struct dirent *dirp = NULL;
@@ -461,7 +461,7 @@ procfs_pidlist (char *args, int from_tty)
 }
 
 static void
-procfs_meminfo (char *args, int from_tty)
+procfs_meminfo (const char *args, int from_tty)
 {
   procfs_mapinfo *mapinfos = NULL;
   static int num_mapinfos = 0;
diff --git a/gdb/objc-lang.c b/gdb/objc-lang.c
index 43abf13bc3..eb9da74e7c 100644
--- a/gdb/objc-lang.c
+++ b/gdb/objc-lang.c
@@ -561,7 +561,7 @@ compare_selectors (const void *a, const void *b)
  */
 
 static void
-info_selectors_command (char *regexp, int from_tty)
+info_selectors_command (const char *regexp, int from_tty)
 {
   struct objfile	*objfile;
   struct minimal_symbol *msymbol;
@@ -723,7 +723,7 @@ compare_classes (const void *a, const void *b)
  */
 
 static void
-info_classes_command (char *regexp, int from_tty)
+info_classes_command (const char *regexp, int from_tty)
 {
   struct objfile	*objfile;
   struct minimal_symbol *msymbol;
diff --git a/gdb/osdata.c b/gdb/osdata.c
index 9da3d07cdb..14e24c6266 100644
--- a/gdb/osdata.c
+++ b/gdb/osdata.c
@@ -409,7 +409,7 @@ info_osdata (const char *type)
 }
 
 static void
-info_osdata_command (char *arg, int from_tty)
+info_osdata_command (const char *arg, int from_tty)
 {
   info_osdata (arg);
 }
diff --git a/gdb/printcmd.c b/gdb/printcmd.c
index 11f666dd28..f01ab47494 100644
--- a/gdb/printcmd.c
+++ b/gdb/printcmd.c
@@ -1286,7 +1286,7 @@ set_command (const char *exp, int from_tty)
 }
 
 static void
-info_symbol_command (char *arg, int from_tty)
+info_symbol_command (const char *arg, int from_tty)
 {
   struct minimal_symbol *msymbol;
   struct objfile *objfile;
@@ -1377,7 +1377,7 @@ info_symbol_command (char *arg, int from_tty)
 }
 
 static void
-info_address_command (char *exp, int from_tty)
+info_address_command (const char *exp, int from_tty)
 {
   struct gdbarch *gdbarch;
   int regno;
@@ -2043,7 +2043,7 @@ disable_current_display (void)
 }
 
 static void
-info_display_command (char *ignore, int from_tty)
+info_display_command (const char *ignore, int from_tty)
 {
   struct display *d;
 
diff --git a/gdb/python/py-auto-load.c b/gdb/python/py-auto-load.c
index 32cb7e92b7..336955a678 100644
--- a/gdb/python/py-auto-load.c
+++ b/gdb/python/py-auto-load.c
@@ -52,7 +52,7 @@ gdbpy_auto_load_enabled (const struct extension_language_defn *extlang)
 /* Wrapper for "info auto-load python-scripts".  */
 
 static void
-info_auto_load_python_scripts (char *pattern, int from_tty)
+info_auto_load_python_scripts (const char *pattern, int from_tty)
 {
   auto_load_info_scripts (pattern, from_tty, &extension_language_python);
 }
diff --git a/gdb/reverse.c b/gdb/reverse.c
index 0d1c6e6549..2ca8917258 100644
--- a/gdb/reverse.c
+++ b/gdb/reverse.c
@@ -305,7 +305,7 @@ bookmark_1 (int bnum)
 /* Implement "info bookmarks" command.  */
 
 static void
-info_bookmarks_command (char *args, int from_tty)
+info_bookmarks_command (const char *args, int from_tty)
 {
   if (!bookmark_chain)
     printf_filtered (_("No bookmarks.\n"));
diff --git a/gdb/ser-go32.c b/gdb/ser-go32.c
index e3528951b4..07f22b5c78 100644
--- a/gdb/ser-go32.c
+++ b/gdb/ser-go32.c
@@ -899,7 +899,7 @@ gdb_pipe (int pdes[2])
 }
 
 static void
-info_serial_command (char *arg, int from_tty)
+info_serial_command (const char *arg, int from_tty)
 {
   struct dos_ttystate *port;
 #ifdef DOS_STATS
diff --git a/gdb/skip.c b/gdb/skip.c
index af60eb7404..20fca78433 100644
--- a/gdb/skip.c
+++ b/gdb/skip.c
@@ -353,7 +353,7 @@ skip_command (const char *arg, int from_tty)
 }
 
 static void
-info_skip_command (char *arg, int from_tty)
+info_skip_command (const char *arg, int from_tty)
 {
   int num_printable_entries = 0;
   struct value_print_options opts;
diff --git a/gdb/solib.c b/gdb/solib.c
index c70b9d8193..b63bb9d495 100644
--- a/gdb/solib.c
+++ b/gdb/solib.c
@@ -1045,7 +1045,7 @@ solib_add (const char *pattern, int from_tty, int readsyms)
    all.  */
 
 static void
-info_sharedlibrary_command (char *pattern, int from_tty)
+info_sharedlibrary_command (const char *pattern, int from_tty)
 {
   struct so_list *so = NULL;	/* link map state variable */
   int so_missing_debug_info = 0;
diff --git a/gdb/source.c b/gdb/source.c
index e67209e201..cefc612f3e 100644
--- a/gdb/source.c
+++ b/gdb/source.c
@@ -52,10 +52,6 @@
 
 static int get_filename_and_charpos (struct symtab *, char **);
 
-static void info_line_command (char *, int);
-
-static void info_source_command (char *, int);
-
 /* Path of directories to search for source files.
    Same format as the PATH environment variable's value.  */
 
@@ -639,7 +635,7 @@ add_path (const char *dirname, char **which_path, int parse_separators)
 
 
 static void
-info_source_command (char *ignore, int from_tty)
+info_source_command (const char *ignore, int from_tty)
 {
   struct symtab *s = current_source_symtab;
   struct compunit_symtab *cust;
@@ -1480,7 +1476,7 @@ print_source_lines (struct symtab *s, int line, int stopline,
 /* Print info on range of pc's in a specified line.  */
 
 static void
-info_line_command (char *arg, int from_tty)
+info_line_command (const char *arg, int from_tty)
 {
   CORE_ADDR start_pc, end_pc;
 
diff --git a/gdb/stack.c b/gdb/stack.c
index 946a2e243b..5e6c8ed20e 100644
--- a/gdb/stack.c
+++ b/gdb/stack.c
@@ -1380,7 +1380,7 @@ parse_frame_specification (const char *frame_exp, int *selected_frame_p)
    ADDR_EXP.  Absolutely all information in the frame is printed.  */
 
 static void
-info_frame_command (char *addr_exp, int from_tty)
+info_frame_command (const char *addr_exp, int from_tty)
 {
   struct frame_info *fi;
   struct symbol *func;
@@ -1903,14 +1903,6 @@ backtrace_command (const char *arg, int from_tty)
 		       no_filters >= 0 /* no frame-filters */, from_tty);
 }
 
-/* Temporary non-const overload.  */
-
-static void
-backtrace_command (char *arg, int from_tty)
-{
-  backtrace_command ((const char *) arg, from_tty);
-}
-
 /* Iterate over the local variables of a block B, calling CB with
    CB_DATA.  */
 
@@ -2114,7 +2106,7 @@ print_frame_local_vars (struct frame_info *frame, int num_tabs,
 }
 
 void
-info_locals_command (char *args, int from_tty)
+info_locals_command (const char *args, int from_tty)
 {
   print_frame_local_vars (get_selected_frame (_("No frame selected.")),
 			  0, gdb_stdout);
@@ -2196,7 +2188,7 @@ print_frame_arg_vars (struct frame_info *frame, struct ui_file *stream)
 }
 
 void
-info_args_command (char *ignore, int from_tty)
+info_args_command (const char *ignore, int from_tty)
 {
   print_frame_arg_vars (get_selected_frame (_("No frame selected.")),
 			gdb_stdout);
diff --git a/gdb/symfile.c b/gdb/symfile.c
index a7d8553bb0..3e96ae6f83 100644
--- a/gdb/symfile.c
+++ b/gdb/symfile.c
@@ -101,8 +101,6 @@ static int simple_read_overlay_table (void);
 
 static int simple_overlay_update_1 (struct obj_section *);
 
-static void info_ext_lang_command (char *args, int from_tty);
-
 static void symfile_find_segment_sections (struct objfile *objfile);
 
 /* List of all available sym_fns.  On gdb startup, each object file reader
@@ -2734,7 +2732,7 @@ set_ext_lang_command (char *args, int from_tty, struct cmd_list_element *e)
 }
 
 static void
-info_ext_lang_command (char *args, int from_tty)
+info_ext_lang_command (const char *args, int from_tty)
 {
   int i;
   filename_language *entry;
diff --git a/gdb/symtab.c b/gdb/symtab.c
index f4deace2fd..c844617c7e 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -4033,7 +4033,7 @@ output_partial_symbol_filename (const char *filename, const char *fullname,
 }
 
 static void
-info_sources_command (char *ignore, int from_tty)
+info_sources_command (const char *ignore, int from_tty)
 {
   struct compunit_symtab *cu;
   struct symtab *s;
@@ -4485,23 +4485,15 @@ info_variables_command (const char *regexp, int from_tty)
   symtab_symbol_info (regexp, VARIABLES_DOMAIN, from_tty);
 }
 
-/* Temporary non-const overload.  */
-
-static void
-info_variables_command (char *regexp, int from_tty)
-{
-  symtab_symbol_info (regexp, VARIABLES_DOMAIN, from_tty);
-}
-
 static void
-info_functions_command (char *regexp, int from_tty)
+info_functions_command (const char *regexp, int from_tty)
 {
   symtab_symbol_info (regexp, FUNCTIONS_DOMAIN, from_tty);
 }
 
 
 static void
-info_types_command (char *regexp, int from_tty)
+info_types_command (const char *regexp, int from_tty)
 {
   symtab_symbol_info (regexp, TYPES_DOMAIN, from_tty);
 }
diff --git a/gdb/target.c b/gdb/target.c
index d89d0558ec..8a3cb6e555 100644
--- a/gdb/target.c
+++ b/gdb/target.c
@@ -48,8 +48,6 @@
 #include <algorithm>
 #include "byte-vector.h"
 
-static void info_target_command (char *, int);
-
 static void generic_tls_error (void) ATTRIBUTE_NORETURN;
 
 static void default_terminal_info (struct target_ops *, const char *, int);
@@ -2026,7 +2024,7 @@ target_remove_breakpoint (struct gdbarch *gdbarch,
 }
 
 static void
-info_target_command (char *args, int from_tty)
+info_target_command (const char *args, int from_tty)
 {
   struct target_ops *t;
   int has_all_mem = 0;
diff --git a/gdb/thread.c b/gdb/thread.c
index df04b4ed6a..55f2b38c17 100644
--- a/gdb/thread.c
+++ b/gdb/thread.c
@@ -62,7 +62,6 @@ static int threads_executing;
 
 static void thread_apply_all_command (char *, int);
 static int thread_alive (struct thread_info *);
-static void info_threads_command (char *, int);
 
 /* RAII type used to increase / decrease the refcount of each thread
    in a given list of threads.  */
@@ -1197,7 +1196,7 @@ should_print_thread (const char *requested_threads, int default_inf_num,
    thread ids.  */
 
 static void
-print_thread_info_1 (struct ui_out *uiout, char *requested_threads,
+print_thread_info_1 (struct ui_out *uiout, const char *requested_threads,
 		     int global_ids, int pid,
 		     int show_global_ids)
 {
@@ -1384,7 +1383,7 @@ print_thread_info (struct ui_out *uiout, char *requested_threads, int pid)
 	 effects info-threads command would be nicer.  */
 
 static void
-info_threads_command (char *arg, int from_tty)
+info_threads_command (const char *arg, int from_tty)
 {
   int show_global_ids = 0;
 
diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c
index 4a06caf0f9..64158ca086 100644
--- a/gdb/tracepoint.c
+++ b/gdb/tracepoint.c
@@ -492,7 +492,7 @@ tvariables_info_1 (void)
 /* List all the trace state variables.  */
 
 static void
-info_tvariables_command (char *args, int from_tty)
+info_tvariables_command (const char *args, int from_tty)
 {
   tvariables_info_1 ();
 }
@@ -2514,7 +2514,7 @@ tfind_outside_command (const char *args, int from_tty)
 
 /* info scope command: list the locals for a scope.  */
 static void
-info_scope_command (char *args_in, int from_tty)
+info_scope_command (const char *args_in, int from_tty)
 {
   struct symbol *sym;
   struct bound_minimal_symbol msym;
@@ -3874,7 +3874,7 @@ print_one_static_tracepoint_marker (int count,
 }
 
 static void
-info_static_tracepoint_markers_command (char *arg, int from_tty)
+info_static_tracepoint_markers_command (const char *arg, int from_tty)
 {
   VEC(static_tracepoint_marker_p) *markers;
   struct cleanup *old_chain;
diff --git a/gdb/tui/tui-win.c b/gdb/tui/tui-win.c
index 9482646c95..685cf0621e 100644
--- a/gdb/tui/tui-win.c
+++ b/gdb/tui/tui-win.c
@@ -64,7 +64,7 @@ static int new_height_ok (struct tui_win_info *, int);
 static void tui_set_tab_width_command (const char *, int);
 static void tui_refresh_all_command (const char *, int);
 static void tui_set_win_height_command (const char *, int);
-static void tui_all_windows_info (char *, int);
+static void tui_all_windows_info (const char *, int);
 static void tui_set_focus_command (const char *, int);
 static void tui_scroll_forward_command (const char *, int);
 static void tui_scroll_backward_command (const char *, int);
@@ -1087,7 +1087,7 @@ tui_set_focus_command (const char *arg, int from_tty)
 
 
 static void
-tui_all_windows_info (char *arg, int from_tty)
+tui_all_windows_info (const char *arg, int from_tty)
 {
   int type;
   struct tui_win_info *win_with_focus = tui_win_with_focus ();
