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