]> Git Repo - binutils.git/blob - gdb/main.c
acb7a45fb7c56a8c0c97c55df9a33d318f62b919
[binutils.git] / gdb / main.c
1 /* Top level stuff for GDB, the GNU debugger.
2
3    Copyright (C) 1986-2022 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 #include "getopt.h"
27
28 #include <sys/types.h>
29 #include <sys/stat.h>
30 #include <ctype.h>
31 #include "gdbsupport/event-loop.h"
32 #include "ui-out.h"
33
34 #include "interps.h"
35 #include "main.h"
36 #include "source.h"
37 #include "cli/cli-cmds.h"
38 #include "objfiles.h"
39 #include "auto-load.h"
40 #include "maint.h"
41
42 #include "filenames.h"
43 #include "gdbsupport/filestuff.h"
44 #include <signal.h>
45 #include "event-top.h"
46 #include "infrun.h"
47 #include "gdbsupport/signals-state-save-restore.h"
48 #include <algorithm>
49 #include <vector>
50 #include "gdbsupport/pathstuff.h"
51 #include "cli/cli-style.h"
52 #ifdef GDBTK
53 #include "gdbtk/generic/gdbtk.h"
54 #endif
55 #include "gdbsupport/alt-stack.h"
56 #include "observable.h"
57 #include "serial.h"
58
59 /* The selected interpreter.  This will be used as a set command
60    variable, so it should always be malloc'ed - since
61    do_setshow_command will free it.  */
62 char *interpreter_p;
63
64 /* Whether dbx commands will be handled.  */
65 int dbx_commands = 0;
66
67 /* System root path, used to find libraries etc.  */
68 std::string gdb_sysroot;
69
70 /* GDB datadir, used to store data files.  */
71 std::string gdb_datadir;
72
73 /* Non-zero if GDB_DATADIR was provided on the command line.
74    This doesn't track whether data-directory is set later from the
75    command line, but we don't reread system.gdbinit when that happens.  */
76 static int gdb_datadir_provided = 0;
77
78 /* If gdb was configured with --with-python=/path,
79    the possibly relocated path to python's lib directory.  */
80 std::string python_libdir;
81
82 /* Target IO streams.  */
83 struct ui_file *gdb_stdtargin;
84 struct ui_file *gdb_stdtarg;
85 struct ui_file *gdb_stdtargerr;
86
87 /* True if --batch or --batch-silent was seen.  */
88 int batch_flag = 0;
89
90 /* Support for the --batch-silent option.  */
91 int batch_silent = 0;
92
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.  */
96 int return_child_result = 0;
97 int return_child_result_value = -1;
98
99
100 /* GDB as it has been invoked from the command line (i.e. argv[0]).  */
101 static char *gdb_program_name;
102
103 /* Return read only pointer to GDB_PROGRAM_NAME.  */
104 const char *
105 get_gdb_program_name (void)
106 {
107   return gdb_program_name;
108 }
109
110 static void print_gdb_help (struct ui_file *);
111
112 /* Set the data-directory parameter to NEW_DATADIR.
113    If NEW_DATADIR is not a directory then a warning is printed.
114    We don't signal an error for backward compatibility.  */
115
116 void
117 set_gdb_data_directory (const char *new_datadir)
118 {
119   struct stat st;
120
121   if (stat (new_datadir, &st) < 0)
122     {
123       int save_errno = errno;
124
125       gdb_printf (gdb_stderr, "Warning: ");
126       print_sys_errmsg (new_datadir, save_errno);
127     }
128   else if (!S_ISDIR (st.st_mode))
129     warning (_("%ps is not a directory."),
130              styled_string (file_name_style.style (), new_datadir));
131
132   gdb_datadir = gdb_realpath (new_datadir).get ();
133
134   /* gdb_realpath won't return an absolute path if the path doesn't exist,
135      but we still want to record an absolute path here.  If the user entered
136      "../foo" and "../foo" doesn't exist then we'll record $(pwd)/../foo which
137      isn't canonical, but that's ok.  */
138   if (!IS_ABSOLUTE_PATH (gdb_datadir.c_str ()))
139     {
140       gdb::unique_xmalloc_ptr<char> abs_datadir
141         = gdb_abspath (gdb_datadir.c_str ());
142
143       gdb_datadir = abs_datadir.get ();
144     }
145 }
146
147 /* Relocate a file or directory.  PROGNAME is the name by which gdb
148    was invoked (i.e., argv[0]).  INITIAL is the default value for the
149    file or directory.  RELOCATABLE is true if the value is relocatable,
150    false otherwise.  This may return an empty string under the same
151    conditions as make_relative_prefix returning NULL.  */
152
153 static std::string
154 relocate_path (const char *progname, const char *initial, bool relocatable)
155 {
156   if (relocatable)
157     {
158       gdb::unique_xmalloc_ptr<char> str (make_relative_prefix (progname,
159                                                                BINDIR,
160                                                                initial));
161       if (str != nullptr)
162         return str.get ();
163       return std::string ();
164     }
165   return initial;
166 }
167
168 /* Like relocate_path, but specifically checks for a directory.
169    INITIAL is relocated according to the rules of relocate_path.  If
170    the result is a directory, it is used; otherwise, INITIAL is used.
171    The chosen directory is then canonicalized using lrealpath.  */
172
173 std::string
174 relocate_gdb_directory (const char *initial, bool relocatable)
175 {
176   std::string dir = relocate_path (gdb_program_name, initial, relocatable);
177   if (!dir.empty ())
178     {
179       struct stat s;
180
181       if (stat (dir.c_str (), &s) != 0 || !S_ISDIR (s.st_mode))
182         {
183           dir.clear ();
184         }
185     }
186   if (dir.empty ())
187     dir = initial;
188
189   /* Canonicalize the directory.  */
190   if (!dir.empty ())
191     {
192       gdb::unique_xmalloc_ptr<char> canon_sysroot (lrealpath (dir.c_str ()));
193
194       if (canon_sysroot)
195         dir = canon_sysroot.get ();
196     }
197
198   return dir;
199 }
200
201 /* Given a gdbinit path in FILE, adjusts it according to the gdb_datadir
202    parameter if it is in the data dir, or passes it through relocate_path
203    otherwise.  */
204
205 static std::string
206 relocate_file_path_maybe_in_datadir (const std::string &file,
207                                      bool relocatable)
208 {
209   size_t datadir_len = strlen (GDB_DATADIR);
210
211   std::string relocated_path;
212
213   /* If SYSTEM_GDBINIT lives in data-directory, and data-directory
214      has been provided, search for SYSTEM_GDBINIT there.  */
215   if (gdb_datadir_provided
216       && datadir_len < file.length ()
217       && filename_ncmp (file.c_str (), GDB_DATADIR, datadir_len) == 0
218       && IS_DIR_SEPARATOR (file[datadir_len]))
219     {
220       /* Append the part of SYSTEM_GDBINIT that follows GDB_DATADIR
221          to gdb_datadir.  */
222
223       size_t start = datadir_len;
224       for (; IS_DIR_SEPARATOR (file[start]); ++start)
225         ;
226       relocated_path = gdb_datadir + SLASH_STRING + file.substr (start);
227     }
228   else
229     {
230       relocated_path = relocate_path (gdb_program_name, file.c_str (),
231                                       relocatable);
232     }
233     return relocated_path;
234 }
235
236 /* A class to wrap up the logic for finding the three different types of
237    initialisation files GDB uses, system wide, home directory, and current
238    working directory.  */
239
240 class gdb_initfile_finder
241 {
242 public:
243   /* Constructor.  Finds initialisation files named FILENAME in the home
244      directory or local (current working) directory.  System initialisation
245      files are found in both SYSTEM_FILENAME and SYSTEM_DIRNAME if these
246      are not nullptr (either or both can be).  The matching *_RELOCATABLE
247      flag is passed through to RELOCATE_FILE_PATH_MAYBE_IN_DATADIR.
248
249      If FILENAME starts with a '.' then when looking in the home directory
250      this first '.' can be ignored in some cases.  */
251   explicit gdb_initfile_finder (const char *filename,
252                                 const char *system_filename,
253                                 bool system_filename_relocatable,
254                                 const char *system_dirname,
255                                 bool system_dirname_relocatable,
256                                 bool lookup_local_file)
257   {
258     struct stat s;
259
260     if (system_filename != nullptr && system_filename[0] != '\0')
261       {
262         std::string relocated_filename
263           = relocate_file_path_maybe_in_datadir (system_filename,
264                                                  system_filename_relocatable);
265         if (!relocated_filename.empty ()
266             && stat (relocated_filename.c_str (), &s) == 0)
267           m_system_files.push_back (relocated_filename);
268       }
269
270     if (system_dirname != nullptr && system_dirname[0] != '\0')
271       {
272         std::string relocated_dirname
273           = relocate_file_path_maybe_in_datadir (system_dirname,
274                                                  system_dirname_relocatable);
275         if (!relocated_dirname.empty ())
276           {
277             gdb_dir_up dir (opendir (relocated_dirname.c_str ()));
278             if (dir != nullptr)
279               {
280                 std::vector<std::string> files;
281                 while (true)
282                   {
283                     struct dirent *ent = readdir (dir.get ());
284                     if (ent == nullptr)
285                       break;
286                     std::string name (ent->d_name);
287                     if (name == "." || name == "..")
288                       continue;
289                     /* ent->d_type is not available on all systems
290                        (e.g. mingw, Solaris), so we have to call stat().  */
291                     std::string tmp_filename
292                       = relocated_dirname + SLASH_STRING + name;
293                     if (stat (tmp_filename.c_str (), &s) != 0
294                         || !S_ISREG (s.st_mode))
295                       continue;
296                     const struct extension_language_defn *extlang
297                       = get_ext_lang_of_file (tmp_filename.c_str ());
298                     /* We effectively don't support "set script-extension
299                        off/soft", because we are loading system init files
300                        here, so it does not really make sense to depend on
301                        a setting.  */
302                     if (extlang != nullptr && ext_lang_present_p (extlang))
303                       files.push_back (std::move (tmp_filename));
304                   }
305                 std::sort (files.begin (), files.end ());
306                 m_system_files.insert (m_system_files.end (),
307                                        files.begin (), files.end ());
308               }
309           }
310       }
311
312       /* If the .gdbinit file in the current directory is the same as
313          the $HOME/.gdbinit file, it should not be sourced.  homebuf
314          and cwdbuf are used in that purpose.  Make sure that the stats
315          are zero in case one of them fails (this guarantees that they
316          won't match if either exists).  */
317
318     struct stat homebuf, cwdbuf;
319     memset (&homebuf, 0, sizeof (struct stat));
320     memset (&cwdbuf, 0, sizeof (struct stat));
321
322     m_home_file = find_gdb_home_config_file (filename, &homebuf);
323
324     if (lookup_local_file && stat (filename, &cwdbuf) == 0)
325       {
326         if (m_home_file.empty ()
327             || memcmp ((char *) &homebuf, (char *) &cwdbuf,
328                        sizeof (struct stat)))
329           m_local_file = filename;
330       }
331   }
332
333   DISABLE_COPY_AND_ASSIGN (gdb_initfile_finder);
334
335   /* Return a list of system initialisation files.  The list could be
336      empty.  */
337   const std::vector<std::string> &system_files () const
338   { return m_system_files; }
339
340   /* Return the path to the home initialisation file.  The string can be
341      empty if there is no such file.  */
342   const std::string &home_file () const
343   { return m_home_file; }
344
345   /* Return the path to the local initialisation file.  The string can be
346      empty if there is no such file.  */
347   const std::string &local_file () const
348   { return m_local_file; }
349
350 private:
351
352   /* Vector of all system init files in the order they should be processed.
353      Could be empty.  */
354   std::vector<std::string> m_system_files;
355
356   /* Initialization file from the home directory.  Could be the empty
357      string if there is no such file found.  */
358   std::string m_home_file;
359
360   /* Initialization file from the current working directory.  Could be the
361      empty string if there is no such file found.  */
362   std::string m_local_file;
363 };
364
365 /* Compute the locations of init files that GDB should source and return
366    them in SYSTEM_GDBINIT, HOME_GDBINIT, LOCAL_GDBINIT.  The SYSTEM_GDBINIT
367    can be returned as an empty vector, and HOME_GDBINIT and LOCAL_GDBINIT
368    can be returned as empty strings if there is no init file of that
369    type.  */
370
371 static void
372 get_init_files (std::vector<std::string> *system_gdbinit,
373                 std::string *home_gdbinit,
374                 std::string *local_gdbinit)
375 {
376   /* Cache the file lookup object so we only actually search for the files
377      once.  */
378   static gdb::optional<gdb_initfile_finder> init_files;
379   if (!init_files.has_value ())
380     init_files.emplace (GDBINIT, SYSTEM_GDBINIT, SYSTEM_GDBINIT_RELOCATABLE,
381                         SYSTEM_GDBINIT_DIR, SYSTEM_GDBINIT_DIR_RELOCATABLE,
382                         true);
383
384   *system_gdbinit = init_files->system_files ();
385   *home_gdbinit = init_files->home_file ();
386   *local_gdbinit = init_files->local_file ();
387 }
388
389 /* Compute the location of the early init file GDB should source and return
390    it in HOME_GDBEARLYINIT.  HOME_GDBEARLYINIT could be returned as an
391    empty string if there is no early init file found.  */
392
393 static void
394 get_earlyinit_files (std::string *home_gdbearlyinit)
395 {
396   /* Cache the file lookup object so we only actually search for the files
397      once.  */
398   static gdb::optional<gdb_initfile_finder> init_files;
399   if (!init_files.has_value ())
400     init_files.emplace (GDBEARLYINIT, nullptr, false, nullptr, false, false);
401
402   *home_gdbearlyinit = init_files->home_file ();
403 }
404
405 /* Start up the event loop.  This is the entry point to the event loop
406    from the command loop.  */
407
408 static void
409 start_event_loop ()
410 {
411   /* Loop until there is nothing to do.  This is the entry point to
412      the event loop engine.  gdb_do_one_event will process one event
413      for each invocation.  It blocks waiting for an event and then
414      processes it.  */
415   while (1)
416     {
417       int result = 0;
418
419       try
420         {
421           result = gdb_do_one_event ();
422         }
423       catch (const gdb_exception &ex)
424         {
425           exception_print (gdb_stderr, ex);
426
427           /* If any exception escaped to here, we better enable
428              stdin.  Otherwise, any command that calls async_disable_stdin,
429              and then throws, will leave stdin inoperable.  */
430           SWITCH_THRU_ALL_UIS ()
431             {
432               async_enable_stdin ();
433             }
434           /* If we long-jumped out of do_one_event, we probably didn't
435              get around to resetting the prompt, which leaves readline
436              in a messed-up state.  Reset it here.  */
437           current_ui->prompt_state = PROMPT_NEEDED;
438           gdb::observers::command_error.notify ();
439           /* This call looks bizarre, but it is required.  If the user
440              entered a command that caused an error,
441              after_char_processing_hook won't be called from
442              rl_callback_read_char_wrapper.  Using a cleanup there
443              won't work, since we want this function to be called
444              after a new prompt is printed.  */
445           if (after_char_processing_hook)
446             (*after_char_processing_hook) ();
447           /* Maybe better to set a flag to be checked somewhere as to
448              whether display the prompt or not.  */
449         }
450
451       if (result < 0)
452         break;
453     }
454
455   /* We are done with the event loop.  There are no more event sources
456      to listen to.  So we exit GDB.  */
457   return;
458 }
459
460 /* Call command_loop.  */
461
462 /* Prevent inlining this function for the benefit of GDB's selftests
463    in the testsuite.  Those tests want to run GDB under GDB and stop
464    here.  */
465 static void captured_command_loop () __attribute__((noinline));
466
467 static void
468 captured_command_loop ()
469 {
470   struct ui *ui = current_ui;
471
472   /* Top-level execution commands can be run in the background from
473      here on.  */
474   current_ui->async = 1;
475
476   /* Give the interpreter a chance to print a prompt, if necessary  */
477   if (ui->prompt_state != PROMPT_BLOCKED)
478     interp_pre_command_loop (top_level_interpreter ());
479
480   /* Now it's time to start the event loop.  */
481   start_event_loop ();
482
483   /* If the command_loop returned, normally (rather than threw an
484      error) we try to quit.  If the quit is aborted, our caller
485      catches the signal and restarts the command loop.  */
486   quit_command (NULL, ui->instream == ui->stdin_stream);
487 }
488
489 /* Handle command errors thrown from within catch_command_errors.  */
490
491 static int
492 handle_command_errors (const struct gdb_exception &e)
493 {
494   if (e.reason < 0)
495     {
496       exception_print (gdb_stderr, e);
497
498       /* If any exception escaped to here, we better enable stdin.
499          Otherwise, any command that calls async_disable_stdin, and
500          then throws, will leave stdin inoperable.  */
501       async_enable_stdin ();
502       return 0;
503     }
504   return 1;
505 }
506
507 /* Type of the command callback passed to the const
508    catch_command_errors.  */
509
510 typedef void (catch_command_errors_const_ftype) (const char *, int);
511
512 /* Wrap calls to commands run before the event loop is started.  */
513
514 static int
515 catch_command_errors (catch_command_errors_const_ftype command,
516                       const char *arg, int from_tty,
517                       bool do_bp_actions = false)
518 {
519   try
520     {
521       int was_sync = current_ui->prompt_state == PROMPT_BLOCKED;
522
523       command (arg, from_tty);
524
525       maybe_wait_sync_command_done (was_sync);
526
527       /* Do any commands attached to breakpoint we stopped at.  */
528       if (do_bp_actions)
529         bpstat_do_actions ();
530     }
531   catch (const gdb_exception &e)
532     {
533       return handle_command_errors (e);
534     }
535
536   return 1;
537 }
538
539 /* Adapter for symbol_file_add_main that translates 'from_tty' to a
540    symfile_add_flags.  */
541
542 static void
543 symbol_file_add_main_adapter (const char *arg, int from_tty)
544 {
545   symfile_add_flags add_flags = 0;
546
547   if (from_tty)
548     add_flags |= SYMFILE_VERBOSE;
549
550   symbol_file_add_main (arg, add_flags);
551 }
552
553 /* Perform validation of the '--readnow' and '--readnever' flags.  */
554
555 static void
556 validate_readnow_readnever ()
557 {
558   if (readnever_symbol_files && readnow_symbol_files)
559     {
560       error (_("%s: '--readnow' and '--readnever' cannot be "
561                "specified simultaneously"),
562              gdb_program_name);
563     }
564 }
565
566 /* Type of this option.  */
567 enum cmdarg_kind
568 {
569   /* Option type -x.  */
570   CMDARG_FILE,
571
572   /* Option type -ex.  */
573   CMDARG_COMMAND,
574
575   /* Option type -ix.  */
576   CMDARG_INIT_FILE,
577
578   /* Option type -iex.  */
579   CMDARG_INIT_COMMAND,
580
581   /* Option type -eix.  */
582   CMDARG_EARLYINIT_FILE,
583
584   /* Option type -eiex.  */
585   CMDARG_EARLYINIT_COMMAND
586 };
587
588 /* Arguments of --command option and its counterpart.  */
589 struct cmdarg
590 {
591   cmdarg (cmdarg_kind type_, char *string_)
592     : type (type_), string (string_)
593   {}
594
595   /* Type of this option.  */
596   enum cmdarg_kind type;
597
598   /* Value of this option - filename or the GDB command itself.  String memory
599      is not owned by this structure despite it is 'const'.  */
600   char *string;
601 };
602
603 /* From CMDARG_VEC execute command files (matching FILE_TYPE) or commands
604    (matching CMD_TYPE).  Update the value in *RET if and scripts or
605    commands are executed.  */
606
607 static void
608 execute_cmdargs (const std::vector<struct cmdarg> *cmdarg_vec,
609                  cmdarg_kind file_type, cmdarg_kind cmd_type,
610                  int *ret)
611 {
612   for (const auto &cmdarg_p : *cmdarg_vec)
613     {
614       if (cmdarg_p.type == file_type)
615         *ret = catch_command_errors (source_script, cmdarg_p.string,
616                                      !batch_flag);
617       else if (cmdarg_p.type == cmd_type)
618         *ret = catch_command_errors (execute_command, cmdarg_p.string,
619                                      !batch_flag, true);
620     }
621 }
622
623 static void
624 captured_main_1 (struct captured_main_args *context)
625 {
626   int argc = context->argc;
627   char **argv = context->argv;
628
629   static int quiet = 0;
630   static int set_args = 0;
631   static int inhibit_home_gdbinit = 0;
632
633   /* Pointers to various arguments from command line.  */
634   char *symarg = NULL;
635   char *execarg = NULL;
636   char *pidarg = NULL;
637   char *corearg = NULL;
638   char *pid_or_core_arg = NULL;
639   char *cdarg = NULL;
640   char *ttyarg = NULL;
641
642   /* These are static so that we can take their address in an
643      initializer.  */
644   static int print_help;
645   static int print_version;
646   static int print_configuration;
647
648   /* Pointers to all arguments of --command option.  */
649   std::vector<struct cmdarg> cmdarg_vec;
650
651   /* All arguments of --directory option.  */
652   std::vector<char *> dirarg;
653
654   int i;
655   int save_auto_load;
656   int ret = 1;
657
658 #ifdef HAVE_USEFUL_SBRK
659   /* Set this before constructing scoped_command_stats.  */
660   lim_at_start = (char *) sbrk (0);
661 #endif
662
663   scoped_command_stats stat_reporter (false);
664
665 #if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES)
666   setlocale (LC_MESSAGES, "");
667 #endif
668 #if defined (HAVE_SETLOCALE)
669   setlocale (LC_CTYPE, "");
670 #endif
671 #ifdef ENABLE_NLS
672   bindtextdomain (PACKAGE, LOCALEDIR);
673   textdomain (PACKAGE);
674 #endif
675
676   notice_open_fds ();
677
678 #ifdef __MINGW32__
679   /* Ensure stderr is unbuffered.  A Cygwin pty or pipe is implemented
680      as a Windows pipe, and Windows buffers on pipes.  */
681   setvbuf (stderr, NULL, _IONBF, BUFSIZ);
682 #endif
683
684   /* Note: `error' cannot be called before this point, because the
685      caller will crash when trying to print the exception.  */
686   main_ui = new ui (stdin, stdout, stderr);
687   current_ui = main_ui;
688
689   gdb_stdtargerr = gdb_stderr;  /* for moment */
690   gdb_stdtargin = gdb_stdin;    /* for moment */
691
692   if (bfd_init () != BFD_INIT_MAGIC)
693     error (_("fatal error: libbfd ABI mismatch"));
694
695 #ifdef __MINGW32__
696   /* On Windows, argv[0] is not necessarily set to absolute form when
697      GDB is found along PATH, without which relocation doesn't work.  */
698   gdb_program_name = windows_get_absolute_argv0 (argv[0]);
699 #else
700   gdb_program_name = xstrdup (argv[0]);
701 #endif
702
703   /* Prefix warning messages with the command name.  */
704   gdb::unique_xmalloc_ptr<char> tmp_warn_preprint
705     = xstrprintf ("%s: warning: ", gdb_program_name);
706   warning_pre_print = tmp_warn_preprint.get ();
707
708   current_directory = getcwd (NULL, 0);
709   if (current_directory == NULL)
710     perror_warning_with_name (_("error finding working directory"));
711
712   /* Set the sysroot path.  */
713   gdb_sysroot = relocate_gdb_directory (TARGET_SYSTEM_ROOT,
714                                         TARGET_SYSTEM_ROOT_RELOCATABLE);
715
716   if (gdb_sysroot.empty ())
717     gdb_sysroot = TARGET_SYSROOT_PREFIX;
718
719   debug_file_directory
720     = relocate_gdb_directory (DEBUGDIR, DEBUGDIR_RELOCATABLE);
721
722   gdb_datadir = relocate_gdb_directory (GDB_DATADIR,
723                                         GDB_DATADIR_RELOCATABLE);
724
725 #ifdef WITH_PYTHON_LIBDIR
726   python_libdir = relocate_gdb_directory (WITH_PYTHON_LIBDIR,
727                                           PYTHON_LIBDIR_RELOCATABLE);
728 #endif
729
730 #ifdef RELOC_SRCDIR
731   add_substitute_path_rule (RELOC_SRCDIR,
732                             make_relative_prefix (gdb_program_name, BINDIR,
733                                                   RELOC_SRCDIR));
734 #endif
735
736   /* There will always be an interpreter.  Either the one passed into
737      this captured main, or one specified by the user at start up, or
738      the console.  Initialize the interpreter to the one requested by 
739      the application.  */
740   interpreter_p = xstrdup (context->interpreter_p);
741
742   /* Parse arguments and options.  */
743   {
744     int c;
745     /* When var field is 0, use flag field to record the equivalent
746        short option (or arbitrary numbers starting at 10 for those
747        with no equivalent).  */
748     enum {
749       OPT_SE = 10,
750       OPT_CD,
751       OPT_ANNOTATE,
752       OPT_STATISTICS,
753       OPT_TUI,
754       OPT_NOWINDOWS,
755       OPT_WINDOWS,
756       OPT_IX,
757       OPT_IEX,
758       OPT_EIX,
759       OPT_EIEX,
760       OPT_READNOW,
761       OPT_READNEVER
762     };
763     /* This struct requires int* in the struct, but write_files is a bool.
764        So use this temporary int that we write back after argument parsing.  */
765     int write_files_1 = 0;
766     static struct option long_options[] =
767     {
768       {"tui", no_argument, 0, OPT_TUI},
769       {"dbx", no_argument, &dbx_commands, 1},
770       {"readnow", no_argument, NULL, OPT_READNOW},
771       {"readnever", no_argument, NULL, OPT_READNEVER},
772       {"r", no_argument, NULL, OPT_READNOW},
773       {"quiet", no_argument, &quiet, 1},
774       {"q", no_argument, &quiet, 1},
775       {"silent", no_argument, &quiet, 1},
776       {"nh", no_argument, &inhibit_home_gdbinit, 1},
777       {"nx", no_argument, &inhibit_gdbinit, 1},
778       {"n", no_argument, &inhibit_gdbinit, 1},
779       {"batch-silent", no_argument, 0, 'B'},
780       {"batch", no_argument, &batch_flag, 1},
781
782     /* This is a synonym for "--annotate=1".  --annotate is now
783        preferred, but keep this here for a long time because people
784        will be running emacses which use --fullname.  */
785       {"fullname", no_argument, 0, 'f'},
786       {"f", no_argument, 0, 'f'},
787
788       {"annotate", required_argument, 0, OPT_ANNOTATE},
789       {"help", no_argument, &print_help, 1},
790       {"se", required_argument, 0, OPT_SE},
791       {"symbols", required_argument, 0, 's'},
792       {"s", required_argument, 0, 's'},
793       {"exec", required_argument, 0, 'e'},
794       {"e", required_argument, 0, 'e'},
795       {"core", required_argument, 0, 'c'},
796       {"c", required_argument, 0, 'c'},
797       {"pid", required_argument, 0, 'p'},
798       {"p", required_argument, 0, 'p'},
799       {"command", required_argument, 0, 'x'},
800       {"eval-command", required_argument, 0, 'X'},
801       {"version", no_argument, &print_version, 1},
802       {"configuration", no_argument, &print_configuration, 1},
803       {"x", required_argument, 0, 'x'},
804       {"ex", required_argument, 0, 'X'},
805       {"init-command", required_argument, 0, OPT_IX},
806       {"init-eval-command", required_argument, 0, OPT_IEX},
807       {"ix", required_argument, 0, OPT_IX},
808       {"iex", required_argument, 0, OPT_IEX},
809       {"early-init-command", required_argument, 0, OPT_EIX},
810       {"early-init-eval-command", required_argument, 0, OPT_EIEX},
811       {"eix", required_argument, 0, OPT_EIX},
812       {"eiex", required_argument, 0, OPT_EIEX},
813 #ifdef GDBTK
814       {"tclcommand", required_argument, 0, 'z'},
815       {"enable-external-editor", no_argument, 0, 'y'},
816       {"editor-command", required_argument, 0, 'w'},
817 #endif
818       {"ui", required_argument, 0, 'i'},
819       {"interpreter", required_argument, 0, 'i'},
820       {"i", required_argument, 0, 'i'},
821       {"directory", required_argument, 0, 'd'},
822       {"d", required_argument, 0, 'd'},
823       {"data-directory", required_argument, 0, 'D'},
824       {"D", required_argument, 0, 'D'},
825       {"cd", required_argument, 0, OPT_CD},
826       {"tty", required_argument, 0, 't'},
827       {"baud", required_argument, 0, 'b'},
828       {"b", required_argument, 0, 'b'},
829       {"nw", no_argument, NULL, OPT_NOWINDOWS},
830       {"nowindows", no_argument, NULL, OPT_NOWINDOWS},
831       {"w", no_argument, NULL, OPT_WINDOWS},
832       {"windows", no_argument, NULL, OPT_WINDOWS},
833       {"statistics", no_argument, 0, OPT_STATISTICS},
834       {"write", no_argument, &write_files_1, 1},
835       {"args", no_argument, &set_args, 1},
836       {"l", required_argument, 0, 'l'},
837       {"return-child-result", no_argument, &return_child_result, 1},
838       {0, no_argument, 0, 0}
839     };
840
841     while (1)
842       {
843         int option_index;
844
845         c = getopt_long_only (argc, argv, "",
846                               long_options, &option_index);
847         if (c == EOF || set_args)
848           break;
849
850         /* Long option that takes an argument.  */
851         if (c == 0 && long_options[option_index].flag == 0)
852           c = long_options[option_index].val;
853
854         switch (c)
855           {
856           case 0:
857             /* Long option that just sets a flag.  */
858             break;
859           case OPT_SE:
860             symarg = optarg;
861             execarg = optarg;
862             break;
863           case OPT_CD:
864             cdarg = optarg;
865             break;
866           case OPT_ANNOTATE:
867             /* FIXME: what if the syntax is wrong (e.g. not digits)?  */
868             annotation_level = atoi (optarg);
869             break;
870           case OPT_STATISTICS:
871             /* Enable the display of both time and space usage.  */
872             set_per_command_time (1);
873             set_per_command_space (1);
874             break;
875           case OPT_TUI:
876             /* --tui is equivalent to -i=tui.  */
877 #ifdef TUI
878             xfree (interpreter_p);
879             interpreter_p = xstrdup (INTERP_TUI);
880 #else
881             error (_("%s: TUI mode is not supported"), gdb_program_name);
882 #endif
883             break;
884           case OPT_WINDOWS:
885             /* FIXME: cagney/2003-03-01: Not sure if this option is
886                actually useful, and if it is, what it should do.  */
887 #ifdef GDBTK
888             /* --windows is equivalent to -i=insight.  */
889             xfree (interpreter_p);
890             interpreter_p = xstrdup (INTERP_INSIGHT);
891 #endif
892             break;
893           case OPT_NOWINDOWS:
894             /* -nw is equivalent to -i=console.  */
895             xfree (interpreter_p);
896             interpreter_p = xstrdup (INTERP_CONSOLE);
897             break;
898           case 'f':
899             annotation_level = 1;
900             break;
901           case 's':
902             symarg = optarg;
903             break;
904           case 'e':
905             execarg = optarg;
906             break;
907           case 'c':
908             corearg = optarg;
909             break;
910           case 'p':
911             pidarg = optarg;
912             break;
913           case 'x':
914             cmdarg_vec.emplace_back (CMDARG_FILE, optarg);
915             break;
916           case 'X':
917             cmdarg_vec.emplace_back (CMDARG_COMMAND, optarg);
918             break;
919           case OPT_IX:
920             cmdarg_vec.emplace_back (CMDARG_INIT_FILE, optarg);
921             break;
922           case OPT_IEX:
923             cmdarg_vec.emplace_back (CMDARG_INIT_COMMAND, optarg);
924             break;
925           case OPT_EIX:
926             cmdarg_vec.emplace_back (CMDARG_EARLYINIT_FILE, optarg);
927             break;
928           case OPT_EIEX:
929             cmdarg_vec.emplace_back (CMDARG_EARLYINIT_COMMAND, optarg);
930             break;
931           case 'B':
932             batch_flag = batch_silent = 1;
933             gdb_stdout = new null_file ();
934             break;
935           case 'D':
936             if (optarg[0] == '\0')
937               error (_("%s: empty path for `--data-directory'"),
938                      gdb_program_name);
939             set_gdb_data_directory (optarg);
940             gdb_datadir_provided = 1;
941             break;
942 #ifdef GDBTK
943           case 'z':
944             {
945               if (!gdbtk_test (optarg))
946                 error (_("%s: unable to load tclcommand file \"%s\""),
947                        gdb_program_name, optarg);
948               break;
949             }
950           case 'y':
951             /* Backwards compatibility only.  */
952             break;
953           case 'w':
954             {
955               /* Set the external editor commands when gdb is farming out files
956                  to be edited by another program.  */
957               external_editor_command = xstrdup (optarg);
958               break;
959             }
960 #endif /* GDBTK */
961           case 'i':
962             xfree (interpreter_p);
963             interpreter_p = xstrdup (optarg);
964             break;
965           case 'd':
966             dirarg.push_back (optarg);
967             break;
968           case 't':
969             ttyarg = optarg;
970             break;
971           case 'q':
972             quiet = 1;
973             break;
974           case 'b':
975             {
976               int rate;
977               char *p;
978
979               rate = strtol (optarg, &p, 0);
980               if (rate == 0 && p == optarg)
981                 warning (_("could not set baud rate to `%s'."),
982                          optarg);
983               else
984                 baud_rate = rate;
985             }
986             break;
987           case 'l':
988             {
989               int timeout;
990               char *p;
991
992               timeout = strtol (optarg, &p, 0);
993               if (timeout == 0 && p == optarg)
994                 warning (_("could not set timeout limit to `%s'."),
995                          optarg);
996               else
997                 remote_timeout = timeout;
998             }
999             break;
1000
1001           case OPT_READNOW:
1002             {
1003               readnow_symbol_files = 1;
1004               validate_readnow_readnever ();
1005             }
1006             break;
1007
1008           case OPT_READNEVER:
1009             {
1010               readnever_symbol_files = 1;
1011               validate_readnow_readnever ();
1012             }
1013             break;
1014
1015           case '?':
1016             error (_("Use `%s --help' for a complete list of options."),
1017                    gdb_program_name);
1018           }
1019       }
1020     write_files = (write_files_1 != 0);
1021
1022     if (batch_flag)
1023       {
1024         quiet = 1;
1025
1026         /* Disable all output styling when running in batch mode.  */
1027         cli_styling = 0;
1028       }
1029   }
1030
1031   if (dbx_commands)
1032     warning (_("--dbx mode is deprecated and will be removed"));
1033
1034   save_original_signals_state (quiet);
1035
1036   /* Try to set up an alternate signal stack for SIGSEGV handlers.  */
1037   gdb::alternate_signal_stack signal_stack;
1038
1039   /* Initialize all files.  */
1040   gdb_init ();
1041
1042   /* Process early init files and early init options from the command line.  */
1043   if (!inhibit_gdbinit)
1044     {
1045       std::string home_gdbearlyinit;
1046       get_earlyinit_files (&home_gdbearlyinit);
1047       if (!home_gdbearlyinit.empty () && !inhibit_home_gdbinit)
1048         ret = catch_command_errors (source_script,
1049                                     home_gdbearlyinit.c_str (), 0);
1050     }
1051   execute_cmdargs (&cmdarg_vec, CMDARG_EARLYINIT_FILE,
1052                    CMDARG_EARLYINIT_COMMAND, &ret);
1053
1054   /* Initialize the extension languages.  */
1055   ext_lang_initialization ();
1056
1057   /* Recheck if we're starting up quietly after processing the startup
1058      scripts and commands.  */
1059   if (!quiet)
1060     quiet = check_quiet_mode ();
1061
1062   /* Now that gdb_init has created the initial inferior, we're in
1063      position to set args for that inferior.  */
1064   if (set_args)
1065     {
1066       /* The remaining options are the command-line options for the
1067          inferior.  The first one is the sym/exec file, and the rest
1068          are arguments.  */
1069       if (optind >= argc)
1070         error (_("%s: `--args' specified but no program specified"),
1071                gdb_program_name);
1072
1073       symarg = argv[optind];
1074       execarg = argv[optind];
1075       ++optind;
1076       set_inferior_args_vector (argc - optind, &argv[optind]);
1077     }
1078   else
1079     {
1080       /* OK, that's all the options.  */
1081
1082       /* The first argument, if specified, is the name of the
1083          executable.  */
1084       if (optind < argc)
1085         {
1086           symarg = argv[optind];
1087           execarg = argv[optind];
1088           optind++;
1089         }
1090
1091       /* If the user hasn't already specified a PID or the name of a
1092          core file, then a second optional argument is allowed.  If
1093          present, this argument should be interpreted as either a
1094          PID or a core file, whichever works.  */
1095       if (pidarg == NULL && corearg == NULL && optind < argc)
1096         {
1097           pid_or_core_arg = argv[optind];
1098           optind++;
1099         }
1100
1101       /* Any argument left on the command line is unexpected and
1102          will be ignored.  Inform the user.  */
1103       if (optind < argc)
1104         gdb_printf (gdb_stderr,
1105                     _("Excess command line "
1106                       "arguments ignored. (%s%s)\n"),
1107                     argv[optind],
1108                     (optind == argc - 1) ? "" : " ...");
1109     }
1110
1111   /* Lookup gdbinit files.  Note that the gdbinit file name may be
1112      overridden during file initialization, so get_init_files should be
1113      called after gdb_init.  */
1114   std::vector<std::string> system_gdbinit;
1115   std::string home_gdbinit;
1116   std::string local_gdbinit;
1117   get_init_files (&system_gdbinit, &home_gdbinit, &local_gdbinit);
1118
1119   /* Do these (and anything which might call wrap_here or *_filtered)
1120      after initialize_all_files() but before the interpreter has been
1121      installed.  Otherwize the help/version messages will be eaten by
1122      the interpreter's output handler.  */
1123
1124   if (print_version)
1125     {
1126       print_gdb_version (gdb_stdout, false);
1127       gdb_printf ("\n");
1128       exit (0);
1129     }
1130
1131   if (print_help)
1132     {
1133       print_gdb_help (gdb_stdout);
1134       exit (0);
1135     }
1136
1137   if (print_configuration)
1138     {
1139       print_gdb_configuration (gdb_stdout);
1140       gdb_printf ("\n");
1141       exit (0);
1142     }
1143
1144   /* FIXME: cagney/2003-02-03: The big hack (part 1 of 2) that lets
1145      GDB retain the old MI1 interpreter startup behavior.  Output the
1146      copyright message before the interpreter is installed.  That way
1147      it isn't encapsulated in MI output.  */
1148   if (!quiet && strcmp (interpreter_p, INTERP_MI1) == 0)
1149     {
1150       /* Print all the junk at the top, with trailing "..." if we are
1151          about to read a symbol file (possibly slowly).  */
1152       print_gdb_version (gdb_stdout, true);
1153       if (symarg)
1154         gdb_printf ("..");
1155       gdb_printf ("\n");
1156       gdb_flush (gdb_stdout);   /* Force to screen during slow
1157                                    operations.  */
1158     }
1159
1160   /* Install the default UI.  All the interpreters should have had a
1161      look at things by now.  Initialize the default interpreter.  */
1162   set_top_level_interpreter (interpreter_p);
1163
1164   /* FIXME: cagney/2003-02-03: The big hack (part 2 of 2) that lets
1165      GDB retain the old MI1 interpreter startup behavior.  Output the
1166      copyright message after the interpreter is installed when it is
1167      any sane interpreter.  */
1168   if (!quiet && !current_interp_named_p (INTERP_MI1))
1169     {
1170       /* Print all the junk at the top, with trailing "..." if we are
1171          about to read a symbol file (possibly slowly).  */
1172       print_gdb_version (gdb_stdout, true);
1173       if (symarg)
1174         gdb_printf ("..");
1175       gdb_printf ("\n");
1176       gdb_flush (gdb_stdout);   /* Force to screen during slow
1177                                    operations.  */
1178     }
1179
1180   /* Set off error and warning messages with a blank line.  */
1181   tmp_warn_preprint.reset ();
1182   warning_pre_print = _("\nwarning: ");
1183
1184   /* Read and execute the system-wide gdbinit file, if it exists.
1185      This is done *before* all the command line arguments are
1186      processed; it sets global parameters, which are independent of
1187      what file you are debugging or what directory you are in.  */
1188   if (!system_gdbinit.empty () && !inhibit_gdbinit)
1189     {
1190       for (const std::string &file : system_gdbinit)
1191         ret = catch_command_errors (source_script, file.c_str (), 0);
1192     }
1193
1194   /* Read and execute $HOME/.gdbinit file, if it exists.  This is done
1195      *before* all the command line arguments are processed; it sets
1196      global parameters, which are independent of what file you are
1197      debugging or what directory you are in.  */
1198
1199   if (!home_gdbinit.empty () && !inhibit_gdbinit && !inhibit_home_gdbinit)
1200     ret = catch_command_errors (source_script, home_gdbinit.c_str (), 0);
1201
1202   /* Process '-ix' and '-iex' options early.  */
1203   execute_cmdargs (&cmdarg_vec, CMDARG_INIT_FILE, CMDARG_INIT_COMMAND, &ret);
1204
1205   /* Now perform all the actions indicated by the arguments.  */
1206   if (cdarg != NULL)
1207     {
1208       ret = catch_command_errors (cd_command, cdarg, 0);
1209     }
1210
1211   for (i = 0; i < dirarg.size (); i++)
1212     ret = catch_command_errors (directory_switch, dirarg[i], 0);
1213
1214   /* Skip auto-loading section-specified scripts until we've sourced
1215      local_gdbinit (which is often used to augment the source search
1216      path).  */
1217   save_auto_load = global_auto_load;
1218   global_auto_load = 0;
1219
1220   if (execarg != NULL
1221       && symarg != NULL
1222       && strcmp (execarg, symarg) == 0)
1223     {
1224       /* The exec file and the symbol-file are the same.  If we can't
1225          open it, better only print one error message.
1226          catch_command_errors returns non-zero on success!  */
1227       ret = catch_command_errors (exec_file_attach, execarg,
1228                                   !batch_flag);
1229       if (ret != 0)
1230         ret = catch_command_errors (symbol_file_add_main_adapter,
1231                                     symarg, !batch_flag);
1232     }
1233   else
1234     {
1235       if (execarg != NULL)
1236         ret = catch_command_errors (exec_file_attach, execarg,
1237                                     !batch_flag);
1238       if (symarg != NULL)
1239         ret = catch_command_errors (symbol_file_add_main_adapter,
1240                                     symarg, !batch_flag);
1241     }
1242
1243   if (corearg && pidarg)
1244     error (_("Can't attach to process and specify "
1245              "a core file at the same time."));
1246
1247   if (corearg != NULL)
1248     {
1249       ret = catch_command_errors (core_file_command, corearg,
1250                                   !batch_flag);
1251     }
1252   else if (pidarg != NULL)
1253     {
1254       ret = catch_command_errors (attach_command, pidarg, !batch_flag);
1255     }
1256   else if (pid_or_core_arg)
1257     {
1258       /* The user specified 'gdb program pid' or gdb program core'.
1259          If pid_or_core_arg's first character is a digit, try attach
1260          first and then corefile.  Otherwise try just corefile.  */
1261
1262       if (isdigit (pid_or_core_arg[0]))
1263         {
1264           ret = catch_command_errors (attach_command, pid_or_core_arg,
1265                                       !batch_flag);
1266           if (ret == 0)
1267             ret = catch_command_errors (core_file_command,
1268                                         pid_or_core_arg,
1269                                         !batch_flag);
1270         }
1271       else
1272         {
1273           /* Can't be a pid, better be a corefile.  */
1274           ret = catch_command_errors (core_file_command,
1275                                       pid_or_core_arg,
1276                                       !batch_flag);
1277         }
1278     }
1279
1280   if (ttyarg != NULL)
1281     current_inferior ()->set_tty (ttyarg);
1282
1283   /* Error messages should no longer be distinguished with extra output.  */
1284   warning_pre_print = _("warning: ");
1285
1286   /* Read the .gdbinit file in the current directory, *if* it isn't
1287      the same as the $HOME/.gdbinit file (it should exist, also).  */
1288   if (!local_gdbinit.empty ())
1289     {
1290       auto_load_local_gdbinit_pathname
1291         = gdb_realpath (local_gdbinit.c_str ()).release ();
1292
1293       if (!inhibit_gdbinit && auto_load_local_gdbinit)
1294         {
1295           auto_load_debug_printf ("Loading .gdbinit file \"%s\".",
1296                                   local_gdbinit.c_str ());
1297
1298           if (file_is_auto_load_safe (local_gdbinit.c_str ()))
1299             {
1300               auto_load_local_gdbinit_loaded = 1;
1301
1302               ret = catch_command_errors (source_script, local_gdbinit.c_str (), 0);
1303             }
1304         }
1305     }
1306
1307   /* Now that all .gdbinit's have been read and all -d options have been
1308      processed, we can read any scripts mentioned in SYMARG.
1309      We wait until now because it is common to add to the source search
1310      path in local_gdbinit.  */
1311   global_auto_load = save_auto_load;
1312   for (objfile *objfile : current_program_space->objfiles ())
1313     load_auto_scripts_for_objfile (objfile);
1314
1315   /* Process '-x' and '-ex' options.  */
1316   execute_cmdargs (&cmdarg_vec, CMDARG_FILE, CMDARG_COMMAND, &ret);
1317
1318   /* Read in the old history after all the command files have been
1319      read.  */
1320   init_history ();
1321
1322   if (batch_flag)
1323     {
1324       int error_status = EXIT_FAILURE;
1325       int *exit_arg = ret == 0 ? &error_status : NULL;
1326
1327       /* We have hit the end of the batch file.  */
1328       quit_force (exit_arg, 0);
1329     }
1330 }
1331
1332 static void
1333 captured_main (void *data)
1334 {
1335   struct captured_main_args *context = (struct captured_main_args *) data;
1336
1337   captured_main_1 (context);
1338
1339   /* NOTE: cagney/1999-11-07: There is probably no reason for not
1340      moving this loop and the code found in captured_command_loop()
1341      into the command_loop() proper.  The main thing holding back that
1342      change - SET_TOP_LEVEL() - has been eliminated.  */
1343   while (1)
1344     {
1345       try
1346         {
1347           captured_command_loop ();
1348         }
1349       catch (const gdb_exception &ex)
1350         {
1351           exception_print (gdb_stderr, ex);
1352         }
1353     }
1354   /* No exit -- exit is through quit_command.  */
1355 }
1356
1357 int
1358 gdb_main (struct captured_main_args *args)
1359 {
1360   try
1361     {
1362       captured_main (args);
1363     }
1364   catch (const gdb_exception &ex)
1365     {
1366       exception_print (gdb_stderr, ex);
1367     }
1368
1369   /* The only way to end up here is by an error (normal exit is
1370      handled by quit_force()), hence always return an error status.  */
1371   return 1;
1372 }
1373
1374
1375 /* Don't use *_filtered for printing help.  We don't want to prompt
1376    for continue no matter how small the screen or how much we're going
1377    to print.  */
1378
1379 static void
1380 print_gdb_help (struct ui_file *stream)
1381 {
1382   std::vector<std::string> system_gdbinit;
1383   std::string home_gdbinit;
1384   std::string local_gdbinit;
1385   std::string home_gdbearlyinit;
1386
1387   get_init_files (&system_gdbinit, &home_gdbinit, &local_gdbinit);
1388   get_earlyinit_files (&home_gdbearlyinit);
1389
1390   /* Note: The options in the list below are only approximately sorted
1391      in the alphabetical order, so as to group closely related options
1392      together.  */
1393   gdb_puts (_("\
1394 This is the GNU debugger.  Usage:\n\n\
1395     gdb [options] [executable-file [core-file or process-id]]\n\
1396     gdb [options] --args executable-file [inferior-arguments ...]\n\n\
1397 "), stream);
1398   gdb_puts (_("\
1399 Selection of debuggee and its files:\n\n\
1400   --args             Arguments after executable-file are passed to inferior.\n\
1401   --core=COREFILE    Analyze the core dump COREFILE.\n\
1402   --exec=EXECFILE    Use EXECFILE as the executable.\n\
1403   --pid=PID          Attach to running process PID.\n\
1404   --directory=DIR    Search for source files in DIR.\n\
1405   --se=FILE          Use FILE as symbol file and executable file.\n\
1406   --symbols=SYMFILE  Read symbols from SYMFILE.\n\
1407   --readnow          Fully read symbol files on first access.\n\
1408   --readnever        Do not read symbol files.\n\
1409   --write            Set writing into executable and core files.\n\n\
1410 "), stream);
1411   gdb_puts (_("\
1412 Initial commands and command files:\n\n\
1413   --command=FILE, -x Execute GDB commands from FILE.\n\
1414   --init-command=FILE, -ix\n\
1415                      Like -x but execute commands before loading inferior.\n\
1416   --eval-command=COMMAND, -ex\n\
1417                      Execute a single GDB command.\n\
1418                      May be used multiple times and in conjunction\n\
1419                      with --command.\n\
1420   --init-eval-command=COMMAND, -iex\n\
1421                      Like -ex but before loading inferior.\n\
1422   --nh               Do not read ~/.gdbinit.\n\
1423   --nx               Do not read any .gdbinit files in any directory.\n\n\
1424 "), stream);
1425   gdb_puts (_("\
1426 Output and user interface control:\n\n\
1427   --fullname         Output information used by emacs-GDB interface.\n\
1428   --interpreter=INTERP\n\
1429                      Select a specific interpreter / user interface.\n\
1430   --tty=TTY          Use TTY for input/output by the program being debugged.\n\
1431   -w                 Use the GUI interface.\n\
1432   --nw               Do not use the GUI interface.\n\
1433 "), stream);
1434 #if defined(TUI)
1435   gdb_puts (_("\
1436   --tui              Use a terminal user interface.\n\
1437 "), stream);
1438 #endif
1439   gdb_puts (_("\
1440   --dbx              DBX compatibility mode.\n\
1441   -q, --quiet, --silent\n\
1442                      Do not print version number on startup.\n\n\
1443 "), stream);
1444   gdb_puts (_("\
1445 Operating modes:\n\n\
1446   --batch            Exit after processing options.\n\
1447   --batch-silent     Like --batch, but suppress all gdb stdout output.\n\
1448   --return-child-result\n\
1449                      GDB exit code will be the child's exit code.\n\
1450   --configuration    Print details about GDB configuration and then exit.\n\
1451   --help             Print this message and then exit.\n\
1452   --version          Print version information and then exit.\n\n\
1453 Remote debugging options:\n\n\
1454   -b BAUDRATE        Set serial port baud rate used for remote debugging.\n\
1455   -l TIMEOUT         Set timeout in seconds for remote debugging.\n\n\
1456 Other options:\n\n\
1457   --cd=DIR           Change current directory to DIR.\n\
1458   --data-directory=DIR, -D\n\
1459                      Set GDB's data-directory to DIR.\n\
1460 "), stream);
1461   gdb_puts (_("\n\
1462 At startup, GDB reads the following early init files and executes their\n\
1463 commands:\n\
1464 "), stream);
1465   if (!home_gdbearlyinit.empty ())
1466     gdb_printf (stream, _("\
1467    * user-specific early init file: %s\n\
1468 "), home_gdbearlyinit.c_str ());
1469   if (home_gdbearlyinit.empty ())
1470     gdb_printf (stream, _("\
1471    None found.\n"));
1472   gdb_puts (_("\n\
1473 At startup, GDB reads the following init files and executes their commands:\n\
1474 "), stream);
1475   if (!system_gdbinit.empty ())
1476     {
1477       std::string output;
1478       for (size_t idx = 0; idx < system_gdbinit.size (); ++idx)
1479         {
1480           output += system_gdbinit[idx];
1481           if (idx < system_gdbinit.size () - 1)
1482             output += ", ";
1483         }
1484       gdb_printf (stream, _("\
1485    * system-wide init files: %s\n\
1486 "), output.c_str ());
1487     }
1488   if (!home_gdbinit.empty ())
1489     gdb_printf (stream, _("\
1490    * user-specific init file: %s\n\
1491 "), home_gdbinit.c_str ());
1492   if (!local_gdbinit.empty ())
1493     gdb_printf (stream, _("\
1494    * local init file (see also 'set auto-load local-gdbinit'): ./%s\n\
1495 "), local_gdbinit.c_str ());
1496   if (system_gdbinit.empty () && home_gdbinit.empty ()
1497       && local_gdbinit.empty ())
1498     gdb_printf (stream, _("\
1499    None found.\n"));
1500   gdb_puts (_("\n\
1501 For more information, type \"help\" from within GDB, or consult the\n\
1502 GDB manual (available as on-line info or a printed manual).\n\
1503 "), stream);
1504   if (REPORT_BUGS_TO[0] && stream == gdb_stdout)
1505     gdb_printf (stream, _("\n\
1506 Report bugs to %s.\n\
1507 "), REPORT_BUGS_TO);
1508   if (stream == gdb_stdout)
1509     gdb_printf (stream, _("\n\
1510 You can ask GDB-related questions on the GDB users mailing list\n\
1511 ([email protected]) or on GDB's IRC channel (#gdb on Freenode).\n"));
1512 }
This page took 0.101696 seconds and 2 git commands to generate.