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