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