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