PR cli/14392:
[external/binutils.git] / gdb / cli / cli-cmds.c
1 /* GDB CLI commands.
2
3    Copyright (C) 2000-2005, 2007-2012 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 #include "defs.h"
21 #include "exceptions.h"
22 #include "arch-utils.h"
23 #include "dyn-string.h"
24 #include "readline/readline.h"
25 #include "readline/tilde.h"
26 #include "completer.h"
27 #include "target.h"     /* For baud_rate, remote_debug and remote_timeout.  */
28 #include "gdb_wait.h"   /* For shell escape implementation.  */
29 #include "gdb_regex.h"  /* Used by apropos_command.  */
30 #include "gdb_string.h"
31 #include "gdb_vfork.h"
32 #include "linespec.h"
33 #include "expression.h"
34 #include "frame.h"
35 #include "value.h"
36 #include "language.h"
37 #include "filenames.h"  /* For DOSish file names.  */
38 #include "objfiles.h"
39 #include "source.h"
40 #include "disasm.h"
41 #include "tracepoint.h"
42
43 #include "ui-out.h"
44
45 #include "top.h"
46 #include "cli/cli-decode.h"
47 #include "cli/cli-script.h"
48 #include "cli/cli-setshow.h"
49 #include "cli/cli-cmds.h"
50
51 #include "python/python.h"
52
53 #ifdef TUI
54 #include "tui/tui.h"    /* For tui_active et.al.  */
55 #endif
56
57 #include <fcntl.h>
58
59 /* Prototypes for local command functions */
60
61 static void complete_command (char *, int);
62
63 static void echo_command (char *, int);
64
65 static void pwd_command (char *, int);
66
67 static void show_version (char *, int);
68
69 static void help_command (char *, int);
70
71 static void show_command (char *, int);
72
73 static void info_command (char *, int);
74
75 static void show_debug (char *, int);
76
77 static void set_debug (char *, int);
78
79 static void show_user (char *, int);
80
81 static void make_command (char *, int);
82
83 static void shell_escape (char *, int);
84
85 static void edit_command (char *, int);
86
87 static void list_command (char *, int);
88
89 void apropos_command (char *, int);
90
91 /* Prototypes for local utility functions */
92
93 static void ambiguous_line_spec (struct symtabs_and_lines *);
94
95 static void filter_sals (struct symtabs_and_lines *);
96
97 \f
98 /* Limit the call depth of user-defined commands */
99 int max_user_call_depth;
100
101 /* Define all cmd_list_elements.  */
102
103 /* Chain containing all defined commands.  */
104
105 struct cmd_list_element *cmdlist;
106
107 /* Chain containing all defined info subcommands.  */
108
109 struct cmd_list_element *infolist;
110
111 /* Chain containing all defined enable subcommands.  */
112
113 struct cmd_list_element *enablelist;
114
115 /* Chain containing all defined disable subcommands.  */
116
117 struct cmd_list_element *disablelist;
118
119 /* Chain containing all defined toggle subcommands.  */
120
121 struct cmd_list_element *togglelist;
122
123 /* Chain containing all defined stop subcommands.  */
124
125 struct cmd_list_element *stoplist;
126
127 /* Chain containing all defined delete subcommands.  */
128
129 struct cmd_list_element *deletelist;
130
131 /* Chain containing all defined detach subcommands.  */
132
133 struct cmd_list_element *detachlist;
134
135 /* Chain containing all defined kill subcommands.  */
136
137 struct cmd_list_element *killlist;
138
139 /* Chain containing all defined "enable breakpoint" subcommands.  */
140
141 struct cmd_list_element *enablebreaklist;
142
143 /* Chain containing all defined set subcommands */
144
145 struct cmd_list_element *setlist;
146
147 /* Chain containing all defined unset subcommands */
148
149 struct cmd_list_element *unsetlist;
150
151 /* Chain containing all defined show subcommands.  */
152
153 struct cmd_list_element *showlist;
154
155 /* Chain containing all defined \"set history\".  */
156
157 struct cmd_list_element *sethistlist;
158
159 /* Chain containing all defined \"show history\".  */
160
161 struct cmd_list_element *showhistlist;
162
163 /* Chain containing all defined \"unset history\".  */
164
165 struct cmd_list_element *unsethistlist;
166
167 /* Chain containing all defined maintenance subcommands.  */
168
169 struct cmd_list_element *maintenancelist;
170
171 /* Chain containing all defined "maintenance info" subcommands.  */
172
173 struct cmd_list_element *maintenanceinfolist;
174
175 /* Chain containing all defined "maintenance print" subcommands.  */
176
177 struct cmd_list_element *maintenanceprintlist;
178
179 struct cmd_list_element *setprintlist;
180
181 struct cmd_list_element *showprintlist;
182
183 struct cmd_list_element *setdebuglist;
184
185 struct cmd_list_element *showdebuglist;
186
187 struct cmd_list_element *setchecklist;
188
189 struct cmd_list_element *showchecklist;
190
191 struct cmd_list_element *skiplist;
192
193 /* Command tracing state.  */
194
195 int source_verbose = 0;
196 int trace_commands = 0;
197 \f
198 /* 'script-extension' option support.  */
199
200 static const char script_ext_off[] = "off";
201 static const char script_ext_soft[] = "soft";
202 static const char script_ext_strict[] = "strict";
203
204 static const char *const script_ext_enums[] = {
205   script_ext_off,
206   script_ext_soft,
207   script_ext_strict,
208   NULL
209 };
210
211 static const char *script_ext_mode = script_ext_soft;
212 \f
213 /* Utility used everywhere when at least one argument is needed and
214    none is supplied.  */
215
216 void
217 error_no_arg (char *why)
218 {
219   error (_("Argument required (%s)."), why);
220 }
221
222 /* The "info" command is defined as a prefix, with allow_unknown = 0.
223    Therefore, its own definition is called only for "info" with no
224    args.  */
225
226 static void
227 info_command (char *arg, int from_tty)
228 {
229   printf_unfiltered (_("\"info\" must be followed by "
230                        "the name of an info command.\n"));
231   help_list (infolist, "info ", -1, gdb_stdout);
232 }
233
234 /* The "show" command with no arguments shows all the settings.  */
235
236 static void
237 show_command (char *arg, int from_tty)
238 {
239   cmd_show_list (showlist, from_tty, "");
240 }
241 \f
242 /* Provide documentation on command or list given by COMMAND.  FROM_TTY
243    is ignored.  */
244
245 static void
246 help_command (char *command, int from_tty)
247 {
248   help_cmd (command, gdb_stdout);
249 }
250 \f
251 /* The "complete" command is used by Emacs to implement completion.  */
252
253 static void
254 complete_command (char *arg, int from_tty)
255 {
256   int argpoint;
257   char *point, *arg_prefix;
258   VEC (char_ptr) *completions;
259
260   dont_repeat ();
261
262   if (arg == NULL)
263     arg = "";
264   argpoint = strlen (arg);
265
266   /* complete_line assumes that its first argument is somewhere
267      within, and except for filenames at the beginning of, the word to
268      be completed.  The following crude imitation of readline's
269      word-breaking tries to accomodate this.  */
270   point = arg + argpoint;
271   while (point > arg)
272     {
273       if (strchr (rl_completer_word_break_characters, point[-1]) != 0)
274         break;
275       point--;
276     }
277
278   arg_prefix = alloca (point - arg + 1);
279   memcpy (arg_prefix, arg, point - arg);
280   arg_prefix[point - arg] = 0;
281
282   completions = complete_line (point, arg, argpoint);
283
284   if (completions)
285     {
286       int ix, size = VEC_length (char_ptr, completions);
287       char *item, *prev = NULL;
288
289       qsort (VEC_address (char_ptr, completions), size,
290              sizeof (char *), compare_strings);
291
292       /* We do extra processing here since we only want to print each
293          unique item once.  */
294       for (ix = 0; VEC_iterate (char_ptr, completions, ix, item); ++ix)
295         {
296           int next_item;
297
298           if (prev == NULL || strcmp (item, prev) != 0)
299             {
300               printf_unfiltered ("%s%s\n", arg_prefix, item);
301               xfree (prev);
302               prev = item;
303             }
304           else
305             xfree (item);
306         }
307
308       xfree (prev);
309       VEC_free (char_ptr, completions);
310     }
311 }
312
313 int
314 is_complete_command (struct cmd_list_element *c)
315 {
316   return cmd_cfunc_eq (c, complete_command);
317 }
318
319 static void
320 show_version (char *args, int from_tty)
321 {
322   print_gdb_version (gdb_stdout);
323   printf_filtered ("\n");
324 }
325
326 /* Handle the quit command.  */
327
328 void
329 quit_command (char *args, int from_tty)
330 {
331   if (!quit_confirm ())
332     error (_("Not confirmed."));
333
334   disconnect_tracing (from_tty);
335
336   quit_force (args, from_tty);
337 }
338
339 static void
340 pwd_command (char *args, int from_tty)
341 {
342   if (args)
343     error (_("The \"pwd\" command does not take an argument: %s"), args);
344   if (! getcwd (gdb_dirbuf, sizeof (gdb_dirbuf)))
345     error (_("Error finding name of working directory: %s"),
346            safe_strerror (errno));
347
348   if (strcmp (gdb_dirbuf, current_directory) != 0)
349     printf_unfiltered (_("Working directory %s\n (canonically %s).\n"),
350                        current_directory, gdb_dirbuf);
351   else
352     printf_unfiltered (_("Working directory %s.\n"), current_directory);
353 }
354
355 void
356 cd_command (char *dir, int from_tty)
357 {
358   int len;
359   /* Found something other than leading repetitions of "/..".  */
360   int found_real_path;
361   char *p;
362
363   /* If the new directory is absolute, repeat is a no-op; if relative,
364      repeat might be useful but is more likely to be a mistake.  */
365   dont_repeat ();
366
367   if (dir == 0)
368     dir = "~";
369
370   dir = tilde_expand (dir);
371   make_cleanup (xfree, dir);
372
373   if (chdir (dir) < 0)
374     perror_with_name (dir);
375
376 #ifdef HAVE_DOS_BASED_FILE_SYSTEM
377   /* There's too much mess with DOSish names like "d:", "d:.",
378      "d:./foo" etc.  Instead of having lots of special #ifdef'ed code,
379      simply get the canonicalized name of the current directory.  */
380   dir = getcwd (gdb_dirbuf, sizeof (gdb_dirbuf));
381 #endif
382
383   len = strlen (dir);
384   if (IS_DIR_SEPARATOR (dir[len - 1]))
385     {
386       /* Remove the trailing slash unless this is a root directory
387          (including a drive letter on non-Unix systems).  */
388       if (!(len == 1)           /* "/" */
389 #ifdef HAVE_DOS_BASED_FILE_SYSTEM
390           && !(len == 3 && dir[1] == ':') /* "d:/" */
391 #endif
392           )
393         len--;
394     }
395
396   dir = savestring (dir, len);
397   if (IS_ABSOLUTE_PATH (dir))
398     current_directory = dir;
399   else
400     {
401       if (IS_DIR_SEPARATOR (current_directory[strlen (current_directory) - 1]))
402         current_directory = concat (current_directory, dir, (char *)NULL);
403       else
404         current_directory = concat (current_directory, SLASH_STRING,
405                                     dir, (char *)NULL);
406       xfree (dir);
407     }
408
409   /* Now simplify any occurrences of `.' and `..' in the pathname.  */
410
411   found_real_path = 0;
412   for (p = current_directory; *p;)
413     {
414       if (IS_DIR_SEPARATOR (p[0]) && p[1] == '.'
415           && (p[2] == 0 || IS_DIR_SEPARATOR (p[2])))
416         memmove (p, p + 2, strlen (p + 2) + 1);
417       else if (IS_DIR_SEPARATOR (p[0]) && p[1] == '.' && p[2] == '.'
418                && (p[3] == 0 || IS_DIR_SEPARATOR (p[3])))
419         {
420           if (found_real_path)
421             {
422               /* Search backwards for the directory just before the "/.."
423                  and obliterate it and the "/..".  */
424               char *q = p;
425
426               while (q != current_directory && !IS_DIR_SEPARATOR (q[-1]))
427                 --q;
428
429               if (q == current_directory)
430                 /* current_directory is
431                    a relative pathname ("can't happen"--leave it alone).  */
432                 ++p;
433               else
434                 {
435                   memmove (q - 1, p + 3, strlen (p + 3) + 1);
436                   p = q - 1;
437                 }
438             }
439           else
440             /* We are dealing with leading repetitions of "/..", for
441                example "/../..", which is the Mach super-root.  */
442             p += 3;
443         }
444       else
445         {
446           found_real_path = 1;
447           ++p;
448         }
449     }
450
451   forget_cached_source_info ();
452
453   if (from_tty)
454     pwd_command ((char *) 0, 1);
455 }
456 \f
457 /* Show the current value of the 'script-extension' option.  */
458
459 static void
460 show_script_ext_mode (struct ui_file *file, int from_tty,
461                      struct cmd_list_element *c, const char *value)
462 {
463   fprintf_filtered (file,
464                     _("Script filename extension recognition is \"%s\".\n"),
465                     value);
466 }
467
468 /* Try to open SCRIPT_FILE.
469    If successful, the full path name is stored in *FULL_PATHP,
470    the stream is stored in *STREAMP, and return 1.
471    The caller is responsible for freeing *FULL_PATHP.
472    If not successful, return 0; errno is set for the last file
473    we tried to open.
474
475    If SEARCH_PATH is non-zero, and the file isn't found in cwd,
476    search for it in the source search path.
477
478    NOTE: This calls openp which uses xfullpath to compute the full path
479    instead of gdb_realpath.  Symbolic links are not resolved.  */
480
481 int
482 find_and_open_script (const char *script_file, int search_path,
483                       FILE **streamp, char **full_pathp)
484 {
485   char *file;
486   int fd;
487   struct cleanup *old_cleanups;
488   int search_flags = OPF_TRY_CWD_FIRST;
489
490   file = tilde_expand (script_file);
491   old_cleanups = make_cleanup (xfree, file);
492
493   if (search_path)
494     search_flags |= OPF_SEARCH_IN_PATH;
495
496   /* Search for and open 'file' on the search path used for source
497      files.  Put the full location in *FULL_PATHP.  */
498   fd = openp (source_path, search_flags,
499               file, O_RDONLY, full_pathp);
500
501   if (fd == -1)
502     {
503       int save_errno = errno;
504       do_cleanups (old_cleanups);
505       errno = save_errno;
506       return 0;
507     }
508
509   do_cleanups (old_cleanups);
510
511   *streamp = fdopen (fd, FOPEN_RT);
512   if (*streamp == NULL)
513     {
514       int save_errno = errno;
515
516       close (fd);
517       if (full_pathp)
518         xfree (*full_pathp);
519       errno = save_errno;
520       return 0;
521     }
522
523   return 1;
524 }
525
526 /* Load script FILE, which has already been opened as STREAM.  */
527
528 static void
529 source_script_from_stream (FILE *stream, const char *file)
530 {
531   if (script_ext_mode != script_ext_off
532       && strlen (file) > 3 && !strcmp (&file[strlen (file) - 3], ".py"))
533     {
534       volatile struct gdb_exception e;
535
536       TRY_CATCH (e, RETURN_MASK_ERROR)
537         {
538           source_python_script (stream, file);
539         }
540       if (e.reason < 0)
541         {
542           /* Should we fallback to ye olde GDB script mode?  */
543           if (script_ext_mode == script_ext_soft
544               && e.reason == RETURN_ERROR && e.error == UNSUPPORTED_ERROR)
545             {
546               fseek (stream, 0, SEEK_SET);
547               script_from_file (stream, (char*) file);
548             }
549           else
550             {
551               /* Nope, just punt.  */
552               throw_exception (e);
553             }
554         }
555     }
556   else
557     script_from_file (stream, file);
558 }
559
560 /* Worker to perform the "source" command.
561    Load script FILE.
562    If SEARCH_PATH is non-zero, and the file isn't found in cwd,
563    search for it in the source search path.  */
564
565 static void
566 source_script_with_search (const char *file, int from_tty, int search_path)
567 {
568   FILE *stream;
569   char *full_path;
570   struct cleanup *old_cleanups;
571
572   if (file == NULL || *file == 0)
573     error (_("source command requires file name of file to source."));
574
575   if (!find_and_open_script (file, search_path, &stream, &full_path))
576     {
577       /* The script wasn't found, or was otherwise inaccessible.
578          If the source command was invoked interactively, throw an
579          error.  Otherwise (e.g. if it was invoked by a script),
580          silently ignore the error.  */
581       if (from_tty)
582         perror_with_name (file);
583       else
584         return;
585     }
586
587   old_cleanups = make_cleanup (xfree, full_path);
588   make_cleanup_fclose (stream);
589   /* The python support reopens the file, so we need to pass full_path here
590      in case the file was found on the search path.  It's useful to do this
591      anyway so that error messages show the actual file used.  But only do
592      this if we (may have) used search_path, as printing the full path in
593      errors for the non-search case can be more noise than signal.  */
594   source_script_from_stream (stream, search_path ? full_path : file);
595   do_cleanups (old_cleanups);
596 }
597
598 /* Wrapper around source_script_with_search to export it to main.c
599    for use in loading .gdbinit scripts.  */
600
601 void
602 source_script (char *file, int from_tty)
603 {
604   source_script_with_search (file, from_tty, 0);
605 }
606
607 /* Return the source_verbose global variable to its previous state
608    on exit from the source command, by whatever means.  */
609 static void
610 source_verbose_cleanup (void *old_value)
611 {
612   source_verbose = *(int *)old_value;
613   xfree (old_value);
614 }
615
616 static void
617 source_command (char *args, int from_tty)
618 {
619   struct cleanup *old_cleanups;
620   char *file = args;
621   int *old_source_verbose = xmalloc (sizeof(int));
622   int search_path = 0;
623
624   *old_source_verbose = source_verbose;
625   old_cleanups = make_cleanup (source_verbose_cleanup, 
626                                old_source_verbose);
627
628   /* -v causes the source command to run in verbose mode.
629      -s causes the file to be searched in the source search path,
630      even if the file name contains a '/'.
631      We still have to be able to handle filenames with spaces in a
632      backward compatible way, so buildargv is not appropriate.  */
633
634   if (args)
635     {
636       while (args[0] != '\0')
637         {
638           /* Make sure leading white space does not break the
639              comparisons.  */
640           while (isspace(args[0]))
641             args++;
642
643           if (args[0] != '-')
644             break;
645
646           if (args[1] == 'v' && isspace (args[2]))
647             {
648               source_verbose = 1;
649
650               /* Skip passed -v.  */
651               args = &args[3];
652             }
653           else if (args[1] == 's' && isspace (args[2]))
654             {
655               search_path = 1;
656
657               /* Skip passed -s.  */
658               args = &args[3];
659             }
660           else
661             break;
662         }
663
664       while (isspace (args[0]))
665         args++;
666       file = args;
667     }
668
669   source_script_with_search (file, from_tty, search_path);
670
671   do_cleanups (old_cleanups);
672 }
673
674
675 static void
676 echo_command (char *text, int from_tty)
677 {
678   char *p = text;
679   int c;
680
681   if (text)
682     while ((c = *p++) != '\0')
683       {
684         if (c == '\\')
685           {
686             /* \ at end of argument is used after spaces
687                so they won't be lost.  */
688             if (*p == 0)
689               return;
690
691             c = parse_escape (get_current_arch (), &p);
692             if (c >= 0)
693               printf_filtered ("%c", c);
694           }
695         else
696           printf_filtered ("%c", c);
697       }
698
699   /* Force this output to appear now.  */
700   wrap_here ("");
701   gdb_flush (gdb_stdout);
702 }
703
704 static void
705 shell_escape (char *arg, int from_tty)
706 {
707 #if defined(CANT_FORK) || \
708       (!defined(HAVE_WORKING_VFORK) && !defined(HAVE_WORKING_FORK))
709   /* If ARG is NULL, they want an inferior shell, but `system' just
710      reports if the shell is available when passed a NULL arg.  */
711   int rc = system (arg ? arg : "");
712
713   if (!arg)
714     arg = "inferior shell";
715
716   if (rc == -1)
717     {
718       fprintf_unfiltered (gdb_stderr, "Cannot execute %s: %s\n", arg,
719                           safe_strerror (errno));
720       gdb_flush (gdb_stderr);
721     }
722   else if (rc)
723     {
724       fprintf_unfiltered (gdb_stderr, "%s exited with status %d\n", arg, rc);
725       gdb_flush (gdb_stderr);
726     }
727 #ifdef GLOBAL_CURDIR
728   /* Make sure to return to the directory GDB thinks it is, in case
729      the shell command we just ran changed it.  */
730   chdir (current_directory);
731 #endif
732 #else /* Can fork.  */
733   int status, pid;
734
735   if ((pid = vfork ()) == 0)
736     {
737       const char *p, *user_shell;
738
739       if ((user_shell = (char *) getenv ("SHELL")) == NULL)
740         user_shell = "/bin/sh";
741
742       /* Get the name of the shell for arg0.  */
743       p = lbasename (user_shell);
744
745       if (!arg)
746         execl (user_shell, p, (char *) 0);
747       else
748         execl (user_shell, p, "-c", arg, (char *) 0);
749
750       fprintf_unfiltered (gdb_stderr, "Cannot execute %s: %s\n", user_shell,
751                           safe_strerror (errno));
752       gdb_flush (gdb_stderr);
753       _exit (0177);
754     }
755
756   if (pid != -1)
757     waitpid (pid, &status, 0);
758   else
759     error (_("Fork failed"));
760 #endif /* Can fork.  */
761 }
762
763 static void
764 edit_command (char *arg, int from_tty)
765 {
766   struct symtabs_and_lines sals;
767   struct symtab_and_line sal;
768   struct symbol *sym;
769   char *arg1;
770   char *editor;
771   char *p, *fn;
772
773   /* Pull in the current default source line if necessary.  */
774   if (arg == 0)
775     {
776       set_default_source_symtab_and_line ();
777       sal = get_current_source_symtab_and_line ();
778     }
779
780   /* Bare "edit" edits file with present line.  */
781
782   if (arg == 0)
783     {
784       if (sal.symtab == 0)
785         error (_("No default source file yet."));
786       sal.line += get_lines_to_list () / 2;
787     }
788   else
789     {
790       /* Now should only be one argument -- decode it in SAL.  */
791
792       arg1 = arg;
793       sals = decode_line_1 (&arg1, DECODE_LINE_LIST_MODE, 0, 0);
794
795       filter_sals (&sals);
796       if (! sals.nelts)
797         {
798           /*  C++  */
799           return;
800         }
801       if (sals.nelts > 1)
802         {
803           ambiguous_line_spec (&sals);
804           xfree (sals.sals);
805           return;
806         }
807
808       sal = sals.sals[0];
809       xfree (sals.sals);
810
811       if (*arg1)
812         error (_("Junk at end of line specification."));
813
814       /* If line was specified by address, first print exactly which
815          line, and which file.  In this case, sal.symtab == 0 means
816          address is outside of all known source files, not that user
817          failed to give a filename.  */
818       if (*arg == '*')
819         {
820           struct gdbarch *gdbarch;
821
822           if (sal.symtab == 0)
823             /* FIXME-32x64--assumes sal.pc fits in long.  */
824             error (_("No source file for address %s."),
825                    hex_string ((unsigned long) sal.pc));
826
827           gdbarch = get_objfile_arch (sal.symtab->objfile);
828           sym = find_pc_function (sal.pc);
829           if (sym)
830             printf_filtered ("%s is in %s (%s:%d).\n",
831                              paddress (gdbarch, sal.pc),
832                              SYMBOL_PRINT_NAME (sym),
833                              sal.symtab->filename, sal.line);
834           else
835             printf_filtered ("%s is at %s:%d.\n",
836                              paddress (gdbarch, sal.pc),
837                              sal.symtab->filename, sal.line);
838         }
839
840       /* If what was given does not imply a symtab, it must be an
841          undebuggable symbol which means no source code.  */
842
843       if (sal.symtab == 0)
844         error (_("No line number known for %s."), arg);
845     }
846
847   if ((editor = (char *) getenv ("EDITOR")) == NULL)
848       editor = "/bin/ex";
849
850   /* If we don't already know the full absolute file name of the
851      source file, find it now.  */
852   if (!sal.symtab->fullname)
853     {
854       fn = symtab_to_fullname (sal.symtab);
855       if (!fn)
856         fn = "unknown";
857     }
858   else
859     fn = sal.symtab->fullname;
860
861   /* Quote the file name, in case it has whitespace or other special
862      characters.  */
863   p = xstrprintf ("%s +%d \"%s\"", editor, sal.line, fn);
864   shell_escape (p, from_tty);
865   xfree (p);
866 }
867
868 static void
869 list_command (char *arg, int from_tty)
870 {
871   struct symtabs_and_lines sals, sals_end;
872   struct symtab_and_line sal = { 0 };
873   struct symtab_and_line sal_end = { 0 };
874   struct symtab_and_line cursal = { 0 };
875   struct symbol *sym;
876   char *arg1;
877   int no_end = 1;
878   int dummy_end = 0;
879   int dummy_beg = 0;
880   int linenum_beg = 0;
881   char *p;
882
883   /* Pull in the current default source line if necessary.  */
884   if (arg == 0 || arg[0] == '+' || arg[0] == '-')
885     {
886       set_default_source_symtab_and_line ();
887       cursal = get_current_source_symtab_and_line ();
888     }
889
890   /* "l" or "l +" lists next ten lines.  */
891
892   if (arg == 0 || strcmp (arg, "+") == 0)
893     {
894       print_source_lines (cursal.symtab, cursal.line,
895                           cursal.line + get_lines_to_list (), 0);
896       return;
897     }
898
899   /* "l -" lists previous ten lines, the ones before the ten just
900      listed.  */
901   if (strcmp (arg, "-") == 0)
902     {
903       print_source_lines (cursal.symtab,
904                           max (get_first_line_listed () 
905                                - get_lines_to_list (), 1),
906                           get_first_line_listed (), 0);
907       return;
908     }
909
910   /* Now if there is only one argument, decode it in SAL
911      and set NO_END.
912      If there are two arguments, decode them in SAL and SAL_END
913      and clear NO_END; however, if one of the arguments is blank,
914      set DUMMY_BEG or DUMMY_END to record that fact.  */
915
916   if (!have_full_symbols () && !have_partial_symbols ())
917     error (_("No symbol table is loaded.  Use the \"file\" command."));
918
919   arg1 = arg;
920   if (*arg1 == ',')
921     dummy_beg = 1;
922   else
923     {
924       sals = decode_line_1 (&arg1, DECODE_LINE_LIST_MODE, 0, 0);
925
926       filter_sals (&sals);
927       if (!sals.nelts)
928         return;                 /*  C++  */
929       if (sals.nelts > 1)
930         {
931           ambiguous_line_spec (&sals);
932           xfree (sals.sals);
933           return;
934         }
935
936       sal = sals.sals[0];
937       xfree (sals.sals);
938     }
939
940   /* Record whether the BEG arg is all digits.  */
941
942   for (p = arg; p != arg1 && *p >= '0' && *p <= '9'; p++);
943   linenum_beg = (p == arg1);
944
945   while (*arg1 == ' ' || *arg1 == '\t')
946     arg1++;
947   if (*arg1 == ',')
948     {
949       no_end = 0;
950       arg1++;
951       while (*arg1 == ' ' || *arg1 == '\t')
952         arg1++;
953       if (*arg1 == 0)
954         dummy_end = 1;
955       else
956         {
957           if (dummy_beg)
958             sals_end = decode_line_1 (&arg1, DECODE_LINE_LIST_MODE, 0, 0);
959           else
960             sals_end = decode_line_1 (&arg1, DECODE_LINE_LIST_MODE,
961                                       sal.symtab, sal.line);
962           filter_sals (&sals_end);
963           if (sals_end.nelts == 0)
964             return;
965           if (sals_end.nelts > 1)
966             {
967               ambiguous_line_spec (&sals_end);
968               xfree (sals_end.sals);
969               return;
970             }
971           sal_end = sals_end.sals[0];
972           xfree (sals_end.sals);
973         }
974     }
975
976   if (*arg1)
977     error (_("Junk at end of line specification."));
978
979   if (!no_end && !dummy_beg && !dummy_end
980       && sal.symtab != sal_end.symtab)
981     error (_("Specified start and end are in different files."));
982   if (dummy_beg && dummy_end)
983     error (_("Two empty args do not say what lines to list."));
984
985   /* If line was specified by address,
986      first print exactly which line, and which file.
987
988      In this case, sal.symtab == 0 means address is outside of all
989      known source files, not that user failed to give a filename.  */
990   if (*arg == '*')
991     {
992       struct gdbarch *gdbarch;
993
994       if (sal.symtab == 0)
995         /* FIXME-32x64--assumes sal.pc fits in long.  */
996         error (_("No source file for address %s."),
997                hex_string ((unsigned long) sal.pc));
998
999       gdbarch = get_objfile_arch (sal.symtab->objfile);
1000       sym = find_pc_function (sal.pc);
1001       if (sym)
1002         printf_filtered ("%s is in %s (%s:%d).\n",
1003                          paddress (gdbarch, sal.pc),
1004                          SYMBOL_PRINT_NAME (sym),
1005                          sal.symtab->filename, sal.line);
1006       else
1007         printf_filtered ("%s is at %s:%d.\n",
1008                          paddress (gdbarch, sal.pc),
1009                          sal.symtab->filename, sal.line);
1010     }
1011
1012   /* If line was not specified by just a line number, and it does not
1013      imply a symtab, it must be an undebuggable symbol which means no
1014      source code.  */
1015
1016   if (!linenum_beg && sal.symtab == 0)
1017     error (_("No line number known for %s."), arg);
1018
1019   /* If this command is repeated with RET,
1020      turn it into the no-arg variant.  */
1021
1022   if (from_tty)
1023     *arg = 0;
1024
1025   if (dummy_beg && sal_end.symtab == 0)
1026     error (_("No default source file yet.  Do \"help list\"."));
1027   if (dummy_beg)
1028     print_source_lines (sal_end.symtab,
1029                         max (sal_end.line - (get_lines_to_list () - 1), 1),
1030                         sal_end.line + 1, 0);
1031   else if (sal.symtab == 0)
1032     error (_("No default source file yet.  Do \"help list\"."));
1033   else if (no_end)
1034     {
1035       int first_line = sal.line - get_lines_to_list () / 2;
1036
1037       if (first_line < 1) first_line = 1;
1038
1039       print_source_lines (sal.symtab,
1040                           first_line,
1041                           first_line + get_lines_to_list (),
1042                           0);
1043     }
1044   else
1045     print_source_lines (sal.symtab, sal.line,
1046                         (dummy_end
1047                          ? sal.line + get_lines_to_list ()
1048                          : sal_end.line + 1),
1049                         0);
1050 }
1051
1052 /* Subroutine of disassemble_command to simplify it.
1053    Perform the disassembly.
1054    NAME is the name of the function if known, or NULL.
1055    [LOW,HIGH) are the range of addresses to disassemble.
1056    MIXED is non-zero to print source with the assembler.  */
1057
1058 static void
1059 print_disassembly (struct gdbarch *gdbarch, const char *name,
1060                    CORE_ADDR low, CORE_ADDR high, int flags)
1061 {
1062 #if defined(TUI)
1063   if (!tui_is_window_visible (DISASSEM_WIN))
1064 #endif
1065     {
1066       printf_filtered ("Dump of assembler code ");
1067       if (name != NULL)
1068         printf_filtered ("for function %s:\n", name);
1069       else
1070         printf_filtered ("from %s to %s:\n",
1071                          paddress (gdbarch, low), paddress (gdbarch, high));
1072
1073       /* Dump the specified range.  */
1074       gdb_disassembly (gdbarch, current_uiout, 0, flags, -1, low, high);
1075
1076       printf_filtered ("End of assembler dump.\n");
1077       gdb_flush (gdb_stdout);
1078     }
1079 #if defined(TUI)
1080   else
1081     {
1082       tui_show_assembly (gdbarch, low);
1083     }
1084 #endif
1085 }
1086
1087 /* Subroutine of disassemble_command to simplify it.
1088    Print a disassembly of the current function according to FLAGS.  */
1089
1090 static void
1091 disassemble_current_function (int flags)
1092 {
1093   struct frame_info *frame;
1094   struct gdbarch *gdbarch;
1095   CORE_ADDR low, high, pc;
1096   const char *name;
1097
1098   frame = get_selected_frame (_("No frame selected."));
1099   gdbarch = get_frame_arch (frame);
1100   pc = get_frame_pc (frame);
1101   if (find_pc_partial_function (pc, &name, &low, &high) == 0)
1102     error (_("No function contains program counter for selected frame."));
1103 #if defined(TUI)
1104   /* NOTE: cagney/2003-02-13 The `tui_active' was previously
1105      `tui_version'.  */
1106   if (tui_active)
1107     /* FIXME: cagney/2004-02-07: This should be an observer.  */
1108     low = tui_get_low_disassembly_address (gdbarch, low, pc);
1109 #endif
1110   low += gdbarch_deprecated_function_start_offset (gdbarch);
1111
1112   print_disassembly (gdbarch, name, low, high, flags);
1113 }
1114
1115 /* Dump a specified section of assembly code.
1116
1117    Usage:
1118      disassemble [/mr]
1119        - dump the assembly code for the function of the current pc
1120      disassemble [/mr] addr
1121        - dump the assembly code for the function at ADDR
1122      disassemble [/mr] low,high
1123      disassemble [/mr] low,+length
1124        - dump the assembly code in the range [LOW,HIGH), or [LOW,LOW+length)
1125
1126    A /m modifier will include source code with the assembly.
1127    A /r modifier will include raw instructions in hex with the assembly.  */
1128
1129 static void
1130 disassemble_command (char *arg, int from_tty)
1131 {
1132   struct gdbarch *gdbarch = get_current_arch ();
1133   CORE_ADDR low, high;
1134   const char *name;
1135   CORE_ADDR pc;
1136   int flags;
1137
1138   name = NULL;
1139   flags = 0;
1140
1141   if (arg && *arg == '/')
1142     {
1143       ++arg;
1144
1145       if (*arg == '\0')
1146         error (_("Missing modifier."));
1147
1148       while (*arg && ! isspace (*arg))
1149         {
1150           switch (*arg++)
1151             {
1152             case 'm':
1153               flags |= DISASSEMBLY_SOURCE;
1154               break;
1155             case 'r':
1156               flags |= DISASSEMBLY_RAW_INSN;
1157               break;
1158             default:
1159               error (_("Invalid disassembly modifier."));
1160             }
1161         }
1162
1163       while (isspace (*arg))
1164         ++arg;
1165     }
1166
1167   if (! arg || ! *arg)
1168     {
1169       flags |= DISASSEMBLY_OMIT_FNAME;
1170       disassemble_current_function (flags);
1171       return;
1172     }
1173
1174   pc = value_as_address (parse_to_comma_and_eval (&arg));
1175   if (arg[0] == ',')
1176     ++arg;
1177   if (arg[0] == '\0')
1178     {
1179       /* One argument.  */
1180       if (find_pc_partial_function (pc, &name, &low, &high) == 0)
1181         error (_("No function contains specified address."));
1182 #if defined(TUI)
1183       /* NOTE: cagney/2003-02-13 The `tui_active' was previously
1184          `tui_version'.  */
1185       if (tui_active)
1186         /* FIXME: cagney/2004-02-07: This should be an observer.  */
1187         low = tui_get_low_disassembly_address (gdbarch, low, pc);
1188 #endif
1189       low += gdbarch_deprecated_function_start_offset (gdbarch);
1190       flags |= DISASSEMBLY_OMIT_FNAME;
1191     }
1192   else
1193     {
1194       /* Two arguments.  */
1195       int incl_flag = 0;
1196       low = pc;
1197       while (isspace (*arg))
1198         arg++;
1199       if (arg[0] == '+')
1200         {
1201           ++arg;
1202           incl_flag = 1;
1203         }
1204       high = parse_and_eval_address (arg);
1205       if (incl_flag)
1206         high += low;
1207     }
1208
1209   print_disassembly (gdbarch, name, low, high, flags);
1210 }
1211
1212 static void
1213 make_command (char *arg, int from_tty)
1214 {
1215   char *p;
1216
1217   if (arg == 0)
1218     p = "make";
1219   else
1220     {
1221       p = xmalloc (sizeof ("make ") + strlen (arg));
1222       strcpy (p, "make ");
1223       strcpy (p + sizeof ("make ") - 1, arg);
1224     }
1225
1226   shell_escape (p, from_tty);
1227 }
1228
1229 static void
1230 show_user (char *args, int from_tty)
1231 {
1232   struct cmd_list_element *c;
1233   extern struct cmd_list_element *cmdlist;
1234
1235   if (args)
1236     {
1237       char *comname = args;
1238
1239       c = lookup_cmd (&comname, cmdlist, "", 0, 1);
1240       /* c->user_commands would be NULL if it's a python command.  */
1241       if (c->class != class_user || !c->user_commands)
1242         error (_("Not a user command."));
1243       show_user_1 (c, "", args, gdb_stdout);
1244     }
1245   else
1246     {
1247       for (c = cmdlist; c; c = c->next)
1248         {
1249           if (c->class == class_user || c->prefixlist != NULL)
1250             show_user_1 (c, "", c->name, gdb_stdout);
1251         }
1252     }
1253 }
1254
1255 /* Search through names of commands and documentations for a certain
1256    regular expression.  */
1257
1258 void 
1259 apropos_command (char *searchstr, int from_tty)
1260 {
1261   regex_t pattern;
1262   int code;
1263
1264   if (searchstr == NULL)
1265     error (_("REGEXP string is empty"));
1266
1267   code = regcomp (&pattern, searchstr, REG_ICASE);
1268   if (code == 0)
1269     {
1270       struct cleanup *cleanups;
1271
1272       cleanups = make_regfree_cleanup (&pattern);
1273       apropos_cmd (gdb_stdout, cmdlist, &pattern, "");
1274       do_cleanups (cleanups);
1275     }
1276   else
1277     {
1278       char *err = get_regcomp_error (code, &pattern);
1279
1280       make_cleanup (xfree, err);
1281       error (_("Error in regular expression: %s"), err);
1282     }
1283 }
1284
1285 /* Subroutine of alias_command to simplify it.
1286    Return the first N elements of ARGV flattened back to a string
1287    with a space separating each element.
1288    ARGV may not be NULL.
1289    This does not take care of quoting elements in case they contain spaces
1290    on purpose.  */
1291
1292 static dyn_string_t
1293 argv_to_dyn_string (char **argv, int n)
1294 {
1295   int i;
1296   dyn_string_t result = dyn_string_new (10);
1297
1298   gdb_assert (argv != NULL);
1299   gdb_assert (n >= 0 && n <= countargv (argv));
1300
1301   for (i = 0; i < n; ++i)
1302     {
1303       if (i > 0)
1304         dyn_string_append_char (result, ' ');
1305       dyn_string_append_cstr (result, argv[i]);
1306     }
1307
1308   return result;
1309 }
1310
1311 /* Subroutine of alias_command to simplify it.
1312    Return TRUE if COMMAND exists, unambiguously.  Otherwise FALSE.  */
1313
1314 static int
1315 valid_command_p (char *command)
1316 {
1317   struct cmd_list_element *c;
1318
1319   c = lookup_cmd_1 (& command, cmdlist, NULL, 1);
1320
1321   if (c == NULL || c == (struct cmd_list_element *) -1)
1322     return FALSE;
1323
1324   /* This is the slightly tricky part.
1325      lookup_cmd_1 will return a pointer to the last part of COMMAND
1326      to match, leaving COMMAND pointing at the remainder.  */
1327   while (*command == ' ' || *command == '\t')
1328     ++command;
1329   return *command == '\0';
1330 }
1331
1332 /* Make an alias of an existing command.  */
1333
1334 static void
1335 alias_command (char *args, int from_tty)
1336 {
1337   int i, alias_argc, command_argc;
1338   int abbrev_flag = 0;
1339   char *args2, *equals, *alias, *command;
1340   char **alias_argv, **command_argv;
1341   dyn_string_t alias_dyn_string, command_dyn_string;
1342   struct cmd_list_element *c;
1343   static const char usage[] = N_("Usage: alias [-a] [--] ALIAS = COMMAND");
1344
1345   if (args == NULL || strchr (args, '=') == NULL)
1346     error (_(usage));
1347
1348   args2 = xstrdup (args);
1349   make_cleanup (xfree, args2);
1350   equals = strchr (args2, '=');
1351   *equals = '\0';
1352   alias_argv = gdb_buildargv (args2);
1353   make_cleanup_freeargv (alias_argv);
1354   command_argv = gdb_buildargv (equals + 1);
1355   make_cleanup_freeargv (command_argv);
1356
1357   for (i = 0; alias_argv[i] != NULL; )
1358     {
1359       if (strcmp (alias_argv[i], "-a") == 0)
1360         {
1361           ++alias_argv;
1362           abbrev_flag = 1;
1363         }
1364       else if (strcmp (alias_argv[i], "--") == 0)
1365         {
1366           ++alias_argv;
1367           break;
1368         }
1369       else
1370         break;
1371     }
1372
1373   if (alias_argv[0] == NULL || command_argv[0] == NULL
1374       || *alias_argv[0] == '\0' || *command_argv[0] == '\0')
1375     error (_(usage));
1376
1377   for (i = 0; alias_argv[i] != NULL; ++i)
1378     {
1379       if (! valid_user_defined_cmd_name_p (alias_argv[i]))
1380         {
1381           if (i == 0)
1382             error (_("Invalid command name: %s"), alias_argv[i]);
1383           else
1384             error (_("Invalid command element name: %s"), alias_argv[i]);
1385         }
1386     }
1387
1388   alias_argc = countargv (alias_argv);
1389   command_argc = countargv (command_argv);
1390
1391   /* COMMAND must exist.
1392      Reconstruct the command to remove any extraneous spaces,
1393      for better error messages.  */
1394   command_dyn_string = argv_to_dyn_string (command_argv, command_argc);
1395   make_cleanup_dyn_string_delete (command_dyn_string);
1396   command = dyn_string_buf (command_dyn_string);
1397   if (! valid_command_p (command))
1398     error (_("Invalid command to alias to: %s"), command);
1399
1400   /* ALIAS must not exist.  */
1401   alias_dyn_string = argv_to_dyn_string (alias_argv, alias_argc);
1402   make_cleanup_dyn_string_delete (alias_dyn_string);
1403   alias = dyn_string_buf (alias_dyn_string);
1404   if (valid_command_p (alias))
1405     error (_("Alias already exists: %s"), alias);
1406
1407   /* If ALIAS is one word, it is an alias for the entire COMMAND.
1408      Example: alias spe = set print elements
1409
1410      Otherwise ALIAS and COMMAND must have the same number of words,
1411      and every word except the last must match; and the last word of
1412      ALIAS is made an alias of the last word of COMMAND.
1413      Example: alias set print elms = set pr elem
1414      Note that unambiguous abbreviations are allowed.  */
1415
1416   if (alias_argc == 1)
1417     {
1418       /* add_cmd requires *we* allocate space for name, hence the xstrdup.  */
1419       add_com_alias (xstrdup (alias_argv[0]), command, class_alias,
1420                      abbrev_flag);
1421     }
1422   else
1423     {
1424       dyn_string_t alias_prefix_dyn_string, command_prefix_dyn_string;
1425       char *alias_prefix, *command_prefix;
1426       struct cmd_list_element *c_alias, *c_command;
1427
1428       if (alias_argc != command_argc)
1429         error (_("Mismatched command length between ALIAS and COMMAND."));
1430
1431       /* Create copies of ALIAS and COMMAND without the last word,
1432          and use that to verify the leading elements match.  */
1433       alias_prefix_dyn_string =
1434         argv_to_dyn_string (alias_argv, alias_argc - 1);
1435       make_cleanup_dyn_string_delete (alias_prefix_dyn_string);
1436       command_prefix_dyn_string =
1437         argv_to_dyn_string (alias_argv, command_argc - 1);
1438       make_cleanup_dyn_string_delete (command_prefix_dyn_string);
1439       alias_prefix = dyn_string_buf (alias_prefix_dyn_string);
1440       command_prefix = dyn_string_buf (command_prefix_dyn_string);
1441
1442       c_command = lookup_cmd_1 (& command_prefix, cmdlist, NULL, 1);
1443       /* We've already tried to look up COMMAND.  */
1444       gdb_assert (c_command != NULL
1445                   && c_command != (struct cmd_list_element *) -1);
1446       gdb_assert (c_command->prefixlist != NULL);
1447       c_alias = lookup_cmd_1 (& alias_prefix, cmdlist, NULL, 1);
1448       if (c_alias != c_command)
1449         error (_("ALIAS and COMMAND prefixes do not match."));
1450
1451       /* add_cmd requires *we* allocate space for name, hence the xstrdup.  */
1452       add_alias_cmd (xstrdup (alias_argv[alias_argc - 1]),
1453                      command_argv[command_argc - 1],
1454                      class_alias, abbrev_flag, c_command->prefixlist);
1455     }
1456 }
1457 \f
1458 /* Print a list of files and line numbers which a user may choose from
1459    in order to list a function which was specified ambiguously (as
1460    with `list classname::overloadedfuncname', for example).  The
1461    vector in SALS provides the filenames and line numbers.  */
1462
1463 static void
1464 ambiguous_line_spec (struct symtabs_and_lines *sals)
1465 {
1466   int i;
1467
1468   for (i = 0; i < sals->nelts; ++i)
1469     printf_filtered (_("file: \"%s\", line number: %d\n"),
1470                      sals->sals[i].symtab->filename, sals->sals[i].line);
1471 }
1472
1473 /* Sort function for filter_sals.  */
1474
1475 static int
1476 compare_symtabs (const void *a, const void *b)
1477 {
1478   const struct symtab_and_line *sala = a;
1479   const struct symtab_and_line *salb = b;
1480   int r;
1481
1482   if (!sala->symtab->dirname)
1483     {
1484       if (salb->symtab->dirname)
1485         return -1;
1486     }
1487   else if (!salb->symtab->dirname)
1488     {
1489       if (sala->symtab->dirname)
1490         return 1;
1491     }
1492   else
1493     {
1494       r = filename_cmp (sala->symtab->dirname, salb->symtab->dirname);
1495       if (r)
1496         return r;
1497     }
1498
1499   r = filename_cmp (sala->symtab->filename, salb->symtab->filename);
1500   if (r)
1501     return r;
1502
1503   if (sala->line < salb->line)
1504     return -1;
1505   return sala->line == salb->line ? 0 : 1;
1506 }
1507
1508 /* Remove any SALs that do not match the current program space, or
1509    which appear to be "file:line" duplicates.  */
1510
1511 static void
1512 filter_sals (struct symtabs_and_lines *sals)
1513 {
1514   int i, out, prev;
1515
1516   out = 0;
1517   for (i = 0; i < sals->nelts; ++i)
1518     {
1519       if (sals->sals[i].pspace == current_program_space
1520           && sals->sals[i].symtab != NULL)
1521         {
1522           sals->sals[out] = sals->sals[i];
1523           ++out;
1524         }
1525     }
1526   sals->nelts = out;
1527
1528   qsort (sals->sals, sals->nelts, sizeof (struct symtab_and_line),
1529          compare_symtabs);
1530
1531   out = 1;
1532   prev = 0;
1533   for (i = 1; i < sals->nelts; ++i)
1534     {
1535       if (compare_symtabs (&sals->sals[prev], &sals->sals[i]))
1536         {
1537           /* Symtabs differ.  */
1538           sals->sals[out] = sals->sals[i];
1539           prev = out;
1540           ++out;
1541         }
1542     }
1543   sals->nelts = out;
1544
1545   if (sals->nelts == 0)
1546     {
1547       xfree (sals->sals);
1548       sals->sals = NULL;
1549     }
1550 }
1551
1552 static void
1553 set_debug (char *arg, int from_tty)
1554 {
1555   printf_unfiltered (_("\"set debug\" must be followed by "
1556                        "the name of a debug subcommand.\n"));
1557   help_list (setdebuglist, "set debug ", -1, gdb_stdout);
1558 }
1559
1560 static void
1561 show_debug (char *args, int from_tty)
1562 {
1563   cmd_show_list (showdebuglist, from_tty, "");
1564 }
1565
1566 void
1567 init_cmd_lists (void)
1568 {
1569   max_user_call_depth = 1024;
1570
1571   cmdlist = NULL;
1572   infolist = NULL;
1573   enablelist = NULL;
1574   disablelist = NULL;
1575   togglelist = NULL;
1576   stoplist = NULL;
1577   deletelist = NULL;
1578   detachlist = NULL;
1579   enablebreaklist = NULL;
1580   setlist = NULL;
1581   unsetlist = NULL;
1582   showlist = NULL;
1583   sethistlist = NULL;
1584   showhistlist = NULL;
1585   unsethistlist = NULL;
1586   maintenancelist = NULL;
1587   maintenanceinfolist = NULL;
1588   maintenanceprintlist = NULL;
1589   setprintlist = NULL;
1590   showprintlist = NULL;
1591   setchecklist = NULL;
1592   showchecklist = NULL;
1593   skiplist = NULL;
1594 }
1595
1596 static void
1597 show_info_verbose (struct ui_file *file, int from_tty,
1598                    struct cmd_list_element *c,
1599                    const char *value)
1600 {
1601   if (info_verbose)
1602     fprintf_filtered (file,
1603                       _("Verbose printing of informational messages is %s.\n"),
1604                       value);
1605   else
1606     fprintf_filtered (file, _("Verbosity is %s.\n"), value);
1607 }
1608
1609 static void
1610 show_history_expansion_p (struct ui_file *file, int from_tty,
1611                           struct cmd_list_element *c, const char *value)
1612 {
1613   fprintf_filtered (file, _("History expansion on command input is %s.\n"),
1614                     value);
1615 }
1616
1617 static void
1618 show_baud_rate (struct ui_file *file, int from_tty,
1619                 struct cmd_list_element *c, const char *value)
1620 {
1621   fprintf_filtered (file, _("Baud rate for remote serial I/O is %s.\n"),
1622                     value);
1623 }
1624
1625 static void
1626 show_remote_debug (struct ui_file *file, int from_tty,
1627                    struct cmd_list_element *c, const char *value)
1628 {
1629   fprintf_filtered (file, _("Debugging of remote protocol is %s.\n"),
1630                     value);
1631 }
1632
1633 static void
1634 show_remote_timeout (struct ui_file *file, int from_tty,
1635                      struct cmd_list_element *c, const char *value)
1636 {
1637   fprintf_filtered (file,
1638                     _("Timeout limit to wait for target to respond is %s.\n"),
1639                     value);
1640 }
1641
1642 static void
1643 show_max_user_call_depth (struct ui_file *file, int from_tty,
1644                           struct cmd_list_element *c, const char *value)
1645 {
1646   fprintf_filtered (file,
1647                     _("The max call depth for user-defined commands is %s.\n"),
1648                     value);
1649 }
1650
1651 \f
1652 void
1653 init_cli_cmds (void)
1654 {
1655   struct cmd_list_element *c;
1656   char *source_help_text;
1657
1658   /* Define the classes of commands.
1659      They will appear in the help list in alphabetical order.  */
1660
1661   add_cmd ("internals", class_maintenance, NULL, _("\
1662 Maintenance commands.\n\
1663 Some gdb commands are provided just for use by gdb maintainers.\n\
1664 These commands are subject to frequent change, and may not be as\n\
1665 well documented as user commands."),
1666            &cmdlist);
1667   add_cmd ("obscure", class_obscure, NULL, _("Obscure features."), &cmdlist);
1668   add_cmd ("aliases", class_alias, NULL,
1669            _("Aliases of other commands."), &cmdlist);
1670   add_cmd ("user-defined", class_user, NULL, _("\
1671 User-defined commands.\n\
1672 The commands in this class are those defined by the user.\n\
1673 Use the \"define\" command to define a command."), &cmdlist);
1674   add_cmd ("support", class_support, NULL, _("Support facilities."), &cmdlist);
1675   if (!dbx_commands)
1676     add_cmd ("status", class_info, NULL, _("Status inquiries."), &cmdlist);
1677   add_cmd ("files", class_files, NULL, _("Specifying and examining files."),
1678            &cmdlist);
1679   add_cmd ("breakpoints", class_breakpoint, NULL,
1680            _("Making program stop at certain points."), &cmdlist);
1681   add_cmd ("data", class_vars, NULL, _("Examining data."), &cmdlist);
1682   add_cmd ("stack", class_stack, NULL, _("\
1683 Examining the stack.\n\
1684 The stack is made up of stack frames.  Gdb assigns numbers to stack frames\n\
1685 counting from zero for the innermost (currently executing) frame.\n\n\
1686 At any time gdb identifies one frame as the \"selected\" frame.\n\
1687 Variable lookups are done with respect to the selected frame.\n\
1688 When the program being debugged stops, gdb selects the innermost frame.\n\
1689 The commands below can be used to select other frames by number or address."),
1690            &cmdlist);
1691   add_cmd ("running", class_run, NULL, _("Running the program."), &cmdlist);
1692
1693   /* Define general commands.  */
1694
1695   add_com ("pwd", class_files, pwd_command, _("\
1696 Print working directory.  This is used for your program as well."));
1697
1698   c = add_cmd ("cd", class_files, cd_command, _("\
1699 Set working directory to DIR for debugger and program being debugged.\n\
1700 The change does not take effect for the program being debugged\n\
1701 until the next time it is started."), &cmdlist);
1702   set_cmd_completer (c, filename_completer);
1703
1704   add_com ("echo", class_support, echo_command, _("\
1705 Print a constant string.  Give string as argument.\n\
1706 C escape sequences may be used in the argument.\n\
1707 No newline is added at the end of the argument;\n\
1708 use \"\\n\" if you want a newline to be printed.\n\
1709 Since leading and trailing whitespace are ignored in command arguments,\n\
1710 if you want to print some you must use \"\\\" before leading whitespace\n\
1711 to be printed or after trailing whitespace."));
1712   add_com ("document", class_support, document_command, _("\
1713 Document a user-defined command.\n\
1714 Give command name as argument.  Give documentation on following lines.\n\
1715 End with a line of just \"end\"."));
1716   add_com ("define", class_support, define_command, _("\
1717 Define a new command name.  Command name is argument.\n\
1718 Definition appears on following lines, one command per line.\n\
1719 End with a line of just \"end\".\n\
1720 Use the \"document\" command to give documentation for the new command.\n\
1721 Commands defined in this way may have up to ten arguments."));
1722
1723   source_help_text = xstrprintf (_("\
1724 Read commands from a file named FILE.\n\
1725 \n\
1726 Usage: source [-s] [-v] FILE\n\
1727 -s: search for the script in the source search path,\n\
1728     even if FILE contains directories.\n\
1729 -v: each command in FILE is echoed as it is executed.\n\
1730 \n\
1731 Note that the file \"%s\" is read automatically in this way\n\
1732 when GDB is started."), gdbinit);
1733   c = add_cmd ("source", class_support, source_command,
1734                source_help_text, &cmdlist);
1735   set_cmd_completer (c, filename_completer);
1736
1737   add_setshow_enum_cmd ("script-extension", class_support,
1738                         script_ext_enums, &script_ext_mode, _("\
1739 Set mode for script filename extension recognition."), _("\
1740 Show mode for script filename extension recognition."), _("\
1741 off  == no filename extension recognition (all sourced files are GDB scripts)\n\
1742 soft == evaluate script according to filename extension, fallback to GDB script"
1743   "\n\
1744 strict == evaluate script according to filename extension, error if not supported"
1745   ),
1746                         NULL,
1747                         show_script_ext_mode,
1748                         &setlist, &showlist);
1749
1750   add_com ("quit", class_support, quit_command, _("Exit gdb."));
1751   c = add_com ("help", class_support, help_command,
1752                _("Print list of commands."));
1753   set_cmd_completer (c, command_completer);
1754   add_com_alias ("q", "quit", class_support, 1);
1755   add_com_alias ("h", "help", class_support, 1);
1756
1757   add_setshow_boolean_cmd ("verbose", class_support, &info_verbose, _("\
1758 Set verbosity."), _("\
1759 Show verbosity."), NULL,
1760                            set_verbose,
1761                            show_info_verbose,
1762                            &setlist, &showlist);
1763
1764   add_prefix_cmd ("history", class_support, set_history,
1765                   _("Generic command for setting command history parameters."),
1766                   &sethistlist, "set history ", 0, &setlist);
1767   add_prefix_cmd ("history", class_support, show_history,
1768                   _("Generic command for showing command history parameters."),
1769                   &showhistlist, "show history ", 0, &showlist);
1770
1771   add_setshow_boolean_cmd ("expansion", no_class, &history_expansion_p, _("\
1772 Set history expansion on command input."), _("\
1773 Show history expansion on command input."), _("\
1774 Without an argument, history expansion is enabled."),
1775                            NULL,
1776                            show_history_expansion_p,
1777                            &sethistlist, &showhistlist);
1778
1779   add_prefix_cmd ("info", class_info, info_command, _("\
1780 Generic command for showing things about the program being debugged."),
1781                   &infolist, "info ", 0, &cmdlist);
1782   add_com_alias ("i", "info", class_info, 1);
1783   add_com_alias ("inf", "info", class_info, 1);
1784
1785   add_com ("complete", class_obscure, complete_command,
1786            _("List the completions for the rest of the line as a command."));
1787
1788   add_prefix_cmd ("show", class_info, show_command, _("\
1789 Generic command for showing things about the debugger."),
1790                   &showlist, "show ", 0, &cmdlist);
1791   /* Another way to get at the same thing.  */
1792   add_info ("set", show_command, _("Show all GDB settings."));
1793
1794   add_cmd ("commands", no_set_class, show_commands, _("\
1795 Show the history of commands you typed.\n\
1796 You can supply a command number to start with, or a `+' to start after\n\
1797 the previous command number shown."),
1798            &showlist);
1799
1800   add_cmd ("version", no_set_class, show_version,
1801            _("Show what version of GDB this is."), &showlist);
1802
1803   add_com ("while", class_support, while_command, _("\
1804 Execute nested commands WHILE the conditional expression is non zero.\n\
1805 The conditional expression must follow the word `while' and must in turn be\n\
1806 followed by a new line.  The nested commands must be entered one per line,\n\
1807 and should be terminated by the word `end'."));
1808
1809   add_com ("if", class_support, if_command, _("\
1810 Execute nested commands once IF the conditional expression is non zero.\n\
1811 The conditional expression must follow the word `if' and must in turn be\n\
1812 followed by a new line.  The nested commands must be entered one per line,\n\
1813 and should be terminated by the word 'else' or `end'.  If an else clause\n\
1814 is used, the same rules apply to its nested commands as to the first ones."));
1815
1816   /* If target is open when baud changes, it doesn't take effect until
1817      the next open (I think, not sure).  */
1818   add_setshow_zinteger_cmd ("remotebaud", no_class, &baud_rate, _("\
1819 Set baud rate for remote serial I/O."), _("\
1820 Show baud rate for remote serial I/O."), _("\
1821 This value is used to set the speed of the serial port when debugging\n\
1822 using remote targets."),
1823                             NULL,
1824                             show_baud_rate,
1825                             &setlist, &showlist);
1826
1827   add_setshow_zinteger_cmd ("remote", no_class, &remote_debug, _("\
1828 Set debugging of remote protocol."), _("\
1829 Show debugging of remote protocol."), _("\
1830 When enabled, each packet sent or received with the remote target\n\
1831 is displayed."),
1832                             NULL,
1833                             show_remote_debug,
1834                             &setdebuglist, &showdebuglist);
1835
1836   add_setshow_integer_cmd ("remotetimeout", no_class, &remote_timeout, _("\
1837 Set timeout limit to wait for target to respond."), _("\
1838 Show timeout limit to wait for target to respond."), _("\
1839 This value is used to set the time limit for gdb to wait for a response\n\
1840 from the target."),
1841                            NULL,
1842                            show_remote_timeout,
1843                            &setlist, &showlist);
1844
1845   add_prefix_cmd ("debug", no_class, set_debug,
1846                   _("Generic command for setting gdb debugging flags"),
1847                   &setdebuglist, "set debug ", 0, &setlist);
1848
1849   add_prefix_cmd ("debug", no_class, show_debug,
1850                   _("Generic command for showing gdb debugging flags"),
1851                   &showdebuglist, "show debug ", 0, &showlist);
1852
1853   c = add_com ("shell", class_support, shell_escape, _("\
1854 Execute the rest of the line as a shell command.\n\
1855 With no arguments, run an inferior shell."));
1856   set_cmd_completer (c, filename_completer);
1857
1858   c = add_com ("edit", class_files, edit_command, _("\
1859 Edit specified file or function.\n\
1860 With no argument, edits file containing most recent line listed.\n\
1861 Editing targets can be specified in these ways:\n\
1862   FILE:LINENUM, to edit at that line in that file,\n\
1863   FUNCTION, to edit at the beginning of that function,\n\
1864   FILE:FUNCTION, to distinguish among like-named static functions.\n\
1865   *ADDRESS, to edit at the line containing that address.\n\
1866 Uses EDITOR environment variable contents as editor (or ex as default)."));
1867
1868   c->completer = location_completer;
1869
1870   add_com ("list", class_files, list_command, _("\
1871 List specified function or line.\n\
1872 With no argument, lists ten more lines after or around previous listing.\n\
1873 \"list -\" lists the ten lines before a previous ten-line listing.\n\
1874 One argument specifies a line, and ten lines are listed around that line.\n\
1875 Two arguments with comma between specify starting and ending lines to list.\n\
1876 Lines can be specified in these ways:\n\
1877   LINENUM, to list around that line in current file,\n\
1878   FILE:LINENUM, to list around that line in that file,\n\
1879   FUNCTION, to list around beginning of that function,\n\
1880   FILE:FUNCTION, to distinguish among like-named static functions.\n\
1881   *ADDRESS, to list around the line containing that address.\n\
1882 With two args if one is empty it stands for ten lines away from \
1883 the other arg."));
1884
1885   if (!xdb_commands)
1886     add_com_alias ("l", "list", class_files, 1);
1887   else
1888     add_com_alias ("v", "list", class_files, 1);
1889
1890   if (dbx_commands)
1891     add_com_alias ("file", "list", class_files, 1);
1892
1893   c = add_com ("disassemble", class_vars, disassemble_command, _("\
1894 Disassemble a specified section of memory.\n\
1895 Default is the function surrounding the pc of the selected frame.\n\
1896 With a /m modifier, source lines are included (if available).\n\
1897 With a /r modifier, raw instructions in hex are included.\n\
1898 With a single argument, the function surrounding that address is dumped.\n\
1899 Two arguments (separated by a comma) are taken as a range of memory to dump,\n\
1900   in the form of \"start,end\", or \"start,+length\"."));
1901   set_cmd_completer (c, location_completer);
1902   if (xdb_commands)
1903     add_com_alias ("va", "disassemble", class_xdb, 0);
1904
1905   add_com_alias ("!", "shell", class_support, 0);
1906
1907   c = add_com ("make", class_support, make_command, _("\
1908 Run the ``make'' program using the rest of the line as arguments."));
1909   set_cmd_completer (c, filename_completer);
1910   add_cmd ("user", no_class, show_user, _("\
1911 Show definitions of non-python user defined commands.\n\
1912 Argument is the name of the user defined command.\n\
1913 With no argument, show definitions of all user defined commands."), &showlist);
1914   add_com ("apropos", class_support, apropos_command,
1915            _("Search for commands matching a REGEXP"));
1916
1917   add_setshow_integer_cmd ("max-user-call-depth", no_class,
1918                            &max_user_call_depth, _("\
1919 Set the max call depth for non-python user-defined commands."), _("\
1920 Show the max call depth for non-python user-defined commands."), NULL,
1921                            NULL,
1922                            show_max_user_call_depth,
1923                            &setlist, &showlist);
1924
1925   add_setshow_boolean_cmd ("trace-commands", no_class, &trace_commands, _("\
1926 Set tracing of GDB CLI commands."), _("\
1927 Show state of GDB CLI command tracing."), _("\
1928 When 'on', each command is displayed as it is executed."),
1929                            NULL,
1930                            NULL,
1931                            &setlist, &showlist);
1932
1933   c = add_com ("alias", class_support, alias_command, _("\
1934 Define a new command that is an alias of an existing command.\n\
1935 Usage: alias [-a] [--] ALIAS = COMMAND\n\
1936 ALIAS is the name of the alias command to create.\n\
1937 COMMAND is the command being aliased to.\n\
1938 If \"-a\" is specified, the command is an abbreviation,\n\
1939 and will not appear in help command list output.\n\
1940 \n\
1941 Examples:\n\
1942 Make \"spe\" an alias of \"set print elements\":\n\
1943   alias spe = set print elements\n\
1944 Make \"elms\" an alias of \"elements\" in the \"set print\" command:\n\
1945   alias -a set print elms = set print elements"));
1946 }