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