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