531a2c3561978a98dacfa50b606cdecf3fe80aa7
[deliverable/binutils-gdb.git] / gdb / main.c
1 /* Top level stuff for GDB, the GNU debugger.
2
3 Copyright (C) 1986-2013 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 "top.h"
22 #include "target.h"
23 #include "inferior.h"
24 #include "symfile.h"
25 #include "gdbcore.h"
26
27 #include "exceptions.h"
28 #include "getopt.h"
29
30 #include <sys/types.h>
31 #include "gdb_stat.h"
32 #include <ctype.h>
33
34 #include "gdb_string.h"
35 #include "event-loop.h"
36 #include "ui-out.h"
37
38 #include "interps.h"
39 #include "main.h"
40 #include "source.h"
41 #include "cli/cli-cmds.h"
42 #include "python/python.h"
43 #include "objfiles.h"
44 #include "auto-load.h"
45 #include "maint.h"
46
47 #include "filenames.h"
48
49 /* The selected interpreter. This will be used as a set command
50 variable, so it should always be malloc'ed - since
51 do_setshow_command will free it. */
52 char *interpreter_p;
53
54 /* Whether xdb commands will be handled. */
55 int xdb_commands = 0;
56
57 /* Whether dbx commands will be handled. */
58 int dbx_commands = 0;
59
60 /* System root path, used to find libraries etc. */
61 char *gdb_sysroot = 0;
62
63 /* GDB datadir, used to store data files. */
64 char *gdb_datadir = 0;
65
66 /* Non-zero if GDB_DATADIR was provided on the command line.
67 This doesn't track whether data-directory is set later from the
68 command line, but we don't reread system.gdbinit when that happens. */
69 static int gdb_datadir_provided = 0;
70
71 /* If gdb was configured with --with-python=/path,
72 the possibly relocated path to python's lib directory. */
73 char *python_libdir = 0;
74
75 struct ui_file *gdb_stdout;
76 struct ui_file *gdb_stderr;
77 struct ui_file *gdb_stdlog;
78 struct ui_file *gdb_stdin;
79 /* Target IO streams. */
80 struct ui_file *gdb_stdtargin;
81 struct ui_file *gdb_stdtarg;
82 struct ui_file *gdb_stdtargerr;
83
84 /* True if --batch or --batch-silent was seen. */
85 int batch_flag = 0;
86
87 /* Support for the --batch-silent option. */
88 int batch_silent = 0;
89
90 /* Support for --return-child-result option.
91 Set the default to -1 to return error in the case
92 that the program does not run or does not complete. */
93 int return_child_result = 0;
94 int return_child_result_value = -1;
95
96
97 /* GDB as it has been invoked from the command line (i.e. argv[0]). */
98 static char *gdb_program_name;
99
100 static void print_gdb_help (struct ui_file *);
101
102 /* Relocate a file or directory. PROGNAME is the name by which gdb
103 was invoked (i.e., argv[0]). INITIAL is the default value for the
104 file or directory. FLAG is true if the value is relocatable, false
105 otherwise. Returns a newly allocated string; this may return NULL
106 under the same conditions as make_relative_prefix. */
107
108 static char *
109 relocate_path (const char *progname, const char *initial, int flag)
110 {
111 if (flag)
112 return make_relative_prefix (progname, BINDIR, initial);
113 return xstrdup (initial);
114 }
115
116 /* Like relocate_path, but specifically checks for a directory.
117 INITIAL is relocated according to the rules of relocate_path. If
118 the result is a directory, it is used; otherwise, INITIAL is used.
119 The chosen directory is then canonicalized using lrealpath. This
120 function always returns a newly-allocated string. */
121
122 char *
123 relocate_gdb_directory (const char *initial, int flag)
124 {
125 char *dir;
126
127 dir = relocate_path (gdb_program_name, initial, flag);
128 if (dir)
129 {
130 struct stat s;
131
132 if (*dir == '\0' || stat (dir, &s) != 0 || !S_ISDIR (s.st_mode))
133 {
134 xfree (dir);
135 dir = NULL;
136 }
137 }
138 if (!dir)
139 dir = xstrdup (initial);
140
141 /* Canonicalize the directory. */
142 if (*dir)
143 {
144 char *canon_sysroot = lrealpath (dir);
145
146 if (canon_sysroot)
147 {
148 xfree (dir);
149 dir = canon_sysroot;
150 }
151 }
152
153 return dir;
154 }
155
156 /* Compute the locations of init files that GDB should source and
157 return them in SYSTEM_GDBINIT, HOME_GDBINIT, LOCAL_GDBINIT. If
158 there is no system gdbinit (resp. home gdbinit and local gdbinit)
159 to be loaded, then SYSTEM_GDBINIT (resp. HOME_GDBINIT and
160 LOCAL_GDBINIT) is set to NULL. */
161 static void
162 get_init_files (char **system_gdbinit,
163 char **home_gdbinit,
164 char **local_gdbinit)
165 {
166 static char *sysgdbinit = NULL;
167 static char *homeinit = NULL;
168 static char *localinit = NULL;
169 static int initialized = 0;
170
171 if (!initialized)
172 {
173 struct stat homebuf, cwdbuf, s;
174 char *homedir;
175
176 if (SYSTEM_GDBINIT[0])
177 {
178 int datadir_len = strlen (GDB_DATADIR);
179 int sys_gdbinit_len = strlen (SYSTEM_GDBINIT);
180 char *relocated_sysgdbinit;
181
182 /* If SYSTEM_GDBINIT lives in data-directory, and data-directory
183 has been provided, search for SYSTEM_GDBINIT there. */
184 if (gdb_datadir_provided
185 && datadir_len < sys_gdbinit_len
186 && filename_ncmp (SYSTEM_GDBINIT, GDB_DATADIR, datadir_len) == 0
187 && IS_DIR_SEPARATOR (SYSTEM_GDBINIT[datadir_len]))
188 {
189 /* Append the part of SYSTEM_GDBINIT that follows GDB_DATADIR
190 to gdb_datadir. */
191 char *tmp_sys_gdbinit = xstrdup (SYSTEM_GDBINIT + datadir_len);
192 char *p;
193
194 for (p = tmp_sys_gdbinit; IS_DIR_SEPARATOR (*p); ++p)
195 continue;
196 relocated_sysgdbinit = concat (gdb_datadir, SLASH_STRING, p,
197 NULL);
198 xfree (tmp_sys_gdbinit);
199 }
200 else
201 {
202 relocated_sysgdbinit = relocate_path (gdb_program_name,
203 SYSTEM_GDBINIT,
204 SYSTEM_GDBINIT_RELOCATABLE);
205 }
206 if (relocated_sysgdbinit && stat (relocated_sysgdbinit, &s) == 0)
207 sysgdbinit = relocated_sysgdbinit;
208 else
209 xfree (relocated_sysgdbinit);
210 }
211
212 homedir = getenv ("HOME");
213
214 /* If the .gdbinit file in the current directory is the same as
215 the $HOME/.gdbinit file, it should not be sourced. homebuf
216 and cwdbuf are used in that purpose. Make sure that the stats
217 are zero in case one of them fails (this guarantees that they
218 won't match if either exists). */
219
220 memset (&homebuf, 0, sizeof (struct stat));
221 memset (&cwdbuf, 0, sizeof (struct stat));
222
223 if (homedir)
224 {
225 homeinit = xstrprintf ("%s/%s", homedir, gdbinit);
226 if (stat (homeinit, &homebuf) != 0)
227 {
228 xfree (homeinit);
229 homeinit = NULL;
230 }
231 }
232
233 if (stat (gdbinit, &cwdbuf) == 0)
234 {
235 if (!homeinit
236 || memcmp ((char *) &homebuf, (char *) &cwdbuf,
237 sizeof (struct stat)))
238 localinit = gdbinit;
239 }
240
241 initialized = 1;
242 }
243
244 *system_gdbinit = sysgdbinit;
245 *home_gdbinit = homeinit;
246 *local_gdbinit = localinit;
247 }
248
249 /* Call command_loop. If it happens to return, pass that through as a
250 non-zero return status. */
251
252 static int
253 captured_command_loop (void *data)
254 {
255 /* Top-level execution commands can be run on the background from
256 here on. */
257 interpreter_async = 1;
258
259 current_interp_command_loop ();
260 /* FIXME: cagney/1999-11-05: A correct command_loop() implementaton
261 would clean things up (restoring the cleanup chain) to the state
262 they were just prior to the call. Technically, this means that
263 the do_cleanups() below is redundant. Unfortunately, many FUNCs
264 are not that well behaved. do_cleanups should either be replaced
265 with a do_cleanups call (to cover the problem) or an assertion
266 check to detect bad FUNCs code. */
267 do_cleanups (all_cleanups ());
268 /* If the command_loop returned, normally (rather than threw an
269 error) we try to quit. If the quit is aborted, catch_errors()
270 which called this catch the signal and restart the command
271 loop. */
272 quit_command (NULL, instream == stdin);
273 return 1;
274 }
275
276 /* Arguments of --command option and its counterpart. */
277 typedef struct cmdarg {
278 /* Type of this option. */
279 enum {
280 /* Option type -x. */
281 CMDARG_FILE,
282
283 /* Option type -ex. */
284 CMDARG_COMMAND,
285
286 /* Option type -ix. */
287 CMDARG_INIT_FILE,
288
289 /* Option type -iex. */
290 CMDARG_INIT_COMMAND
291 } type;
292
293 /* Value of this option - filename or the GDB command itself. String memory
294 is not owned by this structure despite it is 'const'. */
295 char *string;
296 } cmdarg_s;
297
298 /* Define type VEC (cmdarg_s). */
299 DEF_VEC_O (cmdarg_s);
300
301 static int
302 captured_main (void *data)
303 {
304 struct captured_main_args *context = data;
305 int argc = context->argc;
306 char **argv = context->argv;
307 static int quiet = 0;
308 static int set_args = 0;
309 static int inhibit_home_gdbinit = 0;
310
311 /* Pointers to various arguments from command line. */
312 char *symarg = NULL;
313 char *execarg = NULL;
314 char *pidarg = NULL;
315 char *corearg = NULL;
316 char *pid_or_core_arg = NULL;
317 char *cdarg = NULL;
318 char *ttyarg = NULL;
319
320 /* These are static so that we can take their address in an
321 initializer. */
322 static int print_help;
323 static int print_version;
324 static int print_configuration;
325
326 /* Pointers to all arguments of --command option. */
327 VEC (cmdarg_s) *cmdarg_vec = NULL;
328 struct cmdarg *cmdarg_p;
329
330 /* Indices of all arguments of --directory option. */
331 char **dirarg;
332 /* Allocated size. */
333 int dirsize;
334 /* Number of elements used. */
335 int ndir;
336
337 /* gdb init files. */
338 char *system_gdbinit;
339 char *home_gdbinit;
340 char *local_gdbinit;
341
342 int i;
343 int save_auto_load;
344 struct objfile *objfile;
345
346 struct cleanup *pre_stat_chain;
347
348 #ifdef HAVE_SBRK
349 /* Set this before calling make_command_stats_cleanup. */
350 lim_at_start = (char *) sbrk (0);
351 #endif
352
353 pre_stat_chain = make_command_stats_cleanup (0);
354
355 #if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES)
356 setlocale (LC_MESSAGES, "");
357 #endif
358 #if defined (HAVE_SETLOCALE)
359 setlocale (LC_CTYPE, "");
360 #endif
361 bindtextdomain (PACKAGE, LOCALEDIR);
362 textdomain (PACKAGE);
363
364 bfd_init ();
365
366 make_cleanup (VEC_cleanup (cmdarg_s), &cmdarg_vec);
367 dirsize = 1;
368 dirarg = (char **) xmalloc (dirsize * sizeof (*dirarg));
369 ndir = 0;
370
371 clear_quit_flag ();
372 saved_command_line = (char *) xmalloc (saved_command_line_size);
373 saved_command_line[0] = '\0';
374 instream = stdin;
375
376 gdb_stdout = stdio_fileopen (stdout);
377 gdb_stderr = stdio_fileopen (stderr);
378 gdb_stdlog = gdb_stderr; /* for moment */
379 gdb_stdtarg = gdb_stderr; /* for moment */
380 gdb_stdin = stdio_fileopen (stdin);
381 gdb_stdtargerr = gdb_stderr; /* for moment */
382 gdb_stdtargin = gdb_stdin; /* for moment */
383
384 #ifdef __MINGW32__
385 /* On Windows, argv[0] is not necessarily set to absolute form when
386 GDB is found along PATH, without which relocation doesn't work. */
387 gdb_program_name = windows_get_absolute_argv0 (argv[0]);
388 #else
389 gdb_program_name = xstrdup (argv[0]);
390 #endif
391
392 if (! getcwd (gdb_dirbuf, sizeof (gdb_dirbuf)))
393 /* Don't use *_filtered or warning() (which relies on
394 current_target) until after initialize_all_files(). */
395 fprintf_unfiltered (gdb_stderr,
396 _("%s: warning: error finding "
397 "working directory: %s\n"),
398 argv[0], safe_strerror (errno));
399
400 current_directory = gdb_dirbuf;
401
402 /* Set the sysroot path. */
403 gdb_sysroot = relocate_gdb_directory (TARGET_SYSTEM_ROOT,
404 TARGET_SYSTEM_ROOT_RELOCATABLE);
405
406 debug_file_directory = relocate_gdb_directory (DEBUGDIR,
407 DEBUGDIR_RELOCATABLE);
408
409 gdb_datadir = relocate_gdb_directory (GDB_DATADIR,
410 GDB_DATADIR_RELOCATABLE);
411
412 #ifdef WITH_PYTHON_PATH
413 {
414 /* For later use in helping Python find itself. */
415 char *tmp = concat (WITH_PYTHON_PATH, SLASH_STRING, "lib", NULL);
416
417 python_libdir = relocate_gdb_directory (tmp, PYTHON_PATH_RELOCATABLE);
418 xfree (tmp);
419 }
420 #endif
421
422 #ifdef RELOC_SRCDIR
423 add_substitute_path_rule (RELOC_SRCDIR,
424 make_relative_prefix (gdb_program_name, BINDIR,
425 RELOC_SRCDIR));
426 #endif
427
428 /* There will always be an interpreter. Either the one passed into
429 this captured main, or one specified by the user at start up, or
430 the console. Initialize the interpreter to the one requested by
431 the application. */
432 interpreter_p = xstrdup (context->interpreter_p);
433
434 /* Parse arguments and options. */
435 {
436 int c;
437 /* When var field is 0, use flag field to record the equivalent
438 short option (or arbitrary numbers starting at 10 for those
439 with no equivalent). */
440 enum {
441 OPT_SE = 10,
442 OPT_CD,
443 OPT_ANNOTATE,
444 OPT_STATISTICS,
445 OPT_TUI,
446 OPT_NOWINDOWS,
447 OPT_WINDOWS,
448 OPT_IX,
449 OPT_IEX
450 };
451 static struct option long_options[] =
452 {
453 {"tui", no_argument, 0, OPT_TUI},
454 {"xdb", no_argument, &xdb_commands, 1},
455 {"dbx", no_argument, &dbx_commands, 1},
456 {"readnow", no_argument, &readnow_symbol_files, 1},
457 {"r", no_argument, &readnow_symbol_files, 1},
458 {"quiet", no_argument, &quiet, 1},
459 {"q", no_argument, &quiet, 1},
460 {"silent", no_argument, &quiet, 1},
461 {"nh", no_argument, &inhibit_home_gdbinit, 1},
462 {"nx", no_argument, &inhibit_gdbinit, 1},
463 {"n", no_argument, &inhibit_gdbinit, 1},
464 {"batch-silent", no_argument, 0, 'B'},
465 {"batch", no_argument, &batch_flag, 1},
466
467 /* This is a synonym for "--annotate=1". --annotate is now
468 preferred, but keep this here for a long time because people
469 will be running emacses which use --fullname. */
470 {"fullname", no_argument, 0, 'f'},
471 {"f", no_argument, 0, 'f'},
472
473 {"annotate", required_argument, 0, OPT_ANNOTATE},
474 {"help", no_argument, &print_help, 1},
475 {"se", required_argument, 0, OPT_SE},
476 {"symbols", required_argument, 0, 's'},
477 {"s", required_argument, 0, 's'},
478 {"exec", required_argument, 0, 'e'},
479 {"e", required_argument, 0, 'e'},
480 {"core", required_argument, 0, 'c'},
481 {"c", required_argument, 0, 'c'},
482 {"pid", required_argument, 0, 'p'},
483 {"p", required_argument, 0, 'p'},
484 {"command", required_argument, 0, 'x'},
485 {"eval-command", required_argument, 0, 'X'},
486 {"version", no_argument, &print_version, 1},
487 {"configuration", no_argument, &print_configuration, 1},
488 {"x", required_argument, 0, 'x'},
489 {"ex", required_argument, 0, 'X'},
490 {"init-command", required_argument, 0, OPT_IX},
491 {"init-eval-command", required_argument, 0, OPT_IEX},
492 {"ix", required_argument, 0, OPT_IX},
493 {"iex", required_argument, 0, OPT_IEX},
494 #ifdef GDBTK
495 {"tclcommand", required_argument, 0, 'z'},
496 {"enable-external-editor", no_argument, 0, 'y'},
497 {"editor-command", required_argument, 0, 'w'},
498 #endif
499 {"ui", required_argument, 0, 'i'},
500 {"interpreter", required_argument, 0, 'i'},
501 {"i", required_argument, 0, 'i'},
502 {"directory", required_argument, 0, 'd'},
503 {"d", required_argument, 0, 'd'},
504 {"data-directory", required_argument, 0, 'D'},
505 {"cd", required_argument, 0, OPT_CD},
506 {"tty", required_argument, 0, 't'},
507 {"baud", required_argument, 0, 'b'},
508 {"b", required_argument, 0, 'b'},
509 {"nw", no_argument, NULL, OPT_NOWINDOWS},
510 {"nowindows", no_argument, NULL, OPT_NOWINDOWS},
511 {"w", no_argument, NULL, OPT_WINDOWS},
512 {"windows", no_argument, NULL, OPT_WINDOWS},
513 {"statistics", no_argument, 0, OPT_STATISTICS},
514 {"write", no_argument, &write_files, 1},
515 {"args", no_argument, &set_args, 1},
516 {"l", required_argument, 0, 'l'},
517 {"return-child-result", no_argument, &return_child_result, 1},
518 {0, no_argument, 0, 0}
519 };
520
521 while (1)
522 {
523 int option_index;
524
525 c = getopt_long_only (argc, argv, "",
526 long_options, &option_index);
527 if (c == EOF || set_args)
528 break;
529
530 /* Long option that takes an argument. */
531 if (c == 0 && long_options[option_index].flag == 0)
532 c = long_options[option_index].val;
533
534 switch (c)
535 {
536 case 0:
537 /* Long option that just sets a flag. */
538 break;
539 case OPT_SE:
540 symarg = optarg;
541 execarg = optarg;
542 break;
543 case OPT_CD:
544 cdarg = optarg;
545 break;
546 case OPT_ANNOTATE:
547 /* FIXME: what if the syntax is wrong (e.g. not digits)? */
548 annotation_level = atoi (optarg);
549 break;
550 case OPT_STATISTICS:
551 /* Enable the display of both time and space usage. */
552 set_per_command_time (1);
553 set_per_command_space (1);
554 break;
555 case OPT_TUI:
556 /* --tui is equivalent to -i=tui. */
557 #ifdef TUI
558 xfree (interpreter_p);
559 interpreter_p = xstrdup (INTERP_TUI);
560 #else
561 fprintf_unfiltered (gdb_stderr,
562 _("%s: TUI mode is not supported\n"),
563 argv[0]);
564 exit (1);
565 #endif
566 break;
567 case OPT_WINDOWS:
568 /* FIXME: cagney/2003-03-01: Not sure if this option is
569 actually useful, and if it is, what it should do. */
570 #ifdef GDBTK
571 /* --windows is equivalent to -i=insight. */
572 xfree (interpreter_p);
573 interpreter_p = xstrdup (INTERP_INSIGHT);
574 #endif
575 use_windows = 1;
576 break;
577 case OPT_NOWINDOWS:
578 /* -nw is equivalent to -i=console. */
579 xfree (interpreter_p);
580 interpreter_p = xstrdup (INTERP_CONSOLE);
581 use_windows = 0;
582 break;
583 case 'f':
584 annotation_level = 1;
585 /* We have probably been invoked from emacs. Disable
586 window interface. */
587 use_windows = 0;
588 break;
589 case 's':
590 symarg = optarg;
591 break;
592 case 'e':
593 execarg = optarg;
594 break;
595 case 'c':
596 corearg = optarg;
597 break;
598 case 'p':
599 pidarg = optarg;
600 break;
601 case 'x':
602 {
603 struct cmdarg cmdarg = { CMDARG_FILE, optarg };
604
605 VEC_safe_push (cmdarg_s, cmdarg_vec, &cmdarg);
606 }
607 break;
608 case 'X':
609 {
610 struct cmdarg cmdarg = { CMDARG_COMMAND, optarg };
611
612 VEC_safe_push (cmdarg_s, cmdarg_vec, &cmdarg);
613 }
614 break;
615 case OPT_IX:
616 {
617 struct cmdarg cmdarg = { CMDARG_INIT_FILE, optarg };
618
619 VEC_safe_push (cmdarg_s, cmdarg_vec, &cmdarg);
620 }
621 break;
622 case OPT_IEX:
623 {
624 struct cmdarg cmdarg = { CMDARG_INIT_COMMAND, optarg };
625
626 VEC_safe_push (cmdarg_s, cmdarg_vec, &cmdarg);
627 }
628 break;
629 case 'B':
630 batch_flag = batch_silent = 1;
631 gdb_stdout = ui_file_new();
632 break;
633 case 'D':
634 xfree (gdb_datadir);
635 gdb_datadir = xstrdup (optarg);
636 gdb_datadir_provided = 1;
637 break;
638 #ifdef GDBTK
639 case 'z':
640 {
641 extern int gdbtk_test (char *);
642
643 if (!gdbtk_test (optarg))
644 {
645 fprintf_unfiltered (gdb_stderr,
646 _("%s: unable to load "
647 "tclcommand file \"%s\""),
648 argv[0], optarg);
649 exit (1);
650 }
651 break;
652 }
653 case 'y':
654 /* Backwards compatibility only. */
655 break;
656 case 'w':
657 {
658 /* Set the external editor commands when gdb is farming out files
659 to be edited by another program. */
660 extern char *external_editor_command;
661
662 external_editor_command = xstrdup (optarg);
663 break;
664 }
665 #endif /* GDBTK */
666 case 'i':
667 xfree (interpreter_p);
668 interpreter_p = xstrdup (optarg);
669 break;
670 case 'd':
671 dirarg[ndir++] = optarg;
672 if (ndir >= dirsize)
673 {
674 dirsize *= 2;
675 dirarg = (char **) xrealloc ((char *) dirarg,
676 dirsize * sizeof (*dirarg));
677 }
678 break;
679 case 't':
680 ttyarg = optarg;
681 break;
682 case 'q':
683 quiet = 1;
684 break;
685 case 'b':
686 {
687 int i;
688 char *p;
689
690 i = strtol (optarg, &p, 0);
691 if (i == 0 && p == optarg)
692
693 /* Don't use *_filtered or warning() (which relies on
694 current_target) until after initialize_all_files(). */
695
696 fprintf_unfiltered
697 (gdb_stderr,
698 _("warning: could not set baud rate to `%s'.\n"), optarg);
699 else
700 baud_rate = i;
701 }
702 break;
703 case 'l':
704 {
705 int i;
706 char *p;
707
708 i = strtol (optarg, &p, 0);
709 if (i == 0 && p == optarg)
710
711 /* Don't use *_filtered or warning() (which relies on
712 current_target) until after initialize_all_files(). */
713
714 fprintf_unfiltered (gdb_stderr,
715 _("warning: could not set "
716 "timeout limit to `%s'.\n"), optarg);
717 else
718 remote_timeout = i;
719 }
720 break;
721
722 case '?':
723 fprintf_unfiltered (gdb_stderr,
724 _("Use `%s --help' for a "
725 "complete list of options.\n"),
726 argv[0]);
727 exit (1);
728 }
729 }
730
731 /* If --help or --version or --configuration, disable window
732 interface. */
733 if (print_help || print_version || print_configuration)
734 {
735 use_windows = 0;
736 }
737
738 if (batch_flag)
739 quiet = 1;
740 }
741
742 /* Initialize all files. Give the interpreter a chance to take
743 control of the console via the deprecated_init_ui_hook (). */
744 gdb_init (gdb_program_name);
745
746 /* Now that gdb_init has created the initial inferior, we're in
747 position to set args for that inferior. */
748 if (set_args)
749 {
750 /* The remaining options are the command-line options for the
751 inferior. The first one is the sym/exec file, and the rest
752 are arguments. */
753 if (optind >= argc)
754 {
755 fprintf_unfiltered (gdb_stderr,
756 _("%s: `--args' specified but "
757 "no program specified\n"),
758 argv[0]);
759 exit (1);
760 }
761 symarg = argv[optind];
762 execarg = argv[optind];
763 ++optind;
764 set_inferior_args_vector (argc - optind, &argv[optind]);
765 }
766 else
767 {
768 /* OK, that's all the options. */
769
770 /* The first argument, if specified, is the name of the
771 executable. */
772 if (optind < argc)
773 {
774 symarg = argv[optind];
775 execarg = argv[optind];
776 optind++;
777 }
778
779 /* If the user hasn't already specified a PID or the name of a
780 core file, then a second optional argument is allowed. If
781 present, this argument should be interpreted as either a
782 PID or a core file, whichever works. */
783 if (pidarg == NULL && corearg == NULL && optind < argc)
784 {
785 pid_or_core_arg = argv[optind];
786 optind++;
787 }
788
789 /* Any argument left on the command line is unexpected and
790 will be ignored. Inform the user. */
791 if (optind < argc)
792 fprintf_unfiltered (gdb_stderr,
793 _("Excess command line "
794 "arguments ignored. (%s%s)\n"),
795 argv[optind],
796 (optind == argc - 1) ? "" : " ...");
797 }
798
799 /* Lookup gdbinit files. Note that the gdbinit file name may be
800 overriden during file initialization, so get_init_files should be
801 called after gdb_init. */
802 get_init_files (&system_gdbinit, &home_gdbinit, &local_gdbinit);
803
804 /* Do these (and anything which might call wrap_here or *_filtered)
805 after initialize_all_files() but before the interpreter has been
806 installed. Otherwize the help/version messages will be eaten by
807 the interpreter's output handler. */
808
809 if (print_version)
810 {
811 print_gdb_version (gdb_stdout);
812 wrap_here ("");
813 printf_filtered ("\n");
814 exit (0);
815 }
816
817 if (print_help)
818 {
819 print_gdb_help (gdb_stdout);
820 fputs_unfiltered ("\n", gdb_stdout);
821 exit (0);
822 }
823
824 if (print_configuration)
825 {
826 print_gdb_configuration (gdb_stdout);
827 wrap_here ("");
828 printf_filtered ("\n");
829 exit (0);
830 }
831
832 /* FIXME: cagney/2003-02-03: The big hack (part 1 of 2) that lets
833 GDB retain the old MI1 interpreter startup behavior. Output the
834 copyright message before the interpreter is installed. That way
835 it isn't encapsulated in MI output. */
836 if (!quiet && strcmp (interpreter_p, INTERP_MI1) == 0)
837 {
838 /* Print all the junk at the top, with trailing "..." if we are
839 about to read a symbol file (possibly slowly). */
840 print_gdb_version (gdb_stdout);
841 if (symarg)
842 printf_filtered ("..");
843 wrap_here ("");
844 printf_filtered ("\n");
845 gdb_flush (gdb_stdout); /* Force to screen during slow
846 operations. */
847 }
848
849 /* Install the default UI. All the interpreters should have had a
850 look at things by now. Initialize the default interpreter. */
851
852 {
853 /* Find it. */
854 struct interp *interp = interp_lookup (interpreter_p);
855
856 if (interp == NULL)
857 error (_("Interpreter `%s' unrecognized"), interpreter_p);
858 /* Install it. */
859 if (!interp_set (interp, 1))
860 {
861 fprintf_unfiltered (gdb_stderr,
862 "Interpreter `%s' failed to initialize.\n",
863 interpreter_p);
864 exit (1);
865 }
866 }
867
868 /* FIXME: cagney/2003-02-03: The big hack (part 2 of 2) that lets
869 GDB retain the old MI1 interpreter startup behavior. Output the
870 copyright message after the interpreter is installed when it is
871 any sane interpreter. */
872 if (!quiet && !current_interp_named_p (INTERP_MI1))
873 {
874 /* Print all the junk at the top, with trailing "..." if we are
875 about to read a symbol file (possibly slowly). */
876 print_gdb_version (gdb_stdout);
877 if (symarg)
878 printf_filtered ("..");
879 wrap_here ("");
880 printf_filtered ("\n");
881 gdb_flush (gdb_stdout); /* Force to screen during slow
882 operations. */
883 }
884
885 /* Set off error and warning messages with a blank line. */
886 error_pre_print = "\n";
887 quit_pre_print = error_pre_print;
888 warning_pre_print = _("\nwarning: ");
889
890 /* Read and execute the system-wide gdbinit file, if it exists.
891 This is done *before* all the command line arguments are
892 processed; it sets global parameters, which are independent of
893 what file you are debugging or what directory you are in. */
894 if (system_gdbinit && !inhibit_gdbinit)
895 catch_command_errors (source_script, system_gdbinit, 0, RETURN_MASK_ALL);
896
897 /* Read and execute $HOME/.gdbinit file, if it exists. This is done
898 *before* all the command line arguments are processed; it sets
899 global parameters, which are independent of what file you are
900 debugging or what directory you are in. */
901
902 if (home_gdbinit && !inhibit_gdbinit && !inhibit_home_gdbinit)
903 catch_command_errors (source_script, home_gdbinit, 0, RETURN_MASK_ALL);
904
905 /* Process '-ix' and '-iex' options early. */
906 for (i = 0; VEC_iterate (cmdarg_s, cmdarg_vec, i, cmdarg_p); i++)
907 switch (cmdarg_p->type)
908 {
909 case CMDARG_INIT_FILE:
910 catch_command_errors (source_script, cmdarg_p->string,
911 !batch_flag, RETURN_MASK_ALL);
912 break;
913 case CMDARG_INIT_COMMAND:
914 catch_command_errors (execute_command, cmdarg_p->string,
915 !batch_flag, RETURN_MASK_ALL);
916 break;
917 }
918
919 /* Now perform all the actions indicated by the arguments. */
920 if (cdarg != NULL)
921 {
922 catch_command_errors (cd_command, cdarg, 0, RETURN_MASK_ALL);
923 }
924
925 for (i = 0; i < ndir; i++)
926 catch_command_errors (directory_switch, dirarg[i], 0, RETURN_MASK_ALL);
927 xfree (dirarg);
928
929 /* Skip auto-loading section-specified scripts until we've sourced
930 local_gdbinit (which is often used to augment the source search
931 path). */
932 save_auto_load = global_auto_load;
933 global_auto_load = 0;
934
935 if (execarg != NULL
936 && symarg != NULL
937 && strcmp (execarg, symarg) == 0)
938 {
939 /* The exec file and the symbol-file are the same. If we can't
940 open it, better only print one error message.
941 catch_command_errors returns non-zero on success! */
942 if (catch_command_errors (exec_file_attach, execarg,
943 !batch_flag, RETURN_MASK_ALL))
944 catch_command_errors (symbol_file_add_main, symarg,
945 !batch_flag, RETURN_MASK_ALL);
946 }
947 else
948 {
949 if (execarg != NULL)
950 catch_command_errors (exec_file_attach, execarg,
951 !batch_flag, RETURN_MASK_ALL);
952 if (symarg != NULL)
953 catch_command_errors (symbol_file_add_main, symarg,
954 !batch_flag, RETURN_MASK_ALL);
955 }
956
957 if (corearg && pidarg)
958 error (_("Can't attach to process and specify "
959 "a core file at the same time."));
960
961 if (corearg != NULL)
962 catch_command_errors (core_file_command, corearg,
963 !batch_flag, RETURN_MASK_ALL);
964 else if (pidarg != NULL)
965 catch_command_errors (attach_command, pidarg,
966 !batch_flag, RETURN_MASK_ALL);
967 else if (pid_or_core_arg)
968 {
969 /* The user specified 'gdb program pid' or gdb program core'.
970 If pid_or_core_arg's first character is a digit, try attach
971 first and then corefile. Otherwise try just corefile. */
972
973 if (isdigit (pid_or_core_arg[0]))
974 {
975 if (catch_command_errors (attach_command, pid_or_core_arg,
976 !batch_flag, RETURN_MASK_ALL) == 0)
977 catch_command_errors (core_file_command, pid_or_core_arg,
978 !batch_flag, RETURN_MASK_ALL);
979 }
980 else /* Can't be a pid, better be a corefile. */
981 catch_command_errors (core_file_command, pid_or_core_arg,
982 !batch_flag, RETURN_MASK_ALL);
983 }
984
985 if (ttyarg != NULL)
986 set_inferior_io_terminal (ttyarg);
987
988 /* Error messages should no longer be distinguished with extra output. */
989 error_pre_print = NULL;
990 quit_pre_print = NULL;
991 warning_pre_print = _("warning: ");
992
993 /* Read the .gdbinit file in the current directory, *if* it isn't
994 the same as the $HOME/.gdbinit file (it should exist, also). */
995 if (local_gdbinit)
996 {
997 auto_load_local_gdbinit_pathname = gdb_realpath (local_gdbinit);
998
999 if (!inhibit_gdbinit && auto_load_local_gdbinit
1000 && file_is_auto_load_safe (local_gdbinit,
1001 _("auto-load: Loading .gdbinit "
1002 "file \"%s\".\n"),
1003 local_gdbinit))
1004 {
1005 auto_load_local_gdbinit_loaded = 1;
1006
1007 catch_command_errors (source_script, local_gdbinit, 0,
1008 RETURN_MASK_ALL);
1009 }
1010 }
1011
1012 /* Now that all .gdbinit's have been read and all -d options have been
1013 processed, we can read any scripts mentioned in SYMARG.
1014 We wait until now because it is common to add to the source search
1015 path in local_gdbinit. */
1016 global_auto_load = save_auto_load;
1017 ALL_OBJFILES (objfile)
1018 load_auto_scripts_for_objfile (objfile);
1019
1020 /* Process '-x' and '-ex' options. */
1021 for (i = 0; VEC_iterate (cmdarg_s, cmdarg_vec, i, cmdarg_p); i++)
1022 switch (cmdarg_p->type)
1023 {
1024 case CMDARG_FILE:
1025 catch_command_errors (source_script, cmdarg_p->string,
1026 !batch_flag, RETURN_MASK_ALL);
1027 break;
1028 case CMDARG_COMMAND:
1029 catch_command_errors (execute_command, cmdarg_p->string,
1030 !batch_flag, RETURN_MASK_ALL);
1031 break;
1032 }
1033
1034 /* Read in the old history after all the command files have been
1035 read. */
1036 init_history ();
1037
1038 if (batch_flag)
1039 {
1040 /* We have hit the end of the batch file. */
1041 quit_force (NULL, 0);
1042 }
1043
1044 /* Show time and/or space usage. */
1045 do_cleanups (pre_stat_chain);
1046
1047 /* NOTE: cagney/1999-11-07: There is probably no reason for not
1048 moving this loop and the code found in captured_command_loop()
1049 into the command_loop() proper. The main thing holding back that
1050 change - SET_TOP_LEVEL() - has been eliminated. */
1051 while (1)
1052 {
1053 catch_errors (captured_command_loop, 0, "", RETURN_MASK_ALL);
1054 }
1055 /* No exit -- exit is through quit_command. */
1056 }
1057
1058 int
1059 gdb_main (struct captured_main_args *args)
1060 {
1061 use_windows = args->use_windows;
1062 catch_errors (captured_main, args, "", RETURN_MASK_ALL);
1063 /* The only way to end up here is by an error (normal exit is
1064 handled by quit_force()), hence always return an error status. */
1065 return 1;
1066 }
1067
1068
1069 /* Don't use *_filtered for printing help. We don't want to prompt
1070 for continue no matter how small the screen or how much we're going
1071 to print. */
1072
1073 static void
1074 print_gdb_help (struct ui_file *stream)
1075 {
1076 char *system_gdbinit;
1077 char *home_gdbinit;
1078 char *local_gdbinit;
1079
1080 get_init_files (&system_gdbinit, &home_gdbinit, &local_gdbinit);
1081
1082 fputs_unfiltered (_("\
1083 This is the GNU debugger. Usage:\n\n\
1084 gdb [options] [executable-file [core-file or process-id]]\n\
1085 gdb [options] --args executable-file [inferior-arguments ...]\n\n\
1086 Options:\n\n\
1087 "), stream);
1088 fputs_unfiltered (_("\
1089 --args Arguments after executable-file are passed to inferior\n\
1090 "), stream);
1091 fputs_unfiltered (_("\
1092 -b BAUDRATE Set serial port baud rate used for remote debugging.\n\
1093 --batch Exit after processing options.\n\
1094 --batch-silent As for --batch, but suppress all gdb stdout output.\n\
1095 --return-child-result\n\
1096 GDB exit code will be the child's exit code.\n\
1097 --cd=DIR Change current directory to DIR.\n\
1098 --command=FILE, -x Execute GDB commands from FILE.\n\
1099 --eval-command=COMMAND, -ex\n\
1100 Execute a single GDB command.\n\
1101 May be used multiple times and in conjunction\n\
1102 with --command.\n\
1103 --init-command=FILE, -ix Like -x but execute it before loading inferior.\n\
1104 --init-eval-command=COMMAND, -iex Like -ex but before loading inferior.\n\
1105 --core=COREFILE Analyze the core dump COREFILE.\n\
1106 --pid=PID Attach to running process PID.\n\
1107 "), stream);
1108 fputs_unfiltered (_("\
1109 --dbx DBX compatibility mode.\n\
1110 --directory=DIR Search for source files in DIR.\n\
1111 --exec=EXECFILE Use EXECFILE as the executable.\n\
1112 --fullname Output information used by emacs-GDB interface.\n\
1113 --help Print this message.\n\
1114 "), stream);
1115 fputs_unfiltered (_("\
1116 --interpreter=INTERP\n\
1117 Select a specific interpreter / user interface\n\
1118 "), stream);
1119 fputs_unfiltered (_("\
1120 -l TIMEOUT Set timeout in seconds for remote debugging.\n\
1121 --nw Do not use a window interface.\n\
1122 --nx Do not read any "), stream);
1123 fputs_unfiltered (gdbinit, stream);
1124 fputs_unfiltered (_(" files.\n\
1125 --nh Do not read "), stream);
1126 fputs_unfiltered (gdbinit, stream);
1127 fputs_unfiltered (_(" file from home directory.\n\
1128 --quiet Do not print version number on startup.\n\
1129 --readnow Fully read symbol files on first access.\n\
1130 "), stream);
1131 fputs_unfiltered (_("\
1132 --se=FILE Use FILE as symbol file and executable file.\n\
1133 --symbols=SYMFILE Read symbols from SYMFILE.\n\
1134 --tty=TTY Use TTY for input/output by the program being debugged.\n\
1135 "), stream);
1136 #if defined(TUI)
1137 fputs_unfiltered (_("\
1138 --tui Use a terminal user interface.\n\
1139 "), stream);
1140 #endif
1141 fputs_unfiltered (_("\
1142 --version Print version information and then exit.\n\
1143 --configuration Print details about GDB configuration and then exit.\n\
1144 -w Use a window interface.\n\
1145 --write Set writing into executable and core files.\n\
1146 --xdb XDB compatibility mode.\n\
1147 "), stream);
1148 fputs_unfiltered (_("\n\
1149 At startup, GDB reads the following init files and executes their commands:\n\
1150 "), stream);
1151 if (system_gdbinit)
1152 fprintf_unfiltered (stream, _("\
1153 * system-wide init file: %s\n\
1154 "), system_gdbinit);
1155 if (home_gdbinit)
1156 fprintf_unfiltered (stream, _("\
1157 * user-specific init file: %s\n\
1158 "), home_gdbinit);
1159 if (local_gdbinit)
1160 fprintf_unfiltered (stream, _("\
1161 * local init file (see also 'set auto-load local-gdbinit'): ./%s\n\
1162 "), local_gdbinit);
1163 fputs_unfiltered (_("\n\
1164 For more information, type \"help\" from within GDB, or consult the\n\
1165 GDB manual (available as on-line info or a printed manual).\n\
1166 "), stream);
1167 if (REPORT_BUGS_TO[0] && stream == gdb_stdout)
1168 fprintf_unfiltered (stream, _("\
1169 Report bugs to \"%s\".\n\
1170 "), REPORT_BUGS_TO);
1171 }
This page took 0.053498 seconds and 4 git commands to generate.