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