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