fixup position of #ifdef BFD64 for powerpc delta recently applied.
[deliverable/binutils-gdb.git] / gdb / cli / cli-cmds.c
1 /* GDB CLI commands.
2
3 Copyright 2000, 2001, 2002 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 2 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, write to the Free Software
19 Foundation, Inc., 59 Temple Place - Suite 330,
20 Boston, MA 02111-1307, USA. */
21
22 #include "defs.h"
23 #include "completer.h"
24 #include "target.h" /* For baud_rate, remote_debug and remote_timeout */
25 #include "gdb_wait.h" /* For shell escape implementation */
26 #include "gdb_regex.h" /* Used by apropos_command */
27 #include "filenames.h" /* for DOSish file names */
28
29 #include "ui-out.h"
30
31 #include "top.h"
32 #include "cli/cli-decode.h"
33 #include "cli/cli-script.h"
34 #include "cli/cli-setshow.h"
35 #include "cli/cli-cmds.h"
36
37 #ifndef GDBINIT_FILENAME
38 #define GDBINIT_FILENAME ".gdbinit"
39 #endif
40
41 /* From gdb/top.c */
42
43 extern void dont_repeat (void);
44
45 extern void set_verbose (char *, int, struct cmd_list_element *);
46
47 extern void show_history (char *, int);
48
49 extern void set_history (char *, int);
50
51 extern void show_commands (char *, int);
52
53 /* Prototypes for local functions */
54
55 static void complete_command (char *, int);
56
57 static void echo_command (char *, int);
58
59 static void pwd_command (char *, int);
60
61 static void show_version (char *, int);
62
63 static void validate_comname (char *);
64
65 static void help_command (char *, int);
66
67 static void show_command (char *, int);
68
69 static void info_command (char *, int);
70
71 static void show_debug (char *, int);
72
73 static void set_debug (char *, int);
74
75 static void show_user (char *, int);
76
77 static void make_command (char *, int);
78
79 static void shell_escape (char *, int);
80
81 void apropos_command (char *, int);
82 \f
83 /* Limit the call depth of user-defined commands */
84 int max_user_call_depth;
85
86 /* Define all cmd_list_elements. */
87
88 /* Chain containing all defined commands. */
89
90 struct cmd_list_element *cmdlist;
91
92 /* Chain containing all defined info subcommands. */
93
94 struct cmd_list_element *infolist;
95
96 /* Chain containing all defined enable subcommands. */
97
98 struct cmd_list_element *enablelist;
99
100 /* Chain containing all defined disable subcommands. */
101
102 struct cmd_list_element *disablelist;
103
104 /* Chain containing all defined toggle subcommands. */
105
106 struct cmd_list_element *togglelist;
107
108 /* Chain containing all defined stop subcommands. */
109
110 struct cmd_list_element *stoplist;
111
112 /* Chain containing all defined delete subcommands. */
113
114 struct cmd_list_element *deletelist;
115
116 /* Chain containing all defined "enable breakpoint" subcommands. */
117
118 struct cmd_list_element *enablebreaklist;
119
120 /* Chain containing all defined set subcommands */
121
122 struct cmd_list_element *setlist;
123
124 /* Chain containing all defined unset subcommands */
125
126 struct cmd_list_element *unsetlist;
127
128 /* Chain containing all defined show subcommands. */
129
130 struct cmd_list_element *showlist;
131
132 /* Chain containing all defined \"set history\". */
133
134 struct cmd_list_element *sethistlist;
135
136 /* Chain containing all defined \"show history\". */
137
138 struct cmd_list_element *showhistlist;
139
140 /* Chain containing all defined \"unset history\". */
141
142 struct cmd_list_element *unsethistlist;
143
144 /* Chain containing all defined maintenance subcommands. */
145
146 struct cmd_list_element *maintenancelist;
147
148 /* Chain containing all defined "maintenance info" subcommands. */
149
150 struct cmd_list_element *maintenanceinfolist;
151
152 /* Chain containing all defined "maintenance print" subcommands. */
153
154 struct cmd_list_element *maintenanceprintlist;
155
156 struct cmd_list_element *setprintlist;
157
158 struct cmd_list_element *showprintlist;
159
160 struct cmd_list_element *setdebuglist;
161
162 struct cmd_list_element *showdebuglist;
163
164 struct cmd_list_element *setchecklist;
165
166 struct cmd_list_element *showchecklist;
167 \f
168 /* Utility used everywhere when at least one argument is needed and
169 none is supplied. */
170
171 void
172 error_no_arg (char *why)
173 {
174 error ("Argument required (%s).", why);
175 }
176
177 /* The "info" command is defined as a prefix, with allow_unknown = 0.
178 Therefore, its own definition is called only for "info" with no args. */
179
180 /* ARGSUSED */
181 static void
182 info_command (char *arg, int from_tty)
183 {
184 printf_unfiltered ("\"info\" must be followed by the name of an info command.\n");
185 help_list (infolist, "info ", -1, gdb_stdout);
186 }
187
188 /* The "show" command with no arguments shows all the settings. */
189
190 /* ARGSUSED */
191 static void
192 show_command (char *arg, int from_tty)
193 {
194 cmd_show_list (showlist, from_tty, "");
195 }
196 \f
197 /* Provide documentation on command or list given by COMMAND. FROM_TTY
198 is ignored. */
199
200 /* ARGSUSED */
201 static void
202 help_command (char *command, int from_tty)
203 {
204 help_cmd (command, gdb_stdout);
205 }
206 \f
207 /* String compare function for qsort. */
208 static int
209 compare_strings (const void *arg1, const void *arg2)
210 {
211 const char **s1 = (const char **) arg1;
212 const char **s2 = (const char **) arg2;
213 return strcmp (*s1, *s2);
214 }
215
216 /* The "complete" command is used by Emacs to implement completion. */
217
218 /* ARGSUSED */
219 static void
220 complete_command (char *arg, int from_tty)
221 {
222 int i;
223 int argpoint;
224 char **completions;
225
226 dont_repeat ();
227
228 if (arg == NULL)
229 arg = "";
230 argpoint = strlen (arg);
231
232 completions = complete_line (arg, arg, argpoint);
233
234 if (completions)
235 {
236 int item, size;
237
238 for (size = 0; completions[size]; ++size)
239 ;
240 qsort (completions, size, sizeof (char *), compare_strings);
241
242 /* We do extra processing here since we only want to print each
243 unique item once. */
244 item = 0;
245 while (item < size)
246 {
247 int next_item;
248 printf_unfiltered ("%s\n", completions[item]);
249 next_item = item + 1;
250 while (next_item < size
251 && ! strcmp (completions[item], completions[next_item]))
252 {
253 xfree (completions[next_item]);
254 ++next_item;
255 }
256
257 xfree (completions[item]);
258 item = next_item;
259 }
260
261 xfree (completions);
262 }
263 }
264
265 int
266 is_complete_command (struct cmd_list_element *c)
267 {
268 return cmd_cfunc_eq (c, complete_command);
269 }
270
271 /* ARGSUSED */
272 static void
273 show_version (char *args, int from_tty)
274 {
275 immediate_quit++;
276 print_gdb_version (gdb_stdout);
277 printf_filtered ("\n");
278 immediate_quit--;
279 }
280
281 /* Handle the quit command. */
282
283 void
284 quit_command (char *args, int from_tty)
285 {
286 if (!quit_confirm ())
287 error ("Not confirmed.");
288 quit_force (args, from_tty);
289 }
290
291 /* ARGSUSED */
292 static void
293 pwd_command (char *args, int from_tty)
294 {
295 if (args)
296 error ("The \"pwd\" command does not take an argument: %s", args);
297 getcwd (gdb_dirbuf, sizeof (gdb_dirbuf));
298
299 if (!STREQ (gdb_dirbuf, current_directory))
300 printf_unfiltered ("Working directory %s\n (canonically %s).\n",
301 current_directory, gdb_dirbuf);
302 else
303 printf_unfiltered ("Working directory %s.\n", current_directory);
304 }
305
306 void
307 cd_command (char *dir, int from_tty)
308 {
309 int len;
310 /* Found something other than leading repetitions of "/..". */
311 int found_real_path;
312 char *p;
313
314 /* If the new directory is absolute, repeat is a no-op; if relative,
315 repeat might be useful but is more likely to be a mistake. */
316 dont_repeat ();
317
318 if (dir == 0)
319 error_no_arg ("new working directory");
320
321 dir = tilde_expand (dir);
322 make_cleanup (xfree, dir);
323
324 if (chdir (dir) < 0)
325 perror_with_name (dir);
326
327 #ifdef HAVE_DOS_BASED_FILE_SYSTEM
328 /* There's too much mess with DOSish names like "d:", "d:.",
329 "d:./foo" etc. Instead of having lots of special #ifdef'ed code,
330 simply get the canonicalized name of the current directory. */
331 dir = getcwd (gdb_dirbuf, sizeof (gdb_dirbuf));
332 #endif
333
334 len = strlen (dir);
335 if (IS_DIR_SEPARATOR (dir[len - 1]))
336 {
337 /* Remove the trailing slash unless this is a root directory
338 (including a drive letter on non-Unix systems). */
339 if (!(len == 1) /* "/" */
340 #ifdef HAVE_DOS_BASED_FILE_SYSTEM
341 && !(len == 3 && dir[1] == ':') /* "d:/" */
342 #endif
343 )
344 len--;
345 }
346
347 dir = savestring (dir, len);
348 if (IS_ABSOLUTE_PATH (dir))
349 current_directory = dir;
350 else
351 {
352 if (IS_DIR_SEPARATOR (current_directory[strlen (current_directory) - 1]))
353 current_directory = concat (current_directory, dir, NULL);
354 else
355 current_directory = concat (current_directory, SLASH_STRING, dir, NULL);
356 xfree (dir);
357 }
358
359 /* Now simplify any occurrences of `.' and `..' in the pathname. */
360
361 found_real_path = 0;
362 for (p = current_directory; *p;)
363 {
364 if (IS_DIR_SEPARATOR (p[0]) && p[1] == '.'
365 && (p[2] == 0 || IS_DIR_SEPARATOR (p[2])))
366 strcpy (p, p + 2);
367 else if (IS_DIR_SEPARATOR (p[0]) && p[1] == '.' && p[2] == '.'
368 && (p[3] == 0 || IS_DIR_SEPARATOR (p[3])))
369 {
370 if (found_real_path)
371 {
372 /* Search backwards for the directory just before the "/.."
373 and obliterate it and the "/..". */
374 char *q = p;
375 while (q != current_directory && !IS_DIR_SEPARATOR (q[-1]))
376 --q;
377
378 if (q == current_directory)
379 /* current_directory is
380 a relative pathname ("can't happen"--leave it alone). */
381 ++p;
382 else
383 {
384 strcpy (q - 1, p + 3);
385 p = q - 1;
386 }
387 }
388 else
389 /* We are dealing with leading repetitions of "/..", for example
390 "/../..", which is the Mach super-root. */
391 p += 3;
392 }
393 else
394 {
395 found_real_path = 1;
396 ++p;
397 }
398 }
399
400 forget_cached_source_info ();
401
402 if (from_tty)
403 pwd_command ((char *) 0, 1);
404 }
405 \f
406 void
407 source_command (char *args, int from_tty)
408 {
409 FILE *stream;
410 struct cleanup *old_cleanups;
411 char *file = args;
412
413 if (file == NULL)
414 {
415 error ("source command requires pathname of file to source.");
416 }
417
418 file = tilde_expand (file);
419 old_cleanups = make_cleanup (xfree, file);
420
421 stream = fopen (file, FOPEN_RT);
422 if (!stream)
423 {
424 if (from_tty)
425 perror_with_name (file);
426 else
427 return;
428 }
429
430 script_from_file (stream, file);
431
432 do_cleanups (old_cleanups);
433 }
434
435 /* ARGSUSED */
436 static void
437 echo_command (char *text, int from_tty)
438 {
439 char *p = text;
440 register int c;
441
442 if (text)
443 while ((c = *p++) != '\0')
444 {
445 if (c == '\\')
446 {
447 /* \ at end of argument is used after spaces
448 so they won't be lost. */
449 if (*p == 0)
450 return;
451
452 c = parse_escape (&p);
453 if (c >= 0)
454 printf_filtered ("%c", c);
455 }
456 else
457 printf_filtered ("%c", c);
458 }
459
460 /* Force this output to appear now. */
461 wrap_here ("");
462 gdb_flush (gdb_stdout);
463 }
464
465 /* ARGSUSED */
466 static void
467 shell_escape (char *arg, int from_tty)
468 {
469 #ifdef CANT_FORK
470 /* If ARG is NULL, they want an inferior shell, but `system' just
471 reports if the shell is available when passed a NULL arg. */
472 int rc = system (arg ? arg : "");
473
474 if (!arg)
475 arg = "inferior shell";
476
477 if (rc == -1)
478 {
479 fprintf_unfiltered (gdb_stderr, "Cannot execute %s: %s\n", arg,
480 safe_strerror (errno));
481 gdb_flush (gdb_stderr);
482 }
483 else if (rc)
484 {
485 fprintf_unfiltered (gdb_stderr, "%s exited with status %d\n", arg, rc);
486 gdb_flush (gdb_stderr);
487 }
488 #ifdef GLOBAL_CURDIR
489 /* Make sure to return to the directory GDB thinks it is, in case the
490 shell command we just ran changed it. */
491 chdir (current_directory);
492 #endif
493 #else /* Can fork. */
494 int rc, status, pid;
495 char *p, *user_shell;
496
497 if ((user_shell = (char *) getenv ("SHELL")) == NULL)
498 user_shell = "/bin/sh";
499
500 /* Get the name of the shell for arg0 */
501 if ((p = strrchr (user_shell, '/')) == NULL)
502 p = user_shell;
503 else
504 p++; /* Get past '/' */
505
506 if ((pid = fork ()) == 0)
507 {
508 if (!arg)
509 execl (user_shell, p, 0);
510 else
511 execl (user_shell, p, "-c", arg, 0);
512
513 fprintf_unfiltered (gdb_stderr, "Cannot execute %s: %s\n", user_shell,
514 safe_strerror (errno));
515 gdb_flush (gdb_stderr);
516 _exit (0177);
517 }
518
519 if (pid != -1)
520 while ((rc = wait (&status)) != pid && rc != -1)
521 ;
522 else
523 error ("Fork failed");
524 #endif /* Can fork. */
525 }
526
527 static void
528 make_command (char *arg, int from_tty)
529 {
530 char *p;
531
532 if (arg == 0)
533 p = "make";
534 else
535 {
536 p = xmalloc (sizeof ("make ") + strlen (arg));
537 strcpy (p, "make ");
538 strcpy (p + sizeof ("make ") - 1, arg);
539 }
540
541 shell_escape (p, from_tty);
542 }
543
544 /* ARGSUSED */
545 static void
546 show_user (char *args, int from_tty)
547 {
548 struct cmd_list_element *c;
549 extern struct cmd_list_element *cmdlist;
550
551 if (args)
552 {
553 c = lookup_cmd (&args, cmdlist, "", 0, 1);
554 if (c->class != class_user)
555 error ("Not a user command.");
556 show_user_1 (c, gdb_stdout);
557 }
558 else
559 {
560 for (c = cmdlist; c; c = c->next)
561 {
562 if (c->class == class_user)
563 show_user_1 (c, gdb_stdout);
564 }
565 }
566 }
567
568 /* Search through names of commands and documentations for a certain
569 regular expression.
570 */
571 void
572 apropos_command (char *searchstr, int from_tty)
573 {
574 extern struct cmd_list_element *cmdlist; /*This is the main command list*/
575 regex_t pattern;
576 char *pattern_fastmap;
577 char errorbuffer[512];
578 pattern_fastmap = xcalloc (256, sizeof (char));
579 if (searchstr == NULL)
580 error("REGEXP string is empty");
581
582 if (regcomp(&pattern,searchstr,REG_ICASE) == 0)
583 {
584 pattern.fastmap=pattern_fastmap;
585 re_compile_fastmap(&pattern);
586 apropos_cmd (gdb_stdout,cmdlist,&pattern,"");
587 }
588 else
589 {
590 regerror(regcomp(&pattern,searchstr,REG_ICASE),NULL,errorbuffer,512);
591 error("Error in regular expression:%s",errorbuffer);
592 }
593 xfree (pattern_fastmap);
594 }
595 \f
596 static void
597 set_debug (char *arg, int from_tty)
598 {
599 printf_unfiltered ("\"set debug\" must be followed by the name of a print subcommand.\n");
600 help_list (setdebuglist, "set debug ", -1, gdb_stdout);
601 }
602
603 static void
604 show_debug (char *args, int from_tty)
605 {
606 cmd_show_list (showdebuglist, from_tty, "");
607 }
608
609 void
610 init_cmd_lists (void)
611 {
612 max_user_call_depth = 1024;
613
614 cmdlist = NULL;
615 infolist = NULL;
616 enablelist = NULL;
617 disablelist = NULL;
618 togglelist = NULL;
619 stoplist = NULL;
620 deletelist = NULL;
621 enablebreaklist = NULL;
622 setlist = NULL;
623 unsetlist = NULL;
624 showlist = NULL;
625 sethistlist = NULL;
626 showhistlist = NULL;
627 unsethistlist = NULL;
628 maintenancelist = NULL;
629 maintenanceinfolist = NULL;
630 maintenanceprintlist = NULL;
631 setprintlist = NULL;
632 showprintlist = NULL;
633 setchecklist = NULL;
634 showchecklist = NULL;
635 }
636
637 \f
638 void
639 init_cli_cmds (void)
640 {
641 struct cmd_list_element *c;
642
643 /* Define the classes of commands.
644 They will appear in the help list in the reverse of this order. */
645
646 add_cmd ("internals", class_maintenance, NULL,
647 "Maintenance commands.\n\
648 Some gdb commands are provided just for use by gdb maintainers.\n\
649 These commands are subject to frequent change, and may not be as\n\
650 well documented as user commands.",
651 &cmdlist);
652 add_cmd ("obscure", class_obscure, NULL, "Obscure features.", &cmdlist);
653 add_cmd ("aliases", class_alias, NULL, "Aliases of other commands.", &cmdlist);
654 add_cmd ("user-defined", class_user, NULL, "User-defined commands.\n\
655 The commands in this class are those defined by the user.\n\
656 Use the \"define\" command to define a command.", &cmdlist);
657 add_cmd ("support", class_support, NULL, "Support facilities.", &cmdlist);
658 if (!dbx_commands)
659 add_cmd ("status", class_info, NULL, "Status inquiries.", &cmdlist);
660 add_cmd ("files", class_files, NULL, "Specifying and examining files.", &cmdlist);
661 add_cmd ("breakpoints", class_breakpoint, NULL, "Making program stop at certain points.", &cmdlist);
662 add_cmd ("data", class_vars, NULL, "Examining data.", &cmdlist);
663 add_cmd ("stack", class_stack, NULL, "Examining the stack.\n\
664 The stack is made up of stack frames. Gdb assigns numbers to stack frames\n\
665 counting from zero for the innermost (currently executing) frame.\n\n\
666 At any time gdb identifies one frame as the \"selected\" frame.\n\
667 Variable lookups are done with respect to the selected frame.\n\
668 When the program being debugged stops, gdb selects the innermost frame.\n\
669 The commands below can be used to select other frames by number or address.",
670 &cmdlist);
671 add_cmd ("running", class_run, NULL, "Running the program.", &cmdlist);
672
673 /* Define general commands. */
674
675 add_com ("pwd", class_files, pwd_command,
676 "Print working directory. This is used for your program as well.");
677 c = add_cmd ("cd", class_files, cd_command,
678 "Set working directory to DIR for debugger and program being debugged.\n\
679 The change does not take effect for the program being debugged\n\
680 until the next time it is started.", &cmdlist);
681 set_cmd_completer (c, filename_completer);
682
683 add_com ("echo", class_support, echo_command,
684 "Print a constant string. Give string as argument.\n\
685 C escape sequences may be used in the argument.\n\
686 No newline is added at the end of the argument;\n\
687 use \"\\n\" if you want a newline to be printed.\n\
688 Since leading and trailing whitespace are ignored in command arguments,\n\
689 if you want to print some you must use \"\\\" before leading whitespace\n\
690 to be printed or after trailing whitespace.");
691 add_com ("document", class_support, document_command,
692 "Document a user-defined command.\n\
693 Give command name as argument. Give documentation on following lines.\n\
694 End with a line of just \"end\".");
695 add_com ("define", class_support, define_command,
696 "Define a new command name. Command name is argument.\n\
697 Definition appears on following lines, one command per line.\n\
698 End with a line of just \"end\".\n\
699 Use the \"document\" command to give documentation for the new command.\n\
700 Commands defined in this way may have up to ten arguments.");
701
702 c = add_cmd ("source", class_support, source_command,
703 "Read commands from a file named FILE.\n\
704 Note that the file \"" GDBINIT_FILENAME "\" is read automatically in this way\n\
705 when gdb is started.", &cmdlist);
706 set_cmd_completer (c, filename_completer);
707
708 add_com ("quit", class_support, quit_command, "Exit gdb.");
709 c = add_com ("help", class_support, help_command, "Print list of commands.");
710 set_cmd_completer (c, command_completer);
711 add_com_alias ("q", "quit", class_support, 1);
712 add_com_alias ("h", "help", class_support, 1);
713
714 c = add_set_cmd ("verbose", class_support, var_boolean, (char *) &info_verbose,
715 "Set ",
716 &setlist),
717 add_show_from_set (c, &showlist);
718 set_cmd_sfunc (c, set_verbose);
719 set_verbose (NULL, 0, c);
720
721 add_prefix_cmd ("history", class_support, set_history,
722 "Generic command for setting command history parameters.",
723 &sethistlist, "set history ", 0, &setlist);
724 add_prefix_cmd ("history", class_support, show_history,
725 "Generic command for showing command history parameters.",
726 &showhistlist, "show history ", 0, &showlist);
727
728 add_show_from_set
729 (add_set_cmd ("expansion", no_class, var_boolean, (char *) &history_expansion_p,
730 "Set history expansion on command input.\n\
731 Without an argument, history expansion is enabled.", &sethistlist),
732 &showhistlist);
733
734 add_prefix_cmd ("info", class_info, info_command,
735 "Generic command for showing things about the program being debugged.",
736 &infolist, "info ", 0, &cmdlist);
737 add_com_alias ("i", "info", class_info, 1);
738
739 add_com ("complete", class_obscure, complete_command,
740 "List the completions for the rest of the line as a command.");
741
742 add_prefix_cmd ("show", class_info, show_command,
743 "Generic command for showing things about the debugger.",
744 &showlist, "show ", 0, &cmdlist);
745 /* Another way to get at the same thing. */
746 add_info ("set", show_command, "Show all GDB settings.");
747
748 add_cmd ("commands", no_class, show_commands,
749 "Show the history of commands you typed.\n\
750 You can supply a command number to start with, or a `+' to start after\n\
751 the previous command number shown.",
752 &showlist);
753
754 add_cmd ("version", no_class, show_version,
755 "Show what version of GDB this is.", &showlist);
756
757 add_com ("while", class_support, while_command,
758 "Execute nested commands WHILE the conditional expression is non zero.\n\
759 The conditional expression must follow the word `while' and must in turn be\n\
760 followed by a new line. The nested commands must be entered one per line,\n\
761 and should be terminated by the word `end'.");
762
763 add_com ("if", class_support, if_command,
764 "Execute nested commands once IF the conditional expression is non zero.\n\
765 The conditional expression must follow the word `if' and must in turn be\n\
766 followed by a new line. The nested commands must be entered one per line,\n\
767 and should be terminated by the word 'else' or `end'. If an else clause\n\
768 is used, the same rules apply to its nested commands as to the first ones.");
769
770 /* If target is open when baud changes, it doesn't take effect until the
771 next open (I think, not sure). */
772 add_show_from_set (add_set_cmd ("remotebaud", no_class,
773 var_zinteger, (char *) &baud_rate,
774 "Set baud rate for remote serial I/O.\n\
775 This value is used to set the speed of the serial port when debugging\n\
776 using remote targets.", &setlist),
777 &showlist);
778
779 c = add_set_cmd ("remotedebug", no_class, var_zinteger,
780 (char *) &remote_debug,
781 "Set debugging of remote protocol.\n\
782 When enabled, each packet sent or received with the remote target\n\
783 is displayed.", &setlist);
784 deprecate_cmd (c, "set debug remote");
785 deprecate_cmd (add_show_from_set (c, &showlist), "show debug remote");
786
787 add_show_from_set (add_set_cmd ("remote", no_class, var_zinteger,
788 (char *) &remote_debug,
789 "Set debugging of remote protocol.\n\
790 When enabled, each packet sent or received with the remote target\n\
791 is displayed.", &setdebuglist),
792 &showdebuglist);
793
794 add_show_from_set (
795 add_set_cmd ("remotetimeout", no_class, var_integer, (char *) &remote_timeout,
796 "Set timeout limit to wait for target to respond.\n\
797 This value is used to set the time limit for gdb to wait for a response\n\
798 from the target.", &setlist),
799 &showlist);
800
801 add_prefix_cmd ("debug", no_class, set_debug,
802 "Generic command for setting gdb debugging flags",
803 &setdebuglist, "set debug ", 0, &setlist);
804
805 add_prefix_cmd ("debug", no_class, show_debug,
806 "Generic command for showing gdb debugging flags",
807 &showdebuglist, "show debug ", 0, &showlist);
808
809 c = add_com ("shell", class_support, shell_escape,
810 "Execute the rest of the line as a shell command.\n\
811 With no arguments, run an inferior shell.");
812 set_cmd_completer (c, filename_completer);
813
814 /* NOTE: cagney/2000-03-20: Being able to enter ``(gdb) !ls'' would
815 be a really useful feature. Unfortunately, the below wont do
816 this. Instead it adds support for the form ``(gdb) ! ls''
817 (i.e. the space is required). If the ``!'' command below is
818 added the complains about no ``!'' command would be replaced by
819 complains about how the ``!'' command is broken :-) */
820 if (xdb_commands)
821 add_com_alias ("!", "shell", class_support, 0);
822
823 c = add_com ("make", class_support, make_command,
824 "Run the ``make'' program using the rest of the line as arguments.");
825 set_cmd_completer (c, filename_completer);
826 add_cmd ("user", no_class, show_user,
827 "Show definitions of user defined commands.\n\
828 Argument is the name of the user defined command.\n\
829 With no argument, show definitions of all user defined commands.", &showlist);
830 add_com ("apropos", class_support, apropos_command, "Search for commands matching a REGEXP");
831
832 add_show_from_set (
833 add_set_cmd ("max-user-call-depth", no_class, var_integer,
834 (char *) &max_user_call_depth,
835 "Set the max call depth for user-defined commands.\n",
836 &setlist),
837 &showlist);
838 }
This page took 0.051093 seconds and 4 git commands to generate.