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