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