Update NEWS post GDB 8.2 branch creation.
[deliverable/binutils-gdb.git] / gdb / main.c
CommitLineData
c906108c 1/* Top level stuff for GDB, the GNU debugger.
4389a95a 2
e2882c85 3 Copyright (C) 1986-2018 Free Software Foundation, Inc.
c906108c 4
c5aa993b 5 This file is part of GDB.
c906108c 6
c5aa993b
JM
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
a9762ec7 9 the Free Software Foundation; either version 3 of the License, or
c5aa993b 10 (at your option) any later version.
c906108c 11
c5aa993b
JM
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.
c906108c 16
c5aa993b 17 You should have received a copy of the GNU General Public License
a9762ec7 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c906108c
SS
19
20#include "defs.h"
c906108c
SS
21#include "top.h"
22#include "target.h"
23#include "inferior.h"
1adeb98a
FN
24#include "symfile.h"
25#include "gdbcore.h"
c906108c
SS
26#include "getopt.h"
27
28#include <sys/types.h>
53ce3c39 29#include <sys/stat.h>
c906108c 30#include <ctype.h>
9e0b60a8 31#include "event-loop.h"
8b93c638 32#include "ui-out.h"
6457bd47 33
4389a95a 34#include "interps.h"
f15ab4a7 35#include "main.h"
29b0e8a2 36#include "source.h"
4cc23ede 37#include "cli/cli-cmds.h"
7f6130ff 38#include "objfiles.h"
e2207b9a 39#include "auto-load.h"
bd712aed 40#include "maint.h"
29b0e8a2 41
b5981e5a 42#include "filenames.h"
614c279d 43#include "filestuff.h"
992c7d70 44#include <signal.h>
94696ad3 45#include "event-top.h"
98880d46 46#include "infrun.h"
f348d89a 47#include "signals-state-save-restore.h"
f60ee22e 48#include <vector>
b4987c95 49#include "common/pathstuff.h"
b5981e5a 50
4389a95a
AC
51/* The selected interpreter. This will be used as a set command
52 variable, so it should always be malloc'ed - since
371d5dec 53 do_setshow_command will free it. */
fb40c209 54char *interpreter_p;
fb40c209 55
371d5dec 56/* Whether dbx commands will be handled. */
c906108c
SS
57int dbx_commands = 0;
58
030292b7
DJ
59/* System root path, used to find libraries etc. */
60char *gdb_sysroot = 0;
61
b14b1491
TT
62/* GDB datadir, used to store data files. */
63char *gdb_datadir = 0;
64
e64e0392
DE
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. */
68static int gdb_datadir_provided = 0;
69
0c4a4063
DE
70/* If gdb was configured with --with-python=/path,
71 the possibly relocated path to python's lib directory. */
72char *python_libdir = 0;
73
371d5dec 74/* Target IO streams. */
449092f6 75struct ui_file *gdb_stdtargin;
22e8e3c7 76struct ui_file *gdb_stdtarg;
449092f6 77struct ui_file *gdb_stdtargerr;
c906108c 78
7c953934
TT
79/* True if --batch or --batch-silent was seen. */
80int batch_flag = 0;
81
1a088d06
AS
82/* Support for the --batch-silent option. */
83int batch_silent = 0;
84
4b0ad762
AS
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. */
88int return_child_result = 0;
89int return_child_result_value = -1;
90
c906108c 91
16e7150e
JG
92/* GDB as it has been invoked from the command line (i.e. argv[0]). */
93static char *gdb_program_name;
94
c88a1531
AB
95/* Return read only pointer to GDB_PROGRAM_NAME. */
96const char *
97get_gdb_program_name (void)
98{
99 return gdb_program_name;
100}
101
d9fcf2fb 102static void print_gdb_help (struct ui_file *);
c906108c 103
8d551b02
DE
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
108void
109set_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);
14278e1f 124 gdb_datadir = gdb_realpath (new_datadir).release ();
8d551b02
DE
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 {
e3e41d58 132 gdb::unique_xmalloc_ptr<char> abs_datadir = gdb_abspath (gdb_datadir);
8d551b02
DE
133
134 xfree (gdb_datadir);
e3e41d58 135 gdb_datadir = abs_datadir.release ();
8d551b02
DE
136 }
137}
138
b14b1491
TT
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. */
478aac75 144
b14b1491
TT
145static char *
146relocate_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. */
478aac75
DE
158
159char *
160relocate_gdb_directory (const char *initial, int flag)
b14b1491
TT
161{
162 char *dir;
163
478aac75 164 dir = relocate_path (gdb_program_name, initial, flag);
b14b1491
TT
165 if (dir)
166 {
167 struct stat s;
168
78a8b30e 169 if (*dir == '\0' || stat (dir, &s) != 0 || !S_ISDIR (s.st_mode))
b14b1491
TT
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);
b8d56208 182
b14b1491
TT
183 if (canon_sysroot)
184 {
185 xfree (dir);
186 dir = canon_sysroot;
187 }
188 }
189
190 return dir;
191}
192
371d5dec
MS
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. */
16e7150e 198static void
50dd9793
PA
199get_init_files (const char **system_gdbinit,
200 const char **home_gdbinit,
201 const char **local_gdbinit)
16e7150e 202{
50dd9793 203 static const char *sysgdbinit = NULL;
16e7150e 204 static char *homeinit = NULL;
50dd9793 205 static const char *localinit = NULL;
16e7150e
JG
206 static int initialized = 0;
207
208 if (!initialized)
209 {
210 struct stat homebuf, cwdbuf, s;
e64e0392 211 char *homedir;
16e7150e 212
b14b1491 213 if (SYSTEM_GDBINIT[0])
16e7150e 214 {
e64e0392
DE
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
b5981e5a
EZ
223 && filename_ncmp (SYSTEM_GDBINIT, GDB_DATADIR, datadir_len) == 0
224 && IS_DIR_SEPARATOR (SYSTEM_GDBINIT[datadir_len]))
e64e0392
DE
225 {
226 /* Append the part of SYSTEM_GDBINIT that follows GDB_DATADIR
227 to gdb_datadir. */
cc75e0fd 228 char *tmp_sys_gdbinit = xstrdup (&SYSTEM_GDBINIT[datadir_len]);
e64e0392
DE
229 char *p;
230
b5981e5a 231 for (p = tmp_sys_gdbinit; IS_DIR_SEPARATOR (*p); ++p)
e64e0392
DE
232 continue;
233 relocated_sysgdbinit = concat (gdb_datadir, SLASH_STRING, p,
b36cec19 234 (char *) NULL);
e64e0392
DE
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 }
b14b1491 243 if (relocated_sysgdbinit && stat (relocated_sysgdbinit, &s) == 0)
16e7150e
JG
244 sysgdbinit = relocated_sysgdbinit;
245 else
246 xfree (relocated_sysgdbinit);
247 }
16e7150e
JG
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
025bb325 253 and cwdbuf are used in that purpose. Make sure that the stats
16e7150e
JG
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
992c7d70
GB
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
293static void
294setup_alternate_signal_stack (void)
295{
296#ifdef HAVE_SIGALTSTACK
297 stack_t ss;
298
f39c07ac
JB
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);
992c7d70
GB
302 ss.ss_size = SIGSTKSZ;
303 ss.ss_flags = 0;
304
305 sigaltstack(&ss, NULL);
306#endif
307}
308
bf469271 309/* Call command_loop. */
11cf8741 310
fcc8fb2f
PA
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. */
314static void captured_command_loop () __attribute__((noinline));
315
bf469271
PA
316static void
317captured_command_loop ()
c906108c 318{
f38d3ad1
PA
319 struct ui *ui = current_ui;
320
bb5291d0 321 /* Top-level execution commands can be run in the background from
b4a14fd0 322 here on. */
cb814510 323 current_ui->async = 1;
b4a14fd0 324
3b12939d
PA
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 ());
b2d86570
PA
328
329 /* Now it's time to start the event loop. */
330 start_event_loop ();
331
11cf8741
JM
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
e26cc349 335 the do_cleanups() below is redundant. Unfortunately, many FUNCs
11cf8741
JM
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
371d5dec 338 check to detect bad FUNCs code. */
6328eb38 339 do_cleanups (all_cleanups ());
11cf8741 340 /* If the command_loop returned, normally (rather than threw an
bf469271
PA
341 error) we try to quit. If the quit is aborted, our caller
342 catches the signal and restarts the command loop. */
268a799a 343 quit_command (NULL, ui->instream == ui->stdin_stream);
11cf8741
JM
344}
345
013af3fc 346/* Handle command errors thrown from within catch_command_errors. */
94696ad3
PA
347
348static int
284e6217 349handle_command_errors (struct gdb_exception e)
94696ad3
PA
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
013af3fc
TT
364/* Type of the command callback passed to the const
365 catch_command_errors. */
9d1e69a2
PA
366
367typedef void (catch_command_errors_const_ftype) (const char *, int);
368
95a6b0a1 369/* Wrap calls to commands run before the event loop is started. */
9d1e69a2
PA
370
371static int
013af3fc
TT
372catch_command_errors (catch_command_errors_const_ftype command,
373 const char *arg, int from_tty)
9d1e69a2 374{
492d29ea 375 TRY
9d1e69a2 376 {
3b12939d 377 int was_sync = current_ui->prompt_state == PROMPT_BLOCKED;
98880d46 378
9d1e69a2 379 command (arg, from_tty);
98880d46
PA
380
381 maybe_wait_sync_command_done (was_sync);
9d1e69a2 382 }
492d29ea
PA
383 CATCH (e, RETURN_MASK_ALL)
384 {
385 return handle_command_errors (e);
386 }
387 END_CATCH
388
389 return 1;
9d1e69a2
PA
390}
391
ecf45d2c
SL
392/* Adapter for symbol_file_add_main that translates 'from_tty' to a
393 symfile_add_flags. */
394
395static void
396symbol_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
97cbe998
SDJ
406/* Perform validation of the '--readnow' and '--readnever' flags. */
407
408static void
409validate_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
52059ffd
TT
419/* Type of this option. */
420enum cmdarg_kind
421{
422 /* Option type -x. */
423 CMDARG_FILE,
26743505 424
52059ffd
TT
425 /* Option type -ex. */
426 CMDARG_COMMAND,
8320cc4f 427
52059ffd
TT
428 /* Option type -ix. */
429 CMDARG_INIT_FILE,
8320cc4f 430
52059ffd
TT
431 /* Option type -iex. */
432 CMDARG_INIT_COMMAND
433};
434
435/* Arguments of --command option and its counterpart. */
7a63494a
PA
436struct cmdarg
437{
438 cmdarg (cmdarg_kind type_, char *string_)
439 : type (type_), string (string_)
440 {}
441
52059ffd
TT
442 /* Type of this option. */
443 enum cmdarg_kind type;
26743505
JK
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;
f60ee22e 448};
26743505 449
1e3b796d
TT
450static void
451captured_main_1 (struct captured_main_args *context)
11cf8741 452{
11cf8741
JM
453 int argc = context->argc;
454 char **argv = context->argv;
1e3b796d 455
c906108c 456 static int quiet = 0;
552c04a7 457 static int set_args = 0;
07540c15 458 static int inhibit_home_gdbinit = 0;
c906108c
SS
459
460 /* Pointers to various arguments from command line. */
461 char *symarg = NULL;
462 char *execarg = NULL;
a4d9b460 463 char *pidarg = NULL;
c906108c 464 char *corearg = NULL;
a4d9b460 465 char *pid_or_core_arg = NULL;
c906108c
SS
466 char *cdarg = NULL;
467 char *ttyarg = NULL;
468
371d5dec
MS
469 /* These are static so that we can take their address in an
470 initializer. */
c906108c
SS
471 static int print_help;
472 static int print_version;
6eaaf48b 473 static int print_configuration;
c906108c
SS
474
475 /* Pointers to all arguments of --command option. */
f60ee22e 476 std::vector<struct cmdarg> cmdarg_vec;
c906108c 477
f60ee22e
TT
478 /* All arguments of --directory option. */
479 std::vector<char *> dirarg;
c5aa993b 480
16e7150e 481 /* gdb init files. */
50dd9793
PA
482 const char *system_gdbinit;
483 const char *home_gdbinit;
484 const char *local_gdbinit;
c906108c 485
52f0bd74 486 int i;
88a1906b 487 int save_auto_load;
7f6130ff 488 struct objfile *objfile;
c906108c 489
e565b837 490#ifdef HAVE_SBRK
1e3b796d 491 /* Set this before constructing scoped_command_stats. */
e565b837
DE
492 lim_at_start = (char *) sbrk (0);
493#endif
494
1e3b796d 495 scoped_command_stats stat_reporter (false);
c906108c 496
0fbb3da7
TT
497#if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES)
498 setlocale (LC_MESSAGES, "");
499#endif
500#if defined (HAVE_SETLOCALE)
501 setlocale (LC_CTYPE, "");
502#endif
66797541 503#ifdef ENABLE_NLS
0fbb3da7
TT
504 bindtextdomain (PACKAGE, LOCALEDIR);
505 textdomain (PACKAGE);
66797541 506#endif
0fbb3da7 507
5484b13a 508 bfd_init ();
614c279d 509 notice_open_fds ();
5484b13a 510
2669cade 511 saved_command_line = (char *) xstrdup ("");
694ec099 512
ffa4ac95
YQ
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
895b8f30 519 main_ui = new ui (stdin, stdout, stderr);
98d9f24e 520 current_ui = main_ui;
ffa4ac95 521
449092f6
CV
522 gdb_stdtargerr = gdb_stderr; /* for moment */
523 gdb_stdtargin = gdb_stdin; /* for moment */
c906108c 524
b5981e5a
EZ
525#ifdef __MINGW32__
526 /* On Windows, argv[0] is not necessarily set to absolute form when
527 GDB is found along PATH, without which relocation doesn't work. */
528 gdb_program_name = windows_get_absolute_argv0 (argv[0]);
529#else
16e7150e 530 gdb_program_name = xstrdup (argv[0]);
b5981e5a 531#endif
16e7150e 532
075c7033 533 /* Prefix warning messages with the command name. */
69bbf465
PA
534 gdb::unique_xmalloc_ptr<char> tmp_warn_preprint
535 (xstrprintf ("%s: warning: ", gdb_program_name));
536 warning_pre_print = tmp_warn_preprint.get ();
075c7033 537
43573013
SDJ
538 current_directory = getcwd (NULL, 0);
539 if (current_directory == NULL)
075c7033
GB
540 perror_warning_with_name (_("error finding working directory"));
541
030292b7 542 /* Set the sysroot path. */
478aac75
DE
543 gdb_sysroot = relocate_gdb_directory (TARGET_SYSTEM_ROOT,
544 TARGET_SYSTEM_ROOT_RELOCATABLE);
030292b7 545
fed040c6
GB
546 if (gdb_sysroot == NULL || *gdb_sysroot == '\0')
547 {
548 xfree (gdb_sysroot);
549 gdb_sysroot = xstrdup (TARGET_SYSROOT_PREFIX);
550 }
551
478aac75
DE
552 debug_file_directory = relocate_gdb_directory (DEBUGDIR,
553 DEBUGDIR_RELOCATABLE);
030292b7 554
478aac75
DE
555 gdb_datadir = relocate_gdb_directory (GDB_DATADIR,
556 GDB_DATADIR_RELOCATABLE);
aa28a74e 557
0c4a4063 558#ifdef WITH_PYTHON_PATH
e6040cbd
MS
559 {
560 /* For later use in helping Python find itself. */
b36cec19 561 char *tmp = concat (WITH_PYTHON_PATH, SLASH_STRING, "lib", (char *) NULL);
e6040cbd 562
478aac75 563 python_libdir = relocate_gdb_directory (tmp, PYTHON_PATH_RELOCATABLE);
e6040cbd
MS
564 xfree (tmp);
565 }
0c4a4063
DE
566#endif
567
29b0e8a2
JM
568#ifdef RELOC_SRCDIR
569 add_substitute_path_rule (RELOC_SRCDIR,
b5981e5a 570 make_relative_prefix (gdb_program_name, BINDIR,
29b0e8a2
JM
571 RELOC_SRCDIR));
572#endif
573
4389a95a 574 /* There will always be an interpreter. Either the one passed into
e46e5ccd
KS
575 this captured main, or one specified by the user at start up, or
576 the console. Initialize the interpreter to the one requested by
577 the application. */
11bf1490 578 interpreter_p = xstrdup (context->interpreter_p);
4389a95a 579
c906108c
SS
580 /* Parse arguments and options. */
581 {
582 int c;
583 /* When var field is 0, use flag field to record the equivalent
584 short option (or arbitrary numbers starting at 10 for those
585 with no equivalent). */
49c7e338
AC
586 enum {
587 OPT_SE = 10,
588 OPT_CD,
589 OPT_ANNOTATE,
590 OPT_STATISTICS,
42fa7c0f
AC
591 OPT_TUI,
592 OPT_NOWINDOWS,
8320cc4f
JK
593 OPT_WINDOWS,
594 OPT_IX,
97cbe998
SDJ
595 OPT_IEX,
596 OPT_READNOW,
597 OPT_READNEVER
49c7e338 598 };
c906108c 599 static struct option long_options[] =
c5aa993b 600 {
49c7e338 601 {"tui", no_argument, 0, OPT_TUI},
c5aa993b 602 {"dbx", no_argument, &dbx_commands, 1},
97cbe998
SDJ
603 {"readnow", no_argument, NULL, OPT_READNOW},
604 {"readnever", no_argument, NULL, OPT_READNEVER},
605 {"r", no_argument, NULL, OPT_READNOW},
c5aa993b
JM
606 {"quiet", no_argument, &quiet, 1},
607 {"q", no_argument, &quiet, 1},
608 {"silent", no_argument, &quiet, 1},
07540c15 609 {"nh", no_argument, &inhibit_home_gdbinit, 1},
c5aa993b
JM
610 {"nx", no_argument, &inhibit_gdbinit, 1},
611 {"n", no_argument, &inhibit_gdbinit, 1},
1a088d06 612 {"batch-silent", no_argument, 0, 'B'},
7c953934 613 {"batch", no_argument, &batch_flag, 1},
c5aa993b 614
371d5dec
MS
615 /* This is a synonym for "--annotate=1". --annotate is now
616 preferred, but keep this here for a long time because people
617 will be running emacses which use --fullname. */
c5aa993b
JM
618 {"fullname", no_argument, 0, 'f'},
619 {"f", no_argument, 0, 'f'},
620
49c7e338 621 {"annotate", required_argument, 0, OPT_ANNOTATE},
c5aa993b 622 {"help", no_argument, &print_help, 1},
49c7e338 623 {"se", required_argument, 0, OPT_SE},
c5aa993b
JM
624 {"symbols", required_argument, 0, 's'},
625 {"s", required_argument, 0, 's'},
626 {"exec", required_argument, 0, 'e'},
627 {"e", required_argument, 0, 'e'},
628 {"core", required_argument, 0, 'c'},
629 {"c", required_argument, 0, 'c'},
00546b04
MS
630 {"pid", required_argument, 0, 'p'},
631 {"p", required_argument, 0, 'p'},
c5aa993b 632 {"command", required_argument, 0, 'x'},
8a5a3c82 633 {"eval-command", required_argument, 0, 'X'},
c5aa993b 634 {"version", no_argument, &print_version, 1},
6eaaf48b 635 {"configuration", no_argument, &print_configuration, 1},
c5aa993b 636 {"x", required_argument, 0, 'x'},
8a5a3c82 637 {"ex", required_argument, 0, 'X'},
8320cc4f
JK
638 {"init-command", required_argument, 0, OPT_IX},
639 {"init-eval-command", required_argument, 0, OPT_IEX},
640 {"ix", required_argument, 0, OPT_IX},
641 {"iex", required_argument, 0, OPT_IEX},
3fc11d3e
JM
642#ifdef GDBTK
643 {"tclcommand", required_argument, 0, 'z'},
644 {"enable-external-editor", no_argument, 0, 'y'},
645 {"editor-command", required_argument, 0, 'w'},
646#endif
8b93c638
JM
647 {"ui", required_argument, 0, 'i'},
648 {"interpreter", required_argument, 0, 'i'},
649 {"i", required_argument, 0, 'i'},
c5aa993b 650 {"directory", required_argument, 0, 'd'},
c4093a6a 651 {"d", required_argument, 0, 'd'},
aae1c79a 652 {"data-directory", required_argument, 0, 'D'},
8d551b02 653 {"D", required_argument, 0, 'D'},
49c7e338 654 {"cd", required_argument, 0, OPT_CD},
c5aa993b
JM
655 {"tty", required_argument, 0, 't'},
656 {"baud", required_argument, 0, 'b'},
657 {"b", required_argument, 0, 'b'},
42fa7c0f
AC
658 {"nw", no_argument, NULL, OPT_NOWINDOWS},
659 {"nowindows", no_argument, NULL, OPT_NOWINDOWS},
660 {"w", no_argument, NULL, OPT_WINDOWS},
661 {"windows", no_argument, NULL, OPT_WINDOWS},
49c7e338 662 {"statistics", no_argument, 0, OPT_STATISTICS},
c5aa993b 663 {"write", no_argument, &write_files, 1},
552c04a7 664 {"args", no_argument, &set_args, 1},
39c76ca3 665 {"l", required_argument, 0, 'l'},
4b0ad762 666 {"return-child-result", no_argument, &return_child_result, 1},
c5aa993b
JM
667 {0, no_argument, 0, 0}
668 };
c906108c
SS
669
670 while (1)
671 {
672 int option_index;
673
674 c = getopt_long_only (argc, argv, "",
675 long_options, &option_index);
552c04a7 676 if (c == EOF || set_args)
c906108c
SS
677 break;
678
679 /* Long option that takes an argument. */
680 if (c == 0 && long_options[option_index].flag == 0)
681 c = long_options[option_index].val;
682
683 switch (c)
684 {
685 case 0:
686 /* Long option that just sets a flag. */
687 break;
49c7e338 688 case OPT_SE:
c906108c
SS
689 symarg = optarg;
690 execarg = optarg;
691 break;
49c7e338 692 case OPT_CD:
c906108c
SS
693 cdarg = optarg;
694 break;
49c7e338 695 case OPT_ANNOTATE:
c906108c
SS
696 /* FIXME: what if the syntax is wrong (e.g. not digits)? */
697 annotation_level = atoi (optarg);
698 break;
49c7e338 699 case OPT_STATISTICS:
c906108c 700 /* Enable the display of both time and space usage. */
bd712aed
DE
701 set_per_command_time (1);
702 set_per_command_space (1);
c906108c 703 break;
49c7e338 704 case OPT_TUI:
021e7609 705 /* --tui is equivalent to -i=tui. */
b0da54f1 706#ifdef TUI
021e7609 707 xfree (interpreter_p);
cc4349ed 708 interpreter_p = xstrdup (INTERP_TUI);
b0da54f1 709#else
91b35fd0 710 error (_("%s: TUI mode is not supported"), gdb_program_name);
b0da54f1 711#endif
021e7609 712 break;
42fa7c0f
AC
713 case OPT_WINDOWS:
714 /* FIXME: cagney/2003-03-01: Not sure if this option is
715 actually useful, and if it is, what it should do. */
cc4349ed
AS
716#ifdef GDBTK
717 /* --windows is equivalent to -i=insight. */
718 xfree (interpreter_p);
719 interpreter_p = xstrdup (INTERP_INSIGHT);
720#endif
42fa7c0f
AC
721 break;
722 case OPT_NOWINDOWS:
723 /* -nw is equivalent to -i=console. */
724 xfree (interpreter_p);
725 interpreter_p = xstrdup (INTERP_CONSOLE);
42fa7c0f 726 break;
c906108c
SS
727 case 'f':
728 annotation_level = 1;
c906108c
SS
729 break;
730 case 's':
731 symarg = optarg;
732 break;
733 case 'e':
734 execarg = optarg;
735 break;
736 case 'c':
737 corearg = optarg;
738 break;
00546b04 739 case 'p':
a4d9b460 740 pidarg = optarg;
00546b04 741 break;
c906108c 742 case 'x':
7a63494a 743 cmdarg_vec.emplace_back (CMDARG_FILE, optarg);
8a5a3c82
AS
744 break;
745 case 'X':
7a63494a 746 cmdarg_vec.emplace_back (CMDARG_COMMAND, optarg);
26743505 747 break;
8320cc4f 748 case OPT_IX:
7a63494a 749 cmdarg_vec.emplace_back (CMDARG_INIT_FILE, optarg);
8320cc4f
JK
750 break;
751 case OPT_IEX:
7a63494a 752 cmdarg_vec.emplace_back (CMDARG_INIT_COMMAND, optarg);
c906108c 753 break;
1a088d06 754 case 'B':
7c953934 755 batch_flag = batch_silent = 1;
d7e74731 756 gdb_stdout = new null_file ();
1a088d06 757 break;
aae1c79a 758 case 'D':
8d551b02 759 if (optarg[0] == '\0')
91b35fd0
GB
760 error (_("%s: empty path for `--data-directory'"),
761 gdb_program_name);
8d551b02 762 set_gdb_data_directory (optarg);
e64e0392 763 gdb_datadir_provided = 1;
aae1c79a 764 break;
3fc11d3e
JM
765#ifdef GDBTK
766 case 'z':
767 {
371d5dec
MS
768 extern int gdbtk_test (char *);
769
3fc11d3e 770 if (!gdbtk_test (optarg))
91b35fd0
GB
771 error (_("%s: unable to load tclcommand file \"%s\""),
772 gdb_program_name, optarg);
3fc11d3e
JM
773 break;
774 }
775 case 'y':
78f49586
TT
776 /* Backwards compatibility only. */
777 break;
3fc11d3e
JM
778 case 'w':
779 {
3a9b40b6
JK
780 /* Set the external editor commands when gdb is farming out files
781 to be edited by another program. */
782 extern char *external_editor_command;
783
3fc11d3e
JM
784 external_editor_command = xstrdup (optarg);
785 break;
786 }
787#endif /* GDBTK */
fb40c209 788 case 'i':
4389a95a
AC
789 xfree (interpreter_p);
790 interpreter_p = xstrdup (optarg);
fb40c209 791 break;
c906108c 792 case 'd':
f60ee22e 793 dirarg.push_back (optarg);
c906108c
SS
794 break;
795 case 't':
796 ttyarg = optarg;
797 break;
798 case 'q':
799 quiet = 1;
800 break;
801 case 'b':
802 {
803 int i;
804 char *p;
805
806 i = strtol (optarg, &p, 0);
807 if (i == 0 && p == optarg)
075c7033
GB
808 warning (_("could not set baud rate to `%s'."),
809 optarg);
c906108c
SS
810 else
811 baud_rate = i;
812 }
046ca86a 813 break;
c906108c
SS
814 case 'l':
815 {
816 int i;
817 char *p;
818
819 i = strtol (optarg, &p, 0);
820 if (i == 0 && p == optarg)
075c7033
GB
821 warning (_("could not set timeout limit to `%s'."),
822 optarg);
c906108c
SS
823 else
824 remote_timeout = i;
825 }
826 break;
827
97cbe998
SDJ
828 case OPT_READNOW:
829 {
830 readnow_symbol_files = 1;
831 validate_readnow_readnever ();
832 }
833 break;
834
835 case OPT_READNEVER:
836 {
837 readnever_symbol_files = 1;
838 validate_readnow_readnever ();
839 }
840 break;
841
c906108c 842 case '?':
91b35fd0
GB
843 error (_("Use `%s --help' for a complete list of options."),
844 gdb_program_name);
c906108c
SS
845 }
846 }
847
7c953934 848 if (batch_flag)
c906108c
SS
849 quiet = 1;
850 }
851
e379cee6
PA
852 save_original_signals_state (quiet);
853
992c7d70
GB
854 /* Try to set up an alternate signal stack for SIGSEGV handlers. */
855 setup_alternate_signal_stack ();
856
f218b647 857 /* Initialize all files. */
b5981e5a 858 gdb_init (gdb_program_name);
c906108c 859
371d5dec
MS
860 /* Now that gdb_init has created the initial inferior, we're in
861 position to set args for that inferior. */
3f81c18a
VP
862 if (set_args)
863 {
864 /* The remaining options are the command-line options for the
865 inferior. The first one is the sym/exec file, and the rest
866 are arguments. */
867 if (optind >= argc)
91b35fd0
GB
868 error (_("%s: `--args' specified but no program specified"),
869 gdb_program_name);
870
3f81c18a
VP
871 symarg = argv[optind];
872 execarg = argv[optind];
873 ++optind;
874 set_inferior_args_vector (argc - optind, &argv[optind]);
875 }
876 else
877 {
878 /* OK, that's all the options. */
879
880 /* The first argument, if specified, is the name of the
881 executable. */
882 if (optind < argc)
883 {
884 symarg = argv[optind];
885 execarg = argv[optind];
886 optind++;
887 }
888
889 /* If the user hasn't already specified a PID or the name of a
890 core file, then a second optional argument is allowed. If
891 present, this argument should be interpreted as either a
892 PID or a core file, whichever works. */
893 if (pidarg == NULL && corearg == NULL && optind < argc)
894 {
895 pid_or_core_arg = argv[optind];
896 optind++;
897 }
898
899 /* Any argument left on the command line is unexpected and
900 will be ignored. Inform the user. */
901 if (optind < argc)
3e43a32a
MS
902 fprintf_unfiltered (gdb_stderr,
903 _("Excess command line "
904 "arguments ignored. (%s%s)\n"),
3f81c18a
VP
905 argv[optind],
906 (optind == argc - 1) ? "" : " ...");
907 }
908
025bb325 909 /* Lookup gdbinit files. Note that the gdbinit file name may be
371d5dec
MS
910 overriden during file initialization, so get_init_files should be
911 called after gdb_init. */
57a46001
JG
912 get_init_files (&system_gdbinit, &home_gdbinit, &local_gdbinit);
913
c906108c 914 /* Do these (and anything which might call wrap_here or *_filtered)
4389a95a
AC
915 after initialize_all_files() but before the interpreter has been
916 installed. Otherwize the help/version messages will be eaten by
917 the interpreter's output handler. */
918
c906108c
SS
919 if (print_version)
920 {
c61b06a1 921 print_gdb_version (gdb_stdout, false);
c906108c
SS
922 wrap_here ("");
923 printf_filtered ("\n");
924 exit (0);
925 }
926
927 if (print_help)
928 {
929 print_gdb_help (gdb_stdout);
930 fputs_unfiltered ("\n", gdb_stdout);
931 exit (0);
932 }
933
6eaaf48b
EZ
934 if (print_configuration)
935 {
936 print_gdb_configuration (gdb_stdout);
937 wrap_here ("");
938 printf_filtered ("\n");
939 exit (0);
940 }
941
4389a95a
AC
942 /* FIXME: cagney/2003-02-03: The big hack (part 1 of 2) that lets
943 GDB retain the old MI1 interpreter startup behavior. Output the
944 copyright message before the interpreter is installed. That way
945 it isn't encapsulated in MI output. */
946 if (!quiet && strcmp (interpreter_p, INTERP_MI1) == 0)
947 {
371d5dec
MS
948 /* Print all the junk at the top, with trailing "..." if we are
949 about to read a symbol file (possibly slowly). */
c61b06a1 950 print_gdb_version (gdb_stdout, true);
4389a95a
AC
951 if (symarg)
952 printf_filtered ("..");
953 wrap_here ("");
e896d70e 954 printf_filtered ("\n");
371d5dec
MS
955 gdb_flush (gdb_stdout); /* Force to screen during slow
956 operations. */
4389a95a
AC
957 }
958
4389a95a 959 /* Install the default UI. All the interpreters should have had a
371d5dec 960 look at things by now. Initialize the default interpreter. */
60eb5395 961 set_top_level_interpreter (interpreter_p);
4389a95a
AC
962
963 /* FIXME: cagney/2003-02-03: The big hack (part 2 of 2) that lets
964 GDB retain the old MI1 interpreter startup behavior. Output the
965 copyright message after the interpreter is installed when it is
966 any sane interpreter. */
967 if (!quiet && !current_interp_named_p (INTERP_MI1))
c906108c 968 {
371d5dec
MS
969 /* Print all the junk at the top, with trailing "..." if we are
970 about to read a symbol file (possibly slowly). */
c61b06a1 971 print_gdb_version (gdb_stdout, true);
c906108c
SS
972 if (symarg)
973 printf_filtered ("..");
c5aa993b 974 wrap_here ("");
e896d70e 975 printf_filtered ("\n");
371d5dec
MS
976 gdb_flush (gdb_stdout); /* Force to screen during slow
977 operations. */
c906108c
SS
978 }
979
e896d70e 980 /* Set off error and warning messages with a blank line. */
69bbf465 981 tmp_warn_preprint.reset ();
defc6f8c 982 warning_pre_print = _("\nwarning: ");
c906108c 983
16e7150e
JG
984 /* Read and execute the system-wide gdbinit file, if it exists.
985 This is done *before* all the command line arguments are
986 processed; it sets global parameters, which are independent of
987 what file you are debugging or what directory you are in. */
988 if (system_gdbinit && !inhibit_gdbinit)
013af3fc 989 catch_command_errors (source_script, system_gdbinit, 0);
16e7150e 990
c906108c
SS
991 /* Read and execute $HOME/.gdbinit file, if it exists. This is done
992 *before* all the command line arguments are processed; it sets
993 global parameters, which are independent of what file you are
994 debugging or what directory you are in. */
c906108c 995
07540c15 996 if (home_gdbinit && !inhibit_gdbinit && !inhibit_home_gdbinit)
013af3fc 997 catch_command_errors (source_script, home_gdbinit, 0);
c906108c 998
2d7b58e8 999 /* Process '-ix' and '-iex' options early. */
f60ee22e 1000 for (i = 0; i < cmdarg_vec.size (); i++)
2d7b58e8 1001 {
f60ee22e
TT
1002 const struct cmdarg &cmdarg_p = cmdarg_vec[i];
1003
1004 switch (cmdarg_p.type)
1005 {
1006 case CMDARG_INIT_FILE:
013af3fc
TT
1007 catch_command_errors (source_script, cmdarg_p.string,
1008 !batch_flag);
f60ee22e
TT
1009 break;
1010 case CMDARG_INIT_COMMAND:
1011 catch_command_errors (execute_command, cmdarg_p.string,
1012 !batch_flag);
1013 break;
1014 }
2d7b58e8
JK
1015 }
1016
c906108c
SS
1017 /* Now perform all the actions indicated by the arguments. */
1018 if (cdarg != NULL)
1019 {
97c18565 1020 catch_command_errors (cd_command, cdarg, 0);
c906108c 1021 }
c906108c 1022
f60ee22e 1023 for (i = 0; i < dirarg.size (); i++)
97c18565 1024 catch_command_errors (directory_switch, dirarg[i], 0);
c906108c 1025
88a1906b 1026 /* Skip auto-loading section-specified scripts until we've sourced
371d5dec
MS
1027 local_gdbinit (which is often used to augment the source search
1028 path). */
bf88dd68
JK
1029 save_auto_load = global_auto_load;
1030 global_auto_load = 0;
88a1906b 1031
c906108c
SS
1032 if (execarg != NULL
1033 && symarg != NULL
5cb316ef 1034 && strcmp (execarg, symarg) == 0)
c906108c 1035 {
11cf8741
JM
1036 /* The exec file and the symbol-file are the same. If we can't
1037 open it, better only print one error message.
371d5dec 1038 catch_command_errors returns non-zero on success! */
013af3fc
TT
1039 if (catch_command_errors (exec_file_attach, execarg,
1040 !batch_flag))
1041 catch_command_errors (symbol_file_add_main_adapter, symarg,
1042 !batch_flag);
c906108c
SS
1043 }
1044 else
1045 {
1046 if (execarg != NULL)
013af3fc
TT
1047 catch_command_errors (exec_file_attach, execarg,
1048 !batch_flag);
c906108c 1049 if (symarg != NULL)
013af3fc
TT
1050 catch_command_errors (symbol_file_add_main_adapter, symarg,
1051 !batch_flag);
c906108c 1052 }
c906108c 1053
a4d9b460 1054 if (corearg && pidarg)
3e43a32a
MS
1055 error (_("Can't attach to process and specify "
1056 "a core file at the same time."));
a4d9b460 1057
c906108c 1058 if (corearg != NULL)
97c18565 1059 catch_command_errors (core_file_command, corearg, !batch_flag);
a4d9b460 1060 else if (pidarg != NULL)
97c18565 1061 catch_command_errors (attach_command, pidarg, !batch_flag);
a4d9b460 1062 else if (pid_or_core_arg)
c906108c 1063 {
a4d9b460
PA
1064 /* The user specified 'gdb program pid' or gdb program core'.
1065 If pid_or_core_arg's first character is a digit, try attach
1066 first and then corefile. Otherwise try just corefile. */
00546b04 1067
a4d9b460 1068 if (isdigit (pid_or_core_arg[0]))
11cf8741 1069 {
a4d9b460 1070 if (catch_command_errors (attach_command, pid_or_core_arg,
97c18565 1071 !batch_flag) == 0)
a4d9b460 1072 catch_command_errors (core_file_command, pid_or_core_arg,
97c18565 1073 !batch_flag);
11cf8741 1074 }
a4d9b460
PA
1075 else /* Can't be a pid, better be a corefile. */
1076 catch_command_errors (core_file_command, pid_or_core_arg,
97c18565 1077 !batch_flag);
c906108c 1078 }
c906108c
SS
1079
1080 if (ttyarg != NULL)
3f81c18a 1081 set_inferior_io_terminal (ttyarg);
c906108c 1082
371d5dec 1083 /* Error messages should no longer be distinguished with extra output. */
defc6f8c 1084 warning_pre_print = _("warning: ");
c906108c
SS
1085
1086 /* Read the .gdbinit file in the current directory, *if* it isn't
1087 the same as the $HOME/.gdbinit file (it should exist, also). */
bf88dd68
JK
1088 if (local_gdbinit)
1089 {
14278e1f
TT
1090 auto_load_local_gdbinit_pathname
1091 = gdb_realpath (local_gdbinit).release ();
bf88dd68 1092
bccbefd2 1093 if (!inhibit_gdbinit && auto_load_local_gdbinit
4dc84fd1
JK
1094 && file_is_auto_load_safe (local_gdbinit,
1095 _("auto-load: Loading .gdbinit "
1096 "file \"%s\".\n"),
1097 local_gdbinit))
bf88dd68
JK
1098 {
1099 auto_load_local_gdbinit_loaded = 1;
1100
013af3fc 1101 catch_command_errors (source_script, local_gdbinit, 0);
bf88dd68
JK
1102 }
1103 }
c906108c 1104
88a1906b
DE
1105 /* Now that all .gdbinit's have been read and all -d options have been
1106 processed, we can read any scripts mentioned in SYMARG.
1107 We wait until now because it is common to add to the source search
1108 path in local_gdbinit. */
bf88dd68 1109 global_auto_load = save_auto_load;
7f6130ff
JK
1110 ALL_OBJFILES (objfile)
1111 load_auto_scripts_for_objfile (objfile);
88a1906b 1112
8320cc4f 1113 /* Process '-x' and '-ex' options. */
f60ee22e 1114 for (i = 0; i < cmdarg_vec.size (); i++)
c906108c 1115 {
f60ee22e
TT
1116 const struct cmdarg &cmdarg_p = cmdarg_vec[i];
1117
1118 switch (cmdarg_p.type)
1119 {
1120 case CMDARG_FILE:
013af3fc
TT
1121 catch_command_errors (source_script, cmdarg_p.string,
1122 !batch_flag);
f60ee22e
TT
1123 break;
1124 case CMDARG_COMMAND:
1125 catch_command_errors (execute_command, cmdarg_p.string,
1126 !batch_flag);
1127 break;
1128 }
c906108c 1129 }
c906108c 1130
371d5dec
MS
1131 /* Read in the old history after all the command files have been
1132 read. */
c5aa993b 1133 init_history ();
c906108c 1134
7c953934 1135 if (batch_flag)
c906108c
SS
1136 {
1137 /* We have hit the end of the batch file. */
4b0ad762 1138 quit_force (NULL, 0);
c906108c 1139 }
1e3b796d
TT
1140}
1141
1142static void
1143captured_main (void *data)
1144{
1145 struct captured_main_args *context = (struct captured_main_args *) data;
1146
1147 captured_main_1 (context);
c906108c 1148
11cf8741
JM
1149 /* NOTE: cagney/1999-11-07: There is probably no reason for not
1150 moving this loop and the code found in captured_command_loop()
1151 into the command_loop() proper. The main thing holding back that
371d5dec 1152 change - SET_TOP_LEVEL() - has been eliminated. */
11cf8741
JM
1153 while (1)
1154 {
bf469271
PA
1155 TRY
1156 {
1157 captured_command_loop ();
1158 }
1159 CATCH (ex, RETURN_MASK_ALL)
1160 {
1161 exception_print (gdb_stderr, ex);
1162 }
1163 END_CATCH
11cf8741 1164 }
11cf8741
JM
1165 /* No exit -- exit is through quit_command. */
1166}
c906108c 1167
11cf8741 1168int
f15ab4a7 1169gdb_main (struct captured_main_args *args)
11cf8741 1170{
98d9f24e
PA
1171 TRY
1172 {
1173 captured_main (args);
1174 }
1175 CATCH (ex, RETURN_MASK_ALL)
1176 {
1177 exception_print (gdb_stderr, ex);
1178 }
1179 END_CATCH
1180
864dbc90
AC
1181 /* The only way to end up here is by an error (normal exit is
1182 handled by quit_force()), hence always return an error status. */
1183 return 1;
c906108c
SS
1184}
1185
11cf8741 1186
c906108c
SS
1187/* Don't use *_filtered for printing help. We don't want to prompt
1188 for continue no matter how small the screen or how much we're going
1189 to print. */
1190
1191static void
d9fcf2fb 1192print_gdb_help (struct ui_file *stream)
c906108c 1193{
50dd9793
PA
1194 const char *system_gdbinit;
1195 const char *home_gdbinit;
1196 const char *local_gdbinit;
16e7150e
JG
1197
1198 get_init_files (&system_gdbinit, &home_gdbinit, &local_gdbinit);
1199
b187bec1
EZ
1200 /* Note: The options in the list below are only approximately sorted
1201 in the alphabetical order, so as to group closely related options
1202 together. */
defc6f8c 1203 fputs_unfiltered (_("\
c906108c 1204This is the GNU debugger. Usage:\n\n\
552c04a7
TT
1205 gdb [options] [executable-file [core-file or process-id]]\n\
1206 gdb [options] --args executable-file [inferior-arguments ...]\n\n\
defc6f8c
TT
1207"), stream);
1208 fputs_unfiltered (_("\
b187bec1 1209Selection of debuggee and its files:\n\n\
552c04a7 1210 --args Arguments after executable-file are passed to inferior\n\
b187bec1
EZ
1211 --core=COREFILE Analyze the core dump COREFILE.\n\
1212 --exec=EXECFILE Use EXECFILE as the executable.\n\
1213 --pid=PID Attach to running process PID.\n\
1214 --directory=DIR Search for source files in DIR.\n\
1215 --se=FILE Use FILE as symbol file and executable file.\n\
1216 --symbols=SYMFILE Read symbols from SYMFILE.\n\
1217 --readnow Fully read symbol files on first access.\n\
97cbe998 1218 --readnever Do not read symbol files.\n\
b187bec1 1219 --write Set writing into executable and core files.\n\n\
defc6f8c
TT
1220"), stream);
1221 fputs_unfiltered (_("\
b187bec1 1222Initial commands and command files:\n\n\
8a5a3c82 1223 --command=FILE, -x Execute GDB commands from FILE.\n\
b187bec1
EZ
1224 --init-command=FILE, -ix\n\
1225 Like -x but execute commands before loading inferior.\n\
8a5a3c82
AS
1226 --eval-command=COMMAND, -ex\n\
1227 Execute a single GDB command.\n\
1228 May be used multiple times and in conjunction\n\
1229 with --command.\n\
b187bec1
EZ
1230 --init-eval-command=COMMAND, -iex\n\
1231 Like -ex but before loading inferior.\n\
1232 --nh Do not read ~/.gdbinit.\n\
1233 --nx Do not read any .gdbinit files in any directory.\n\n\
defc6f8c
TT
1234"), stream);
1235 fputs_unfiltered (_("\
b187bec1 1236Output and user interface control:\n\n\
c906108c 1237 --fullname Output information used by emacs-GDB interface.\n\
8b93c638
JM
1238 --interpreter=INTERP\n\
1239 Select a specific interpreter / user interface\n\
c906108c 1240 --tty=TTY Use TTY for input/output by the program being debugged.\n\
b187bec1
EZ
1241 -w Use the GUI interface.\n\
1242 --nw Do not use the GUI interface.\n\
defc6f8c 1243"), stream);
c906108c 1244#if defined(TUI)
defc6f8c 1245 fputs_unfiltered (_("\
c906108c 1246 --tui Use a terminal user interface.\n\
defc6f8c 1247"), stream);
c906108c 1248#endif
481860b3 1249 fputs_unfiltered (_("\
b187bec1 1250 --dbx DBX compatibility mode.\n\
adcc0a31 1251 -q, --quiet, --silent\n\
1252 Do not print version number on startup.\n\n\
b187bec1
EZ
1253"), stream);
1254 fputs_unfiltered (_("\
1255Operating modes:\n\n\
1256 --batch Exit after processing options.\n\
1257 --batch-silent Like --batch, but suppress all gdb stdout output.\n\
1258 --return-child-result\n\
1259 GDB exit code will be the child's exit code.\n\
1260 --configuration Print details about GDB configuration and then exit.\n\
1261 --help Print this message and then exit.\n\
1262 --version Print version information and then exit.\n\n\
1263Remote debugging options:\n\n\
1264 -b BAUDRATE Set serial port baud rate used for remote debugging.\n\
1265 -l TIMEOUT Set timeout in seconds for remote debugging.\n\n\
1266Other options:\n\n\
1267 --cd=DIR Change current directory to DIR.\n\
8d551b02
DE
1268 --data-directory=DIR, -D\n\
1269 Set GDB's data-directory to DIR.\n\
defc6f8c 1270"), stream);
defc6f8c 1271 fputs_unfiltered (_("\n\
16e7150e
JG
1272At startup, GDB reads the following init files and executes their commands:\n\
1273"), stream);
1274 if (system_gdbinit)
1275 fprintf_unfiltered (stream, _("\
1276 * system-wide init file: %s\n\
1277"), system_gdbinit);
1278 if (home_gdbinit)
1279 fprintf_unfiltered (stream, _("\
1280 * user-specific init file: %s\n\
1281"), home_gdbinit);
1282 if (local_gdbinit)
1283 fprintf_unfiltered (stream, _("\
bf88dd68 1284 * local init file (see also 'set auto-load local-gdbinit'): ./%s\n\
16e7150e
JG
1285"), local_gdbinit);
1286 fputs_unfiltered (_("\n\
c906108c
SS
1287For more information, type \"help\" from within GDB, or consult the\n\
1288GDB manual (available as on-line info or a printed manual).\n\
defc6f8c 1289"), stream);
c16158bc
JM
1290 if (REPORT_BUGS_TO[0] && stream == gdb_stdout)
1291 fprintf_unfiltered (stream, _("\
1292Report bugs to \"%s\".\n\
1293"), REPORT_BUGS_TO);
c906108c 1294}
This page took 1.678733 seconds and 4 git commands to generate.