BFD messages
[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>
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
97cbe998
SDJ
405/* Perform validation of the '--readnow' and '--readnever' flags. */
406
407static void
408validate_readnow_readnever ()
409{
410 if (readnever_symbol_files && readnow_symbol_files)
411 {
412 error (_("%s: '--readnow' and '--readnever' cannot be "
413 "specified simultaneously"),
414 gdb_program_name);
415 }
416}
417
52059ffd
TT
418/* Type of this option. */
419enum cmdarg_kind
420{
421 /* Option type -x. */
422 CMDARG_FILE,
26743505 423
52059ffd
TT
424 /* Option type -ex. */
425 CMDARG_COMMAND,
8320cc4f 426
52059ffd
TT
427 /* Option type -ix. */
428 CMDARG_INIT_FILE,
8320cc4f 429
52059ffd
TT
430 /* Option type -iex. */
431 CMDARG_INIT_COMMAND
432};
433
434/* Arguments of --command option and its counterpart. */
7a63494a
PA
435struct cmdarg
436{
437 cmdarg (cmdarg_kind type_, char *string_)
438 : type (type_), string (string_)
439 {}
440
52059ffd
TT
441 /* Type of this option. */
442 enum cmdarg_kind type;
26743505
JK
443
444 /* Value of this option - filename or the GDB command itself. String memory
445 is not owned by this structure despite it is 'const'. */
446 char *string;
f60ee22e 447};
26743505 448
1e3b796d
TT
449static void
450captured_main_1 (struct captured_main_args *context)
11cf8741 451{
11cf8741
JM
452 int argc = context->argc;
453 char **argv = context->argv;
1e3b796d 454
c906108c 455 static int quiet = 0;
552c04a7 456 static int set_args = 0;
07540c15 457 static int inhibit_home_gdbinit = 0;
c906108c
SS
458
459 /* Pointers to various arguments from command line. */
460 char *symarg = NULL;
461 char *execarg = NULL;
a4d9b460 462 char *pidarg = NULL;
c906108c 463 char *corearg = NULL;
a4d9b460 464 char *pid_or_core_arg = NULL;
c906108c
SS
465 char *cdarg = NULL;
466 char *ttyarg = NULL;
467
371d5dec
MS
468 /* These are static so that we can take their address in an
469 initializer. */
c906108c
SS
470 static int print_help;
471 static int print_version;
6eaaf48b 472 static int print_configuration;
c906108c
SS
473
474 /* Pointers to all arguments of --command option. */
f60ee22e 475 std::vector<struct cmdarg> cmdarg_vec;
c906108c 476
f60ee22e
TT
477 /* All arguments of --directory option. */
478 std::vector<char *> dirarg;
c5aa993b 479
16e7150e 480 /* gdb init files. */
50dd9793
PA
481 const char *system_gdbinit;
482 const char *home_gdbinit;
483 const char *local_gdbinit;
c906108c 484
52f0bd74 485 int i;
88a1906b 486 int save_auto_load;
7f6130ff 487 struct objfile *objfile;
c906108c 488
e565b837 489#ifdef HAVE_SBRK
1e3b796d 490 /* Set this before constructing scoped_command_stats. */
e565b837
DE
491 lim_at_start = (char *) sbrk (0);
492#endif
493
1e3b796d 494 scoped_command_stats stat_reporter (false);
c906108c 495
0fbb3da7
TT
496#if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES)
497 setlocale (LC_MESSAGES, "");
498#endif
499#if defined (HAVE_SETLOCALE)
500 setlocale (LC_CTYPE, "");
501#endif
66797541 502#ifdef ENABLE_NLS
0fbb3da7
TT
503 bindtextdomain (PACKAGE, LOCALEDIR);
504 textdomain (PACKAGE);
66797541 505#endif
0fbb3da7 506
5484b13a 507 bfd_init ();
614c279d 508 notice_open_fds ();
5484b13a 509
2669cade 510 saved_command_line = (char *) xstrdup ("");
694ec099 511
ffa4ac95
YQ
512#ifdef __MINGW32__
513 /* Ensure stderr is unbuffered. A Cygwin pty or pipe is implemented
514 as a Windows pipe, and Windows buffers on pipes. */
515 setvbuf (stderr, NULL, _IONBF, BUFSIZ);
516#endif
517
895b8f30 518 main_ui = new ui (stdin, stdout, stderr);
98d9f24e 519 current_ui = main_ui;
ffa4ac95 520
449092f6
CV
521 gdb_stdtargerr = gdb_stderr; /* for moment */
522 gdb_stdtargin = gdb_stdin; /* for moment */
c906108c 523
b5981e5a
EZ
524#ifdef __MINGW32__
525 /* On Windows, argv[0] is not necessarily set to absolute form when
526 GDB is found along PATH, without which relocation doesn't work. */
527 gdb_program_name = windows_get_absolute_argv0 (argv[0]);
528#else
16e7150e 529 gdb_program_name = xstrdup (argv[0]);
b5981e5a 530#endif
16e7150e 531
075c7033 532 /* Prefix warning messages with the command name. */
69bbf465
PA
533 gdb::unique_xmalloc_ptr<char> tmp_warn_preprint
534 (xstrprintf ("%s: warning: ", gdb_program_name));
535 warning_pre_print = tmp_warn_preprint.get ();
075c7033 536
43573013
SDJ
537 current_directory = getcwd (NULL, 0);
538 if (current_directory == NULL)
075c7033
GB
539 perror_warning_with_name (_("error finding working directory"));
540
030292b7 541 /* Set the sysroot path. */
478aac75
DE
542 gdb_sysroot = relocate_gdb_directory (TARGET_SYSTEM_ROOT,
543 TARGET_SYSTEM_ROOT_RELOCATABLE);
030292b7 544
fed040c6
GB
545 if (gdb_sysroot == NULL || *gdb_sysroot == '\0')
546 {
547 xfree (gdb_sysroot);
548 gdb_sysroot = xstrdup (TARGET_SYSROOT_PREFIX);
549 }
550
478aac75
DE
551 debug_file_directory = relocate_gdb_directory (DEBUGDIR,
552 DEBUGDIR_RELOCATABLE);
030292b7 553
478aac75
DE
554 gdb_datadir = relocate_gdb_directory (GDB_DATADIR,
555 GDB_DATADIR_RELOCATABLE);
aa28a74e 556
0c4a4063 557#ifdef WITH_PYTHON_PATH
e6040cbd
MS
558 {
559 /* For later use in helping Python find itself. */
b36cec19 560 char *tmp = concat (WITH_PYTHON_PATH, SLASH_STRING, "lib", (char *) NULL);
e6040cbd 561
478aac75 562 python_libdir = relocate_gdb_directory (tmp, PYTHON_PATH_RELOCATABLE);
e6040cbd
MS
563 xfree (tmp);
564 }
0c4a4063
DE
565#endif
566
29b0e8a2
JM
567#ifdef RELOC_SRCDIR
568 add_substitute_path_rule (RELOC_SRCDIR,
b5981e5a 569 make_relative_prefix (gdb_program_name, BINDIR,
29b0e8a2
JM
570 RELOC_SRCDIR));
571#endif
572
4389a95a 573 /* There will always be an interpreter. Either the one passed into
e46e5ccd
KS
574 this captured main, or one specified by the user at start up, or
575 the console. Initialize the interpreter to the one requested by
576 the application. */
11bf1490 577 interpreter_p = xstrdup (context->interpreter_p);
4389a95a 578
c906108c
SS
579 /* Parse arguments and options. */
580 {
581 int c;
582 /* When var field is 0, use flag field to record the equivalent
583 short option (or arbitrary numbers starting at 10 for those
584 with no equivalent). */
49c7e338
AC
585 enum {
586 OPT_SE = 10,
587 OPT_CD,
588 OPT_ANNOTATE,
589 OPT_STATISTICS,
42fa7c0f
AC
590 OPT_TUI,
591 OPT_NOWINDOWS,
8320cc4f
JK
592 OPT_WINDOWS,
593 OPT_IX,
97cbe998
SDJ
594 OPT_IEX,
595 OPT_READNOW,
596 OPT_READNEVER
49c7e338 597 };
c906108c 598 static struct option long_options[] =
c5aa993b 599 {
49c7e338 600 {"tui", no_argument, 0, OPT_TUI},
c5aa993b 601 {"dbx", no_argument, &dbx_commands, 1},
97cbe998
SDJ
602 {"readnow", no_argument, NULL, OPT_READNOW},
603 {"readnever", no_argument, NULL, OPT_READNEVER},
604 {"r", no_argument, NULL, OPT_READNOW},
c5aa993b
JM
605 {"quiet", no_argument, &quiet, 1},
606 {"q", no_argument, &quiet, 1},
607 {"silent", no_argument, &quiet, 1},
07540c15 608 {"nh", no_argument, &inhibit_home_gdbinit, 1},
c5aa993b
JM
609 {"nx", no_argument, &inhibit_gdbinit, 1},
610 {"n", no_argument, &inhibit_gdbinit, 1},
1a088d06 611 {"batch-silent", no_argument, 0, 'B'},
7c953934 612 {"batch", no_argument, &batch_flag, 1},
c5aa993b 613
371d5dec
MS
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. */
c5aa993b
JM
617 {"fullname", no_argument, 0, 'f'},
618 {"f", no_argument, 0, 'f'},
619
49c7e338 620 {"annotate", required_argument, 0, OPT_ANNOTATE},
c5aa993b 621 {"help", no_argument, &print_help, 1},
49c7e338 622 {"se", required_argument, 0, OPT_SE},
c5aa993b
JM
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'},
00546b04
MS
629 {"pid", required_argument, 0, 'p'},
630 {"p", required_argument, 0, 'p'},
c5aa993b 631 {"command", required_argument, 0, 'x'},
8a5a3c82 632 {"eval-command", required_argument, 0, 'X'},
c5aa993b 633 {"version", no_argument, &print_version, 1},
6eaaf48b 634 {"configuration", no_argument, &print_configuration, 1},
c5aa993b 635 {"x", required_argument, 0, 'x'},
8a5a3c82 636 {"ex", required_argument, 0, 'X'},
8320cc4f
JK
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},
3fc11d3e
JM
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
8b93c638
JM
646 {"ui", required_argument, 0, 'i'},
647 {"interpreter", required_argument, 0, 'i'},
648 {"i", required_argument, 0, 'i'},
c5aa993b 649 {"directory", required_argument, 0, 'd'},
c4093a6a 650 {"d", required_argument, 0, 'd'},
aae1c79a 651 {"data-directory", required_argument, 0, 'D'},
8d551b02 652 {"D", required_argument, 0, 'D'},
49c7e338 653 {"cd", required_argument, 0, OPT_CD},
c5aa993b
JM
654 {"tty", required_argument, 0, 't'},
655 {"baud", required_argument, 0, 'b'},
656 {"b", required_argument, 0, 'b'},
42fa7c0f
AC
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},
49c7e338 661 {"statistics", no_argument, 0, OPT_STATISTICS},
c5aa993b 662 {"write", no_argument, &write_files, 1},
552c04a7 663 {"args", no_argument, &set_args, 1},
39c76ca3 664 {"l", required_argument, 0, 'l'},
4b0ad762 665 {"return-child-result", no_argument, &return_child_result, 1},
c5aa993b
JM
666 {0, no_argument, 0, 0}
667 };
c906108c
SS
668
669 while (1)
670 {
671 int option_index;
672
673 c = getopt_long_only (argc, argv, "",
674 long_options, &option_index);
552c04a7 675 if (c == EOF || set_args)
c906108c
SS
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;
49c7e338 687 case OPT_SE:
c906108c
SS
688 symarg = optarg;
689 execarg = optarg;
690 break;
49c7e338 691 case OPT_CD:
c906108c
SS
692 cdarg = optarg;
693 break;
49c7e338 694 case OPT_ANNOTATE:
c906108c
SS
695 /* FIXME: what if the syntax is wrong (e.g. not digits)? */
696 annotation_level = atoi (optarg);
697 break;
49c7e338 698 case OPT_STATISTICS:
c906108c 699 /* Enable the display of both time and space usage. */
bd712aed
DE
700 set_per_command_time (1);
701 set_per_command_space (1);
c906108c 702 break;
49c7e338 703 case OPT_TUI:
021e7609 704 /* --tui is equivalent to -i=tui. */
b0da54f1 705#ifdef TUI
021e7609 706 xfree (interpreter_p);
cc4349ed 707 interpreter_p = xstrdup (INTERP_TUI);
b0da54f1 708#else
91b35fd0 709 error (_("%s: TUI mode is not supported"), gdb_program_name);
b0da54f1 710#endif
021e7609 711 break;
42fa7c0f
AC
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. */
cc4349ed
AS
715#ifdef GDBTK
716 /* --windows is equivalent to -i=insight. */
717 xfree (interpreter_p);
718 interpreter_p = xstrdup (INTERP_INSIGHT);
719#endif
42fa7c0f
AC
720 break;
721 case OPT_NOWINDOWS:
722 /* -nw is equivalent to -i=console. */
723 xfree (interpreter_p);
724 interpreter_p = xstrdup (INTERP_CONSOLE);
42fa7c0f 725 break;
c906108c
SS
726 case 'f':
727 annotation_level = 1;
c906108c
SS
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;
00546b04 738 case 'p':
a4d9b460 739 pidarg = optarg;
00546b04 740 break;
c906108c 741 case 'x':
7a63494a 742 cmdarg_vec.emplace_back (CMDARG_FILE, optarg);
8a5a3c82
AS
743 break;
744 case 'X':
7a63494a 745 cmdarg_vec.emplace_back (CMDARG_COMMAND, optarg);
26743505 746 break;
8320cc4f 747 case OPT_IX:
7a63494a 748 cmdarg_vec.emplace_back (CMDARG_INIT_FILE, optarg);
8320cc4f
JK
749 break;
750 case OPT_IEX:
7a63494a 751 cmdarg_vec.emplace_back (CMDARG_INIT_COMMAND, optarg);
c906108c 752 break;
1a088d06 753 case 'B':
7c953934 754 batch_flag = batch_silent = 1;
d7e74731 755 gdb_stdout = new null_file ();
1a088d06 756 break;
aae1c79a 757 case 'D':
8d551b02 758 if (optarg[0] == '\0')
91b35fd0
GB
759 error (_("%s: empty path for `--data-directory'"),
760 gdb_program_name);
8d551b02 761 set_gdb_data_directory (optarg);
e64e0392 762 gdb_datadir_provided = 1;
aae1c79a 763 break;
3fc11d3e
JM
764#ifdef GDBTK
765 case 'z':
766 {
371d5dec
MS
767 extern int gdbtk_test (char *);
768
3fc11d3e 769 if (!gdbtk_test (optarg))
91b35fd0
GB
770 error (_("%s: unable to load tclcommand file \"%s\""),
771 gdb_program_name, optarg);
3fc11d3e
JM
772 break;
773 }
774 case 'y':
78f49586
TT
775 /* Backwards compatibility only. */
776 break;
3fc11d3e
JM
777 case 'w':
778 {
3a9b40b6
JK
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
3fc11d3e
JM
783 external_editor_command = xstrdup (optarg);
784 break;
785 }
786#endif /* GDBTK */
fb40c209 787 case 'i':
4389a95a
AC
788 xfree (interpreter_p);
789 interpreter_p = xstrdup (optarg);
fb40c209 790 break;
c906108c 791 case 'd':
f60ee22e 792 dirarg.push_back (optarg);
c906108c
SS
793 break;
794 case 't':
795 ttyarg = optarg;
796 break;
797 case 'q':
798 quiet = 1;
799 break;
800 case 'b':
801 {
802 int i;
803 char *p;
804
805 i = strtol (optarg, &p, 0);
806 if (i == 0 && p == optarg)
075c7033
GB
807 warning (_("could not set baud rate to `%s'."),
808 optarg);
c906108c
SS
809 else
810 baud_rate = i;
811 }
046ca86a 812 break;
c906108c
SS
813 case 'l':
814 {
815 int i;
816 char *p;
817
818 i = strtol (optarg, &p, 0);
819 if (i == 0 && p == optarg)
075c7033
GB
820 warning (_("could not set timeout limit to `%s'."),
821 optarg);
c906108c
SS
822 else
823 remote_timeout = i;
824 }
825 break;
826
97cbe998
SDJ
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
c906108c 841 case '?':
91b35fd0
GB
842 error (_("Use `%s --help' for a complete list of options."),
843 gdb_program_name);
c906108c
SS
844 }
845 }
846
7c953934 847 if (batch_flag)
c906108c
SS
848 quiet = 1;
849 }
850
e379cee6
PA
851 save_original_signals_state (quiet);
852
992c7d70
GB
853 /* Try to set up an alternate signal stack for SIGSEGV handlers. */
854 setup_alternate_signal_stack ();
855
f218b647 856 /* Initialize all files. */
b5981e5a 857 gdb_init (gdb_program_name);
c906108c 858
371d5dec
MS
859 /* Now that gdb_init has created the initial inferior, we're in
860 position to set args for that inferior. */
3f81c18a
VP
861 if (set_args)
862 {
863 /* The remaining options are the command-line options for the
864 inferior. The first one is the sym/exec file, and the rest
865 are arguments. */
866 if (optind >= argc)
91b35fd0
GB
867 error (_("%s: `--args' specified but no program specified"),
868 gdb_program_name);
869
3f81c18a
VP
870 symarg = argv[optind];
871 execarg = argv[optind];
872 ++optind;
873 set_inferior_args_vector (argc - optind, &argv[optind]);
874 }
875 else
876 {
877 /* OK, that's all the options. */
878
879 /* The first argument, if specified, is the name of the
880 executable. */
881 if (optind < argc)
882 {
883 symarg = argv[optind];
884 execarg = argv[optind];
885 optind++;
886 }
887
888 /* If the user hasn't already specified a PID or the name of a
889 core file, then a second optional argument is allowed. If
890 present, this argument should be interpreted as either a
891 PID or a core file, whichever works. */
892 if (pidarg == NULL && corearg == NULL && optind < argc)
893 {
894 pid_or_core_arg = argv[optind];
895 optind++;
896 }
897
898 /* Any argument left on the command line is unexpected and
899 will be ignored. Inform the user. */
900 if (optind < argc)
3e43a32a
MS
901 fprintf_unfiltered (gdb_stderr,
902 _("Excess command line "
903 "arguments ignored. (%s%s)\n"),
3f81c18a
VP
904 argv[optind],
905 (optind == argc - 1) ? "" : " ...");
906 }
907
025bb325 908 /* Lookup gdbinit files. Note that the gdbinit file name may be
371d5dec
MS
909 overriden during file initialization, so get_init_files should be
910 called after gdb_init. */
57a46001
JG
911 get_init_files (&system_gdbinit, &home_gdbinit, &local_gdbinit);
912
c906108c 913 /* Do these (and anything which might call wrap_here or *_filtered)
4389a95a
AC
914 after initialize_all_files() but before the interpreter has been
915 installed. Otherwize the help/version messages will be eaten by
916 the interpreter's output handler. */
917
c906108c
SS
918 if (print_version)
919 {
920 print_gdb_version (gdb_stdout);
921 wrap_here ("");
922 printf_filtered ("\n");
923 exit (0);
924 }
925
926 if (print_help)
927 {
928 print_gdb_help (gdb_stdout);
929 fputs_unfiltered ("\n", gdb_stdout);
930 exit (0);
931 }
932
6eaaf48b
EZ
933 if (print_configuration)
934 {
935 print_gdb_configuration (gdb_stdout);
936 wrap_here ("");
937 printf_filtered ("\n");
938 exit (0);
939 }
940
4389a95a
AC
941 /* FIXME: cagney/2003-02-03: The big hack (part 1 of 2) that lets
942 GDB retain the old MI1 interpreter startup behavior. Output the
943 copyright message before the interpreter is installed. That way
944 it isn't encapsulated in MI output. */
945 if (!quiet && strcmp (interpreter_p, INTERP_MI1) == 0)
946 {
371d5dec
MS
947 /* Print all the junk at the top, with trailing "..." if we are
948 about to read a symbol file (possibly slowly). */
4389a95a
AC
949 print_gdb_version (gdb_stdout);
950 if (symarg)
951 printf_filtered ("..");
952 wrap_here ("");
e896d70e 953 printf_filtered ("\n");
371d5dec
MS
954 gdb_flush (gdb_stdout); /* Force to screen during slow
955 operations. */
4389a95a
AC
956 }
957
4389a95a 958 /* Install the default UI. All the interpreters should have had a
371d5dec 959 look at things by now. Initialize the default interpreter. */
60eb5395 960 set_top_level_interpreter (interpreter_p);
4389a95a
AC
961
962 /* FIXME: cagney/2003-02-03: The big hack (part 2 of 2) that lets
963 GDB retain the old MI1 interpreter startup behavior. Output the
964 copyright message after the interpreter is installed when it is
965 any sane interpreter. */
966 if (!quiet && !current_interp_named_p (INTERP_MI1))
c906108c 967 {
371d5dec
MS
968 /* Print all the junk at the top, with trailing "..." if we are
969 about to read a symbol file (possibly slowly). */
c906108c
SS
970 print_gdb_version (gdb_stdout);
971 if (symarg)
972 printf_filtered ("..");
c5aa993b 973 wrap_here ("");
e896d70e 974 printf_filtered ("\n");
371d5dec
MS
975 gdb_flush (gdb_stdout); /* Force to screen during slow
976 operations. */
c906108c
SS
977 }
978
e896d70e 979 /* Set off error and warning messages with a blank line. */
69bbf465 980 tmp_warn_preprint.reset ();
defc6f8c 981 warning_pre_print = _("\nwarning: ");
c906108c 982
16e7150e
JG
983 /* Read and execute the system-wide gdbinit file, if it exists.
984 This is done *before* all the command line arguments are
985 processed; it sets global parameters, which are independent of
986 what file you are debugging or what directory you are in. */
987 if (system_gdbinit && !inhibit_gdbinit)
013af3fc 988 catch_command_errors (source_script, system_gdbinit, 0);
16e7150e 989
c906108c
SS
990 /* Read and execute $HOME/.gdbinit file, if it exists. This is done
991 *before* all the command line arguments are processed; it sets
992 global parameters, which are independent of what file you are
993 debugging or what directory you are in. */
c906108c 994
07540c15 995 if (home_gdbinit && !inhibit_gdbinit && !inhibit_home_gdbinit)
013af3fc 996 catch_command_errors (source_script, home_gdbinit, 0);
c906108c 997
2d7b58e8 998 /* Process '-ix' and '-iex' options early. */
f60ee22e 999 for (i = 0; i < cmdarg_vec.size (); i++)
2d7b58e8 1000 {
f60ee22e
TT
1001 const struct cmdarg &cmdarg_p = cmdarg_vec[i];
1002
1003 switch (cmdarg_p.type)
1004 {
1005 case CMDARG_INIT_FILE:
013af3fc
TT
1006 catch_command_errors (source_script, cmdarg_p.string,
1007 !batch_flag);
f60ee22e
TT
1008 break;
1009 case CMDARG_INIT_COMMAND:
1010 catch_command_errors (execute_command, cmdarg_p.string,
1011 !batch_flag);
1012 break;
1013 }
2d7b58e8
JK
1014 }
1015
c906108c
SS
1016 /* Now perform all the actions indicated by the arguments. */
1017 if (cdarg != NULL)
1018 {
97c18565 1019 catch_command_errors (cd_command, cdarg, 0);
c906108c 1020 }
c906108c 1021
f60ee22e 1022 for (i = 0; i < dirarg.size (); i++)
97c18565 1023 catch_command_errors (directory_switch, dirarg[i], 0);
c906108c 1024
88a1906b 1025 /* Skip auto-loading section-specified scripts until we've sourced
371d5dec
MS
1026 local_gdbinit (which is often used to augment the source search
1027 path). */
bf88dd68
JK
1028 save_auto_load = global_auto_load;
1029 global_auto_load = 0;
88a1906b 1030
c906108c
SS
1031 if (execarg != NULL
1032 && symarg != NULL
5cb316ef 1033 && strcmp (execarg, symarg) == 0)
c906108c 1034 {
11cf8741
JM
1035 /* The exec file and the symbol-file are the same. If we can't
1036 open it, better only print one error message.
371d5dec 1037 catch_command_errors returns non-zero on success! */
013af3fc
TT
1038 if (catch_command_errors (exec_file_attach, execarg,
1039 !batch_flag))
1040 catch_command_errors (symbol_file_add_main_adapter, symarg,
1041 !batch_flag);
c906108c
SS
1042 }
1043 else
1044 {
1045 if (execarg != NULL)
013af3fc
TT
1046 catch_command_errors (exec_file_attach, execarg,
1047 !batch_flag);
c906108c 1048 if (symarg != NULL)
013af3fc
TT
1049 catch_command_errors (symbol_file_add_main_adapter, symarg,
1050 !batch_flag);
c906108c 1051 }
c906108c 1052
a4d9b460 1053 if (corearg && pidarg)
3e43a32a
MS
1054 error (_("Can't attach to process and specify "
1055 "a core file at the same time."));
a4d9b460 1056
c906108c 1057 if (corearg != NULL)
97c18565 1058 catch_command_errors (core_file_command, corearg, !batch_flag);
a4d9b460 1059 else if (pidarg != NULL)
97c18565 1060 catch_command_errors (attach_command, pidarg, !batch_flag);
a4d9b460 1061 else if (pid_or_core_arg)
c906108c 1062 {
a4d9b460
PA
1063 /* The user specified 'gdb program pid' or gdb program core'.
1064 If pid_or_core_arg's first character is a digit, try attach
1065 first and then corefile. Otherwise try just corefile. */
00546b04 1066
a4d9b460 1067 if (isdigit (pid_or_core_arg[0]))
11cf8741 1068 {
a4d9b460 1069 if (catch_command_errors (attach_command, pid_or_core_arg,
97c18565 1070 !batch_flag) == 0)
a4d9b460 1071 catch_command_errors (core_file_command, pid_or_core_arg,
97c18565 1072 !batch_flag);
11cf8741 1073 }
a4d9b460
PA
1074 else /* Can't be a pid, better be a corefile. */
1075 catch_command_errors (core_file_command, pid_or_core_arg,
97c18565 1076 !batch_flag);
c906108c 1077 }
c906108c
SS
1078
1079 if (ttyarg != NULL)
3f81c18a 1080 set_inferior_io_terminal (ttyarg);
c906108c 1081
371d5dec 1082 /* Error messages should no longer be distinguished with extra output. */
defc6f8c 1083 warning_pre_print = _("warning: ");
c906108c
SS
1084
1085 /* Read the .gdbinit file in the current directory, *if* it isn't
1086 the same as the $HOME/.gdbinit file (it should exist, also). */
bf88dd68
JK
1087 if (local_gdbinit)
1088 {
14278e1f
TT
1089 auto_load_local_gdbinit_pathname
1090 = gdb_realpath (local_gdbinit).release ();
bf88dd68 1091
bccbefd2 1092 if (!inhibit_gdbinit && auto_load_local_gdbinit
4dc84fd1
JK
1093 && file_is_auto_load_safe (local_gdbinit,
1094 _("auto-load: Loading .gdbinit "
1095 "file \"%s\".\n"),
1096 local_gdbinit))
bf88dd68
JK
1097 {
1098 auto_load_local_gdbinit_loaded = 1;
1099
013af3fc 1100 catch_command_errors (source_script, local_gdbinit, 0);
bf88dd68
JK
1101 }
1102 }
c906108c 1103
88a1906b
DE
1104 /* Now that all .gdbinit's have been read and all -d options have been
1105 processed, we can read any scripts mentioned in SYMARG.
1106 We wait until now because it is common to add to the source search
1107 path in local_gdbinit. */
bf88dd68 1108 global_auto_load = save_auto_load;
7f6130ff
JK
1109 ALL_OBJFILES (objfile)
1110 load_auto_scripts_for_objfile (objfile);
88a1906b 1111
8320cc4f 1112 /* Process '-x' and '-ex' options. */
f60ee22e 1113 for (i = 0; i < cmdarg_vec.size (); i++)
c906108c 1114 {
f60ee22e
TT
1115 const struct cmdarg &cmdarg_p = cmdarg_vec[i];
1116
1117 switch (cmdarg_p.type)
1118 {
1119 case CMDARG_FILE:
013af3fc
TT
1120 catch_command_errors (source_script, cmdarg_p.string,
1121 !batch_flag);
f60ee22e
TT
1122 break;
1123 case CMDARG_COMMAND:
1124 catch_command_errors (execute_command, cmdarg_p.string,
1125 !batch_flag);
1126 break;
1127 }
c906108c 1128 }
c906108c 1129
371d5dec
MS
1130 /* Read in the old history after all the command files have been
1131 read. */
c5aa993b 1132 init_history ();
c906108c 1133
7c953934 1134 if (batch_flag)
c906108c
SS
1135 {
1136 /* We have hit the end of the batch file. */
4b0ad762 1137 quit_force (NULL, 0);
c906108c 1138 }
1e3b796d
TT
1139}
1140
1141static void
1142captured_main (void *data)
1143{
1144 struct captured_main_args *context = (struct captured_main_args *) data;
1145
1146 captured_main_1 (context);
c906108c 1147
11cf8741
JM
1148 /* NOTE: cagney/1999-11-07: There is probably no reason for not
1149 moving this loop and the code found in captured_command_loop()
1150 into the command_loop() proper. The main thing holding back that
371d5dec 1151 change - SET_TOP_LEVEL() - has been eliminated. */
11cf8741
JM
1152 while (1)
1153 {
bf469271
PA
1154 TRY
1155 {
1156 captured_command_loop ();
1157 }
1158 CATCH (ex, RETURN_MASK_ALL)
1159 {
1160 exception_print (gdb_stderr, ex);
1161 }
1162 END_CATCH
11cf8741 1163 }
11cf8741
JM
1164 /* No exit -- exit is through quit_command. */
1165}
c906108c 1166
11cf8741 1167int
f15ab4a7 1168gdb_main (struct captured_main_args *args)
11cf8741 1169{
98d9f24e
PA
1170 TRY
1171 {
1172 captured_main (args);
1173 }
1174 CATCH (ex, RETURN_MASK_ALL)
1175 {
1176 exception_print (gdb_stderr, ex);
1177 }
1178 END_CATCH
1179
864dbc90
AC
1180 /* The only way to end up here is by an error (normal exit is
1181 handled by quit_force()), hence always return an error status. */
1182 return 1;
c906108c
SS
1183}
1184
11cf8741 1185
c906108c
SS
1186/* Don't use *_filtered for printing help. We don't want to prompt
1187 for continue no matter how small the screen or how much we're going
1188 to print. */
1189
1190static void
d9fcf2fb 1191print_gdb_help (struct ui_file *stream)
c906108c 1192{
50dd9793
PA
1193 const char *system_gdbinit;
1194 const char *home_gdbinit;
1195 const char *local_gdbinit;
16e7150e
JG
1196
1197 get_init_files (&system_gdbinit, &home_gdbinit, &local_gdbinit);
1198
b187bec1
EZ
1199 /* Note: The options in the list below are only approximately sorted
1200 in the alphabetical order, so as to group closely related options
1201 together. */
defc6f8c 1202 fputs_unfiltered (_("\
c906108c 1203This is the GNU debugger. Usage:\n\n\
552c04a7
TT
1204 gdb [options] [executable-file [core-file or process-id]]\n\
1205 gdb [options] --args executable-file [inferior-arguments ...]\n\n\
defc6f8c
TT
1206"), stream);
1207 fputs_unfiltered (_("\
b187bec1 1208Selection of debuggee and its files:\n\n\
552c04a7 1209 --args Arguments after executable-file are passed to inferior\n\
b187bec1
EZ
1210 --core=COREFILE Analyze the core dump COREFILE.\n\
1211 --exec=EXECFILE Use EXECFILE as the executable.\n\
1212 --pid=PID Attach to running process PID.\n\
1213 --directory=DIR Search for source files in DIR.\n\
1214 --se=FILE Use FILE as symbol file and executable file.\n\
1215 --symbols=SYMFILE Read symbols from SYMFILE.\n\
1216 --readnow Fully read symbol files on first access.\n\
97cbe998 1217 --readnever Do not read symbol files.\n\
b187bec1 1218 --write Set writing into executable and core files.\n\n\
defc6f8c
TT
1219"), stream);
1220 fputs_unfiltered (_("\
b187bec1 1221Initial commands and command files:\n\n\
8a5a3c82 1222 --command=FILE, -x Execute GDB commands from FILE.\n\
b187bec1
EZ
1223 --init-command=FILE, -ix\n\
1224 Like -x but execute commands before loading inferior.\n\
8a5a3c82
AS
1225 --eval-command=COMMAND, -ex\n\
1226 Execute a single GDB command.\n\
1227 May be used multiple times and in conjunction\n\
1228 with --command.\n\
b187bec1
EZ
1229 --init-eval-command=COMMAND, -iex\n\
1230 Like -ex but before loading inferior.\n\
1231 --nh Do not read ~/.gdbinit.\n\
1232 --nx Do not read any .gdbinit files in any directory.\n\n\
defc6f8c
TT
1233"), stream);
1234 fputs_unfiltered (_("\
b187bec1 1235Output and user interface control:\n\n\
c906108c 1236 --fullname Output information used by emacs-GDB interface.\n\
8b93c638
JM
1237 --interpreter=INTERP\n\
1238 Select a specific interpreter / user interface\n\
c906108c 1239 --tty=TTY Use TTY for input/output by the program being debugged.\n\
b187bec1
EZ
1240 -w Use the GUI interface.\n\
1241 --nw Do not use the GUI interface.\n\
defc6f8c 1242"), stream);
c906108c 1243#if defined(TUI)
defc6f8c 1244 fputs_unfiltered (_("\
c906108c 1245 --tui Use a terminal user interface.\n\
defc6f8c 1246"), stream);
c906108c 1247#endif
481860b3 1248 fputs_unfiltered (_("\
b187bec1 1249 --dbx DBX compatibility mode.\n\
adcc0a31 1250 -q, --quiet, --silent\n\
1251 Do not print version number on startup.\n\n\
b187bec1
EZ
1252"), stream);
1253 fputs_unfiltered (_("\
1254Operating modes:\n\n\
1255 --batch Exit after processing options.\n\
1256 --batch-silent Like --batch, but suppress all gdb stdout output.\n\
1257 --return-child-result\n\
1258 GDB exit code will be the child's exit code.\n\
1259 --configuration Print details about GDB configuration and then exit.\n\
1260 --help Print this message and then exit.\n\
1261 --version Print version information and then exit.\n\n\
1262Remote debugging options:\n\n\
1263 -b BAUDRATE Set serial port baud rate used for remote debugging.\n\
1264 -l TIMEOUT Set timeout in seconds for remote debugging.\n\n\
1265Other options:\n\n\
1266 --cd=DIR Change current directory to DIR.\n\
8d551b02
DE
1267 --data-directory=DIR, -D\n\
1268 Set GDB's data-directory to DIR.\n\
defc6f8c 1269"), stream);
defc6f8c 1270 fputs_unfiltered (_("\n\
16e7150e
JG
1271At startup, GDB reads the following init files and executes their commands:\n\
1272"), stream);
1273 if (system_gdbinit)
1274 fprintf_unfiltered (stream, _("\
1275 * system-wide init file: %s\n\
1276"), system_gdbinit);
1277 if (home_gdbinit)
1278 fprintf_unfiltered (stream, _("\
1279 * user-specific init file: %s\n\
1280"), home_gdbinit);
1281 if (local_gdbinit)
1282 fprintf_unfiltered (stream, _("\
bf88dd68 1283 * local init file (see also 'set auto-load local-gdbinit'): ./%s\n\
16e7150e
JG
1284"), local_gdbinit);
1285 fputs_unfiltered (_("\n\
c906108c
SS
1286For more information, type \"help\" from within GDB, or consult the\n\
1287GDB manual (available as on-line info or a printed manual).\n\
defc6f8c 1288"), stream);
c16158bc
JM
1289 if (REPORT_BUGS_TO[0] && stream == gdb_stdout)
1290 fprintf_unfiltered (stream, _("\
1291Report bugs to \"%s\".\n\
1292"), REPORT_BUGS_TO);
c906108c 1293}
This page took 1.639425 seconds and 4 git commands to generate.