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