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