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