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