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