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