Automatic date update in version.in
[external/binutils.git] / gdb / main.c
index 1552e95..e14dd06 100644 (file)
@@ -1,6 +1,6 @@
 /* Top level stuff for GDB, the GNU debugger.
 
-   Copyright (C) 1986-2018 Free Software Foundation, Inc.
+   Copyright (C) 1986-2019 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
 #include "maint.h"
 
 #include "filenames.h"
-#include "filestuff.h"
+#include "common/filestuff.h"
 #include <signal.h>
 #include "event-top.h"
 #include "infrun.h"
-#include "signals-state-save-restore.h"
+#include "common/signals-state-save-restore.h"
 #include <vector>
 #include "common/pathstuff.h"
+#include "cli/cli-style.h"
 
 /* The selected interpreter.  This will be used as a set command
    variable, so it should always be malloc'ed - since
@@ -485,7 +486,6 @@ captured_main_1 (struct captured_main_args *context)
 
   int i;
   int save_auto_load;
-  struct objfile *objfile;
   int ret = 1;
 
 #ifdef HAVE_USEFUL_SBRK
@@ -506,7 +506,6 @@ captured_main_1 (struct captured_main_args *context)
   textdomain (PACKAGE);
 #endif
 
-  bfd_init ();
   notice_open_fds ();
 
   saved_command_line = (char *) xstrdup ("");
@@ -517,12 +516,17 @@ captured_main_1 (struct captured_main_args *context)
   setvbuf (stderr, NULL, _IONBF, BUFSIZ);
 #endif
 
+  /* Note: `error' cannot be called before this point, because the
+     caller will crash when trying to print the exception.  */
   main_ui = new ui (stdin, stdout, stderr);
   current_ui = main_ui;
 
   gdb_stdtargerr = gdb_stderr; /* for moment */
   gdb_stdtargin = gdb_stdin;   /* for moment */
 
+  if (bfd_init () != BFD_INIT_MAGIC)
+    error (_("fatal error: libbfd ABI mismatch"));
+
 #ifdef __MINGW32__
   /* On Windows, argv[0] is not necessarily set to absolute form when
      GDB is found along PATH, without which relocation doesn't work.  */
@@ -801,28 +805,28 @@ captured_main_1 (struct captured_main_args *context)
            break;
          case 'b':
            {
-             int i;
+             int rate;
              char *p;
 
-             i = strtol (optarg, &p, 0);
-             if (i == 0 && p == optarg)
+             rate = strtol (optarg, &p, 0);
+             if (rate == 0 && p == optarg)
                warning (_("could not set baud rate to `%s'."),
                         optarg);
              else
-               baud_rate = i;
+               baud_rate = rate;
            }
             break;
          case 'l':
            {
-             int i;
+             int timeout;
              char *p;
 
-             i = strtol (optarg, &p, 0);
-             if (i == 0 && p == optarg)
+             timeout = strtol (optarg, &p, 0);
+             if (timeout == 0 && p == optarg)
                warning (_("could not set timeout limit to `%s'."),
                         optarg);
              else
-               remote_timeout = i;
+               remote_timeout = timeout;
            }
            break;
 
@@ -847,7 +851,12 @@ captured_main_1 (struct captured_main_args *context)
       }
 
     if (batch_flag)
-      quiet = 1;
+      {
+       quiet = 1;
+
+       /* Disable all output styling when running in batch mode.  */
+       cli_styling = 0;
+      }
   }
 
   save_original_signals_state (quiet);
@@ -1120,7 +1129,7 @@ captured_main_1 (struct captured_main_args *context)
      We wait until now because it is common to add to the source search
      path in local_gdbinit.  */
   global_auto_load = save_auto_load;
-  ALL_OBJFILES (objfile)
+  for (objfile *objfile : current_program_space->objfiles ())
     load_auto_scripts_for_objfile (objfile);
 
   /* Process '-x' and '-ex' options.  */